From 4fba9e543353c104e8fb98c4187162097ad0087b Mon Sep 17 00:00:00 2001 From: Mesharo <Hecko97@seznam.cz> Date: Wed, 23 Oct 2024 01:23:19 +0200 Subject: [PATCH] parser works --- antlr4_hello/.antlr/Hello.interp | 18 - antlr4_hello/.antlr/Hello.tokens | 4 - antlr4_hello/.antlr/HelloLexer.interp | 26 - antlr4_hello/.antlr/HelloLexer.java | 133 - antlr4_hello/.antlr/HelloLexer.tokens | 4 - antlr4_hello/.antlr/HelloParser.java | 136 - antlr4_hello/Hello.g4 | 4 - antlr4_hello/Hello.interp | 18 - antlr4_hello/Hello.tokens | 4 - antlr4_hello/HelloLexer.interp | 26 - antlr4_hello/HelloLexer.py | 55 - antlr4_hello/HelloLexer.tokens | 4 - antlr4_hello/HelloListener.py | 21 - antlr4_hello/HelloParser.py | 94 - .../.antlr/PostgreSQLLexer.interp | 2074 - antlr4_postgresql/.antlr/PostgreSQLLexer.java | 5245 - .../.antlr/PostgreSQLLexer.tokens | 1314 - antlr4_postgresql/PostgreSQLLexer.g4 | 1683 - antlr4_postgresql/PostgreSQLLexer.interp | 2074 - antlr4_postgresql/PostgreSQLLexer.py | 3840 - antlr4_postgresql/PostgreSQLLexer.tokens | 1314 - antlr4_postgresql/PostgreSQLParser.g4 | 5584 -- antlr4_postgresql/PostgreSQLParser.interp | 2181 - antlr4_postgresql/PostgreSQLParser.py | 81199 ---------------- antlr4_postgresql/PostgreSQLParser.tokens | 1314 - antlr4_postgresql/PostgreSQLParserListener.py | 7358 -- antlr4_postgresql/PostgreSQLParserVisitor.py | 4095 - handling_dataset/main.py | 30 +- main.py | 83 +- tests.py | 25 + 30 files changed, 93 insertions(+), 119867 deletions(-) delete mode 100644 antlr4_hello/.antlr/Hello.interp delete mode 100644 antlr4_hello/.antlr/Hello.tokens delete mode 100644 antlr4_hello/.antlr/HelloLexer.interp delete mode 100644 antlr4_hello/.antlr/HelloLexer.java delete mode 100644 antlr4_hello/.antlr/HelloLexer.tokens delete mode 100644 antlr4_hello/.antlr/HelloParser.java delete mode 100644 antlr4_hello/Hello.g4 delete mode 100644 antlr4_hello/Hello.interp delete mode 100644 antlr4_hello/Hello.tokens delete mode 100644 antlr4_hello/HelloLexer.interp delete mode 100644 antlr4_hello/HelloLexer.py delete mode 100644 antlr4_hello/HelloLexer.tokens delete mode 100644 antlr4_hello/HelloListener.py delete mode 100644 antlr4_hello/HelloParser.py delete mode 100644 antlr4_postgresql/.antlr/PostgreSQLLexer.interp delete mode 100644 antlr4_postgresql/.antlr/PostgreSQLLexer.java delete mode 100644 antlr4_postgresql/.antlr/PostgreSQLLexer.tokens delete mode 100644 antlr4_postgresql/PostgreSQLLexer.g4 delete mode 100644 antlr4_postgresql/PostgreSQLLexer.interp delete mode 100644 antlr4_postgresql/PostgreSQLLexer.py delete mode 100644 antlr4_postgresql/PostgreSQLLexer.tokens delete mode 100644 antlr4_postgresql/PostgreSQLParser.g4 delete mode 100644 antlr4_postgresql/PostgreSQLParser.interp delete mode 100644 antlr4_postgresql/PostgreSQLParser.py delete mode 100644 antlr4_postgresql/PostgreSQLParser.tokens delete mode 100644 antlr4_postgresql/PostgreSQLParserListener.py delete mode 100644 antlr4_postgresql/PostgreSQLParserVisitor.py diff --git a/antlr4_hello/.antlr/Hello.interp b/antlr4_hello/.antlr/Hello.interp deleted file mode 100644 index 24fbd89..0000000 --- a/antlr4_hello/.antlr/Hello.interp +++ /dev/null @@ -1,18 +0,0 @@ -token literal names: -null -'hello' -null -null - -token symbolic names: -null -null -ID -WS - -rule names: -r - - -atn: -[4, 1, 3, 6, 2, 0, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 0, 2, 1, 0, 0, 0, 2, 3, 5, 1, 0, 0, 3, 4, 5, 2, 0, 0, 4, 1, 1, 0, 0, 0, 0] \ No newline at end of file diff --git a/antlr4_hello/.antlr/Hello.tokens b/antlr4_hello/.antlr/Hello.tokens deleted file mode 100644 index ddcb3bc..0000000 --- a/antlr4_hello/.antlr/Hello.tokens +++ /dev/null @@ -1,4 +0,0 @@ -T__0=1 -ID=2 -WS=3 -'hello'=1 diff --git a/antlr4_hello/.antlr/HelloLexer.interp b/antlr4_hello/.antlr/HelloLexer.interp deleted file mode 100644 index c0661dd..0000000 --- a/antlr4_hello/.antlr/HelloLexer.interp +++ /dev/null @@ -1,26 +0,0 @@ -token literal names: -null -'hello' -null -null - -token symbolic names: -null -null -ID -WS - -rule names: -T__0 -ID -WS - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 3, 25, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 15, 8, 1, 11, 1, 12, 1, 16, 1, 2, 4, 2, 20, 8, 2, 11, 2, 12, 2, 21, 1, 2, 1, 2, 0, 0, 3, 1, 1, 3, 2, 5, 3, 1, 0, 2, 1, 0, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 26, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 1, 7, 1, 0, 0, 0, 3, 14, 1, 0, 0, 0, 5, 19, 1, 0, 0, 0, 7, 8, 5, 104, 0, 0, 8, 9, 5, 101, 0, 0, 9, 10, 5, 108, 0, 0, 10, 11, 5, 108, 0, 0, 11, 12, 5, 111, 0, 0, 12, 2, 1, 0, 0, 0, 13, 15, 7, 0, 0, 0, 14, 13, 1, 0, 0, 0, 15, 16, 1, 0, 0, 0, 16, 14, 1, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 4, 1, 0, 0, 0, 18, 20, 7, 1, 0, 0, 19, 18, 1, 0, 0, 0, 20, 21, 1, 0, 0, 0, 21, 19, 1, 0, 0, 0, 21, 22, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 24, 6, 2, 0, 0, 24, 6, 1, 0, 0, 0, 3, 0, 16, 21, 1, 6, 0, 0] \ No newline at end of file diff --git a/antlr4_hello/.antlr/HelloLexer.java b/antlr4_hello/.antlr/HelloLexer.java deleted file mode 100644 index cc9ba5c..0000000 --- a/antlr4_hello/.antlr/HelloLexer.java +++ /dev/null @@ -1,133 +0,0 @@ -// Generated from c:/Users/Hecko/Desktop/SQL-schemas/antlr4_hello/Hello.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class HelloLexer extends Lexer { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - T__0=1, ID=2, WS=3; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE" - }; - - private static String[] makeRuleNames() { - return new String[] { - "T__0", "ID", "WS" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "'hello'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, null, "ID", "WS" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = "<INVALID>"; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - public HelloLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "Hello.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - public static final String _serializedATN = - "\u0004\u0000\u0003\u0019\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ - "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0001\u0000\u0001\u0000\u0001"+ - "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0004\u0001\u000f"+ - "\b\u0001\u000b\u0001\f\u0001\u0010\u0001\u0002\u0004\u0002\u0014\b\u0002"+ - "\u000b\u0002\f\u0002\u0015\u0001\u0002\u0001\u0002\u0000\u0000\u0003\u0001"+ - "\u0001\u0003\u0002\u0005\u0003\u0001\u0000\u0002\u0001\u0000az\u0003\u0000"+ - "\t\n\r\r \u001a\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001"+ - "\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0001\u0007\u0001"+ - "\u0000\u0000\u0000\u0003\u000e\u0001\u0000\u0000\u0000\u0005\u0013\u0001"+ - "\u0000\u0000\u0000\u0007\b\u0005h\u0000\u0000\b\t\u0005e\u0000\u0000\t"+ - "\n\u0005l\u0000\u0000\n\u000b\u0005l\u0000\u0000\u000b\f\u0005o\u0000"+ - "\u0000\f\u0002\u0001\u0000\u0000\u0000\r\u000f\u0007\u0000\u0000\u0000"+ - "\u000e\r\u0001\u0000\u0000\u0000\u000f\u0010\u0001\u0000\u0000\u0000\u0010"+ - "\u000e\u0001\u0000\u0000\u0000\u0010\u0011\u0001\u0000\u0000\u0000\u0011"+ - "\u0004\u0001\u0000\u0000\u0000\u0012\u0014\u0007\u0001\u0000\u0000\u0013"+ - "\u0012\u0001\u0000\u0000\u0000\u0014\u0015\u0001\u0000\u0000\u0000\u0015"+ - "\u0013\u0001\u0000\u0000\u0000\u0015\u0016\u0001\u0000\u0000\u0000\u0016"+ - "\u0017\u0001\u0000\u0000\u0000\u0017\u0018\u0006\u0002\u0000\u0000\u0018"+ - "\u0006\u0001\u0000\u0000\u0000\u0003\u0000\u0010\u0015\u0001\u0006\u0000"+ - "\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/antlr4_hello/.antlr/HelloLexer.tokens b/antlr4_hello/.antlr/HelloLexer.tokens deleted file mode 100644 index ddcb3bc..0000000 --- a/antlr4_hello/.antlr/HelloLexer.tokens +++ /dev/null @@ -1,4 +0,0 @@ -T__0=1 -ID=2 -WS=3 -'hello'=1 diff --git a/antlr4_hello/.antlr/HelloParser.java b/antlr4_hello/.antlr/HelloParser.java deleted file mode 100644 index 8690cfc..0000000 --- a/antlr4_hello/.antlr/HelloParser.java +++ /dev/null @@ -1,136 +0,0 @@ -// Generated from c:/Users/Hecko/Desktop/SQL-schemas/antlr4_hello/Hello.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.*; -import org.antlr.v4.runtime.tree.*; -import java.util.List; -import java.util.Iterator; -import java.util.ArrayList; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public class HelloParser extends Parser { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - T__0=1, ID=2, WS=3; - public static final int - RULE_r = 0; - private static String[] makeRuleNames() { - return new String[] { - "r" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "'hello'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, null, "ID", "WS" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = "<INVALID>"; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - @Override - public String getGrammarFileName() { return "Hello.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - public HelloParser(TokenStream input) { - super(input); - _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @SuppressWarnings("CheckReturnValue") - public static class RContext extends ParserRuleContext { - public TerminalNode ID() { return getToken(HelloParser.ID, 0); } - public RContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_r; } - } - - public final RContext r() throws RecognitionException { - RContext _localctx = new RContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_r); - try { - enterOuterAlt(_localctx, 1); - { - setState(2); - match(T__0); - setState(3); - match(ID); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public static final String _serializedATN = - "\u0004\u0001\u0003\u0006\u0002\u0000\u0007\u0000\u0001\u0000\u0001\u0000"+ - "\u0001\u0000\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0004\u0000"+ - "\u0002\u0001\u0000\u0000\u0000\u0002\u0003\u0005\u0001\u0000\u0000\u0003"+ - "\u0004\u0005\u0002\u0000\u0000\u0004\u0001\u0001\u0000\u0000\u0000\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/antlr4_hello/Hello.g4 b/antlr4_hello/Hello.g4 deleted file mode 100644 index 73a73e4..0000000 --- a/antlr4_hello/Hello.g4 +++ /dev/null @@ -1,4 +0,0 @@ -grammar Hello; -r : 'hello' ID ; -ID : [a-z]+ ; -WS : [ \t\r\n]+ -> skip; \ No newline at end of file diff --git a/antlr4_hello/Hello.interp b/antlr4_hello/Hello.interp deleted file mode 100644 index 24fbd89..0000000 --- a/antlr4_hello/Hello.interp +++ /dev/null @@ -1,18 +0,0 @@ -token literal names: -null -'hello' -null -null - -token symbolic names: -null -null -ID -WS - -rule names: -r - - -atn: -[4, 1, 3, 6, 2, 0, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 0, 2, 1, 0, 0, 0, 2, 3, 5, 1, 0, 0, 3, 4, 5, 2, 0, 0, 4, 1, 1, 0, 0, 0, 0] \ No newline at end of file diff --git a/antlr4_hello/Hello.tokens b/antlr4_hello/Hello.tokens deleted file mode 100644 index ddcb3bc..0000000 --- a/antlr4_hello/Hello.tokens +++ /dev/null @@ -1,4 +0,0 @@ -T__0=1 -ID=2 -WS=3 -'hello'=1 diff --git a/antlr4_hello/HelloLexer.interp b/antlr4_hello/HelloLexer.interp deleted file mode 100644 index c0661dd..0000000 --- a/antlr4_hello/HelloLexer.interp +++ /dev/null @@ -1,26 +0,0 @@ -token literal names: -null -'hello' -null -null - -token symbolic names: -null -null -ID -WS - -rule names: -T__0 -ID -WS - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 3, 25, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 4, 1, 15, 8, 1, 11, 1, 12, 1, 16, 1, 2, 4, 2, 20, 8, 2, 11, 2, 12, 2, 21, 1, 2, 1, 2, 0, 0, 3, 1, 1, 3, 2, 5, 3, 1, 0, 2, 1, 0, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 26, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 1, 7, 1, 0, 0, 0, 3, 14, 1, 0, 0, 0, 5, 19, 1, 0, 0, 0, 7, 8, 5, 104, 0, 0, 8, 9, 5, 101, 0, 0, 9, 10, 5, 108, 0, 0, 10, 11, 5, 108, 0, 0, 11, 12, 5, 111, 0, 0, 12, 2, 1, 0, 0, 0, 13, 15, 7, 0, 0, 0, 14, 13, 1, 0, 0, 0, 15, 16, 1, 0, 0, 0, 16, 14, 1, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 4, 1, 0, 0, 0, 18, 20, 7, 1, 0, 0, 19, 18, 1, 0, 0, 0, 20, 21, 1, 0, 0, 0, 21, 19, 1, 0, 0, 0, 21, 22, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 24, 6, 2, 0, 0, 24, 6, 1, 0, 0, 0, 3, 0, 16, 21, 1, 6, 0, 0] \ No newline at end of file diff --git a/antlr4_hello/HelloLexer.py b/antlr4_hello/HelloLexer.py deleted file mode 100644 index 1775b82..0000000 --- a/antlr4_hello/HelloLexer.py +++ /dev/null @@ -1,55 +0,0 @@ -# Generated from Hello.g4 by ANTLR 4.13.2 -from antlr4 import * -from io import StringIO -import sys -if sys.version_info[1] > 5: - from typing import TextIO -else: - from typing.io import TextIO - - -def serializedATN(): - return [ - 4,0,3,25,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,1,0,1,0,1,0,1,0,1,0,1,0,1, - 1,4,1,15,8,1,11,1,12,1,16,1,2,4,2,20,8,2,11,2,12,2,21,1,2,1,2,0, - 0,3,1,1,3,2,5,3,1,0,2,1,0,97,122,3,0,9,10,13,13,32,32,26,0,1,1,0, - 0,0,0,3,1,0,0,0,0,5,1,0,0,0,1,7,1,0,0,0,3,14,1,0,0,0,5,19,1,0,0, - 0,7,8,5,104,0,0,8,9,5,101,0,0,9,10,5,108,0,0,10,11,5,108,0,0,11, - 12,5,111,0,0,12,2,1,0,0,0,13,15,7,0,0,0,14,13,1,0,0,0,15,16,1,0, - 0,0,16,14,1,0,0,0,16,17,1,0,0,0,17,4,1,0,0,0,18,20,7,1,0,0,19,18, - 1,0,0,0,20,21,1,0,0,0,21,19,1,0,0,0,21,22,1,0,0,0,22,23,1,0,0,0, - 23,24,6,2,0,0,24,6,1,0,0,0,3,0,16,21,1,6,0,0 - ] - -class HelloLexer(Lexer): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - T__0 = 1 - ID = 2 - WS = 3 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE" ] - - literalNames = [ "<INVALID>", - "'hello'" ] - - symbolicNames = [ "<INVALID>", - "ID", "WS" ] - - ruleNames = [ "T__0", "ID", "WS" ] - - grammarFileName = "Hello.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.13.2") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - diff --git a/antlr4_hello/HelloLexer.tokens b/antlr4_hello/HelloLexer.tokens deleted file mode 100644 index ddcb3bc..0000000 --- a/antlr4_hello/HelloLexer.tokens +++ /dev/null @@ -1,4 +0,0 @@ -T__0=1 -ID=2 -WS=3 -'hello'=1 diff --git a/antlr4_hello/HelloListener.py b/antlr4_hello/HelloListener.py deleted file mode 100644 index ffcce3f..0000000 --- a/antlr4_hello/HelloListener.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated from Hello.g4 by ANTLR 4.13.2 -from antlr4 import * -if "." in __name__: - from .HelloParser import HelloParser -else: - from HelloParser import HelloParser - -# This class defines a complete listener for a parse tree produced by HelloParser. -class HelloListener(ParseTreeListener): - - # Enter a parse tree produced by HelloParser#r. - def enterR(self, ctx:HelloParser.RContext): - pass - - # Exit a parse tree produced by HelloParser#r. - def exitR(self, ctx:HelloParser.RContext): - pass - - - -del HelloParser \ No newline at end of file diff --git a/antlr4_hello/HelloParser.py b/antlr4_hello/HelloParser.py deleted file mode 100644 index 63628a3..0000000 --- a/antlr4_hello/HelloParser.py +++ /dev/null @@ -1,94 +0,0 @@ -# Generated from Hello.g4 by ANTLR 4.13.2 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -import sys -if sys.version_info[1] > 5: - from typing import TextIO -else: - from typing.io import TextIO - -def serializedATN(): - return [ - 4,1,3,6,2,0,7,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,4,0,2,1,0,0,0,2,3,5, - 1,0,0,3,4,5,2,0,0,4,1,1,0,0,0,0 - ] - -class HelloParser ( Parser ): - - grammarFileName = "Hello.g4" - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - sharedContextCache = PredictionContextCache() - - literalNames = [ "<INVALID>", "'hello'" ] - - symbolicNames = [ "<INVALID>", "<INVALID>", "ID", "WS" ] - - RULE_r = 0 - - ruleNames = [ "r" ] - - EOF = Token.EOF - T__0=1 - ID=2 - WS=3 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.13.2") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - - class RContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ID(self): - return self.getToken(HelloParser.ID, 0) - - def getRuleIndex(self): - return HelloParser.RULE_r - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterR" ): - listener.enterR(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitR" ): - listener.exitR(self) - - - - - def r(self): - - localctx = HelloParser.RContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_r) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2 - self.match(HelloParser.T__0) - self.state = 3 - self.match(HelloParser.ID) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - - diff --git a/antlr4_postgresql/.antlr/PostgreSQLLexer.interp b/antlr4_postgresql/.antlr/PostgreSQLLexer.interp deleted file mode 100644 index 328130e..0000000 --- a/antlr4_postgresql/.antlr/PostgreSQLLexer.interp +++ /dev/null @@ -1,2074 +0,0 @@ -token literal names: -null -'$' -'(' -')' -'[' -']' -',' -';' -':' -'*' -'=' -'.' -'+' -'-' -'/' -'^' -'<' -'>' -'<<' -'>>' -':=' -'<=' -'=>' -'>=' -'..' -'<>' -'::' -'%' -null -null -'ALL' -'ANALYSE' -'ANALYZE' -'AND' -'ANY' -'ARRAY' -'AS' -'ASC' -'ASYMMETRIC' -'BOTH' -'CASE' -'CAST' -'CHECK' -'COLLATE' -'COLUMN' -'CONSTRAINT' -'CREATE' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_ROLE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DEFAULT' -'DEFERRABLE' -'DESC' -'DISTINCT' -'DO' -'ELSE' -'EXCEPT' -'FALSE' -'FETCH' -'FOR' -'FOREIGN' -'FROM' -'GRANT' -'GROUP' -'HAVING' -'IN' -'INITIALLY' -'INTERSECT' -'INTO' -'LATERAL' -'LEADING' -'LIMIT' -'LOCALTIME' -'LOCALTIMESTAMP' -'NOT' -'NULL' -'OFFSET' -'ON' -'ONLY' -'OR' -'ORDER' -'PLACING' -'PRIMARY' -'REFERENCES' -'RETURNING' -'SELECT' -'SESSION_USER' -'SOME' -'SYMMETRIC' -'TABLE' -'THEN' -'TO' -'TRAILING' -'TRUE' -'UNION' -'UNIQUE' -'USER' -'USING' -'VARIADIC' -'WHEN' -'WHERE' -'WINDOW' -'WITH' -'AUTHORIZATION' -'BINARY' -'COLLATION' -'CONCURRENTLY' -'CROSS' -'CURRENT_SCHEMA' -'FREEZE' -'FULL' -'ILIKE' -'INNER' -'IS' -'ISNULL' -'JOIN' -'LEFT' -'LIKE' -'NATURAL' -'NOTNULL' -'OUTER' -'OVER' -'OVERLAPS' -'RIGHT' -'SIMILAR' -'VERBOSE' -'ABORT' -'ABSOLUTE' -'ACCESS' -'ACTION' -'ADD' -'ADMIN' -'AFTER' -'AGGREGATE' -'ALSO' -'ALTER' -'ALWAYS' -'ASSERTION' -'ASSIGNMENT' -'AT' -'ATTRIBUTE' -'BACKWARD' -'BEFORE' -'BEGIN' -'BY' -'CACHE' -'CALLED' -'CASCADE' -'CASCADED' -'CATALOG' -'CHAIN' -'CHARACTERISTICS' -'CHECKPOINT' -'CLASS' -'CLOSE' -'CLUSTER' -'COMMENT' -'COMMENTS' -'COMMIT' -'COMMITTED' -'CONFIGURATION' -'CONNECTION' -'CONSTRAINTS' -'CONTENT' -'CONTINUE' -'CONVERSION' -'COPY' -'COST' -'CSV' -'CURSOR' -'CYCLE' -'DATA' -'DATABASE' -'DAY' -'DEALLOCATE' -'DECLARE' -'DEFAULTS' -'DEFERRED' -'DEFINER' -'DELETE' -'DELIMITER' -'DELIMITERS' -'DICTIONARY' -'DISABLE' -'DISCARD' -'DOCUMENT' -'DOMAIN' -'DOUBLE' -'DROP' -'EACH' -'ENABLE' -'ENCODING' -'ENCRYPTED' -'ENUM' -'ESCAPE' -'EVENT' -'EXCLUDE' -'EXCLUDING' -'EXCLUSIVE' -'EXECUTE' -'EXPLAIN' -'EXTENSION' -'EXTERNAL' -'FAMILY' -'FIRST' -'FOLLOWING' -'FORCE' -'FORWARD' -'FUNCTION' -'FUNCTIONS' -'GLOBAL' -'GRANTED' -'HANDLER' -'HEADER' -'HOLD' -'HOUR' -'IDENTITY' -'IF' -'IMMEDIATE' -'IMMUTABLE' -'IMPLICIT' -'INCLUDING' -'INCREMENT' -'INDEX' -'INDEXES' -'INHERIT' -'INHERITS' -'INLINE' -'INSENSITIVE' -'INSERT' -'INSTEAD' -'INVOKER' -'ISOLATION' -'KEY' -'LABEL' -'LANGUAGE' -'LARGE' -'LAST' -'LEAKPROOF' -'LEVEL' -'LISTEN' -'LOAD' -'LOCAL' -'LOCATION' -'LOCK' -'MAPPING' -'MATCH' -'MATCHED' -'MATERIALIZED' -'MAXVALUE' -'MERGE' -'MINUTE' -'MINVALUE' -'MODE' -'MONTH' -'MOVE' -'NAME' -'NAMES' -'NEXT' -'NO' -'NOTHING' -'NOTIFY' -'NOWAIT' -'NULLS' -'OBJECT' -'OF' -'OFF' -'OIDS' -'OPERATOR' -'OPTION' -'OPTIONS' -'OWNED' -'OWNER' -'PARSER' -'PARTIAL' -'PARTITION' -'PASSING' -'PASSWORD' -'PLANS' -'PRECEDING' -'PREPARE' -'PREPARED' -'PRESERVE' -'PRIOR' -'PRIVILEGES' -'PROCEDURAL' -'PROCEDURE' -'PROGRAM' -'QUOTE' -'RANGE' -'READ' -'REASSIGN' -'RECHECK' -'RECURSIVE' -'REF' -'REFRESH' -'REINDEX' -'RELATIVE' -'RELEASE' -'RENAME' -'REPEATABLE' -'REPLACE' -'REPLICA' -'RESET' -'RESTART' -'RESTRICT' -'RETURNS' -'REVOKE' -'ROLE' -'ROLLBACK' -'ROWS' -'RULE' -'SAVEPOINT' -'SCHEMA' -'SCROLL' -'SEARCH' -'SECOND' -'SECURITY' -'SEQUENCE' -'SEQUENCES' -'SERIALIZABLE' -'SERVER' -'SESSION' -'SET' -'SHARE' -'SHOW' -'SIMPLE' -'SNAPSHOT' -'STABLE' -'STANDALONE' -'START' -'STATEMENT' -'STATISTICS' -'STDIN' -'STDOUT' -'STORAGE' -'STRICT' -'STRIP' -'SYSID' -'SYSTEM' -'TABLES' -'TABLESPACE' -'TEMP' -'TEMPLATE' -'TEMPORARY' -'TEXT' -'TRANSACTION' -'TRIGGER' -'TRUNCATE' -'TRUSTED' -'TYPE' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNENCRYPTED' -'UNKNOWN' -'UNLISTEN' -'UNLOGGED' -'UNTIL' -'UPDATE' -'VACUUM' -'VALID' -'VALIDATE' -'VALIDATOR' -'VARYING' -'VERSION' -'VIEW' -'VOLATILE' -'WHITESPACE' -'WITHOUT' -'WORK' -'WRAPPER' -'WRITE' -'XML' -'YEAR' -'YES' -'ZONE' -'BETWEEN' -'BIGINT' -'BIT' -'BOOLEAN' -'CHAR' -'CHARACTER' -'COALESCE' -'DEC' -'DECIMAL' -'EXISTS' -'EXTRACT' -'FLOAT' -'GREATEST' -'INOUT' -'INT' -'INTEGER' -'INTERVAL' -'LEAST' -'NATIONAL' -'NCHAR' -'NONE' -'NULLIF' -'NUMERIC' -'OVERLAY' -'POSITION' -'PRECISION' -'REAL' -'ROW' -'SETOF' -'SMALLINT' -'SUBSTRING' -'TIME' -'TIMESTAMP' -'TREAT' -'TRIM' -'VALUES' -'VARCHAR' -'XMLATTRIBUTES' -'XMLCOMMENT' -'XMLAGG' -'XML_IS_WELL_FORMED' -'XML_IS_WELL_FORMED_DOCUMENT' -'XML_IS_WELL_FORMED_CONTENT' -'XPATH' -'XPATH_EXISTS' -'XMLCONCAT' -'XMLELEMENT' -'XMLEXISTS' -'XMLFOREST' -'XMLPARSE' -'XMLPI' -'XMLROOT' -'XMLSERIALIZE' -'CALL' -'CURRENT' -'ATTACH' -'DETACH' -'EXPRESSION' -'GENERATED' -'LOGGED' -'STORED' -'INCLUDE' -'ROUTINE' -'TRANSFORM' -'IMPORT' -'POLICY' -'METHOD' -'REFERENCING' -'NEW' -'OLD' -'VALUE' -'SUBSCRIPTION' -'PUBLICATION' -'OUT' -'END' -'ROUTINES' -'SCHEMAS' -'PROCEDURES' -'INPUT' -'SUPPORT' -'PARALLEL' -'SQL' -'DEPENDS' -'OVERRIDING' -'CONFLICT' -'SKIP' -'LOCKED' -'TIES' -'ROLLUP' -'CUBE' -'GROUPING' -'SETS' -'TABLESAMPLE' -'ORDINALITY' -'XMLTABLE' -'COLUMNS' -'XMLNAMESPACES' -'ROWTYPE' -'NORMALIZED' -'WITHIN' -'FILTER' -'GROUPS' -'OTHERS' -'NFC' -'NFD' -'NFKC' -'NFKD' -'UESCAPE' -'VIEWS' -'NORMALIZE' -'DUMP' -'PRINT_STRICT_PARAMS' -'VARIABLE_CONFLICT' -'ERROR' -'USE_VARIABLE' -'USE_COLUMN' -'ALIAS' -'CONSTANT' -'PERFORM' -'GET' -'DIAGNOSTICS' -'STACKED' -'ELSIF' -'WHILE' -'REVERSE' -'FOREACH' -'SLICE' -'EXIT' -'RETURN' -'QUERY' -'RAISE' -'SQLSTATE' -'DEBUG' -'LOG' -'INFO' -'NOTICE' -'WARNING' -'EXCEPTION' -'ASSERT' -'LOOP' -'OPEN' -'ABS' -'CBRT' -'CEIL' -'CEILING' -'DEGREES' -'DIV' -'EXP' -'FACTORIAL' -'FLOOR' -'GCD' -'LCM' -'LN' -'LOG10' -'MIN_SCALE' -'MOD' -'PI' -'POWER' -'RADIANS' -'ROUND' -'SCALE' -'SIGN' -'SQRT' -'TRIM_SCALE' -'TRUNC' -'WIDTH_BUCKET' -'RANDOM' -'SETSEED' -'ACOS' -'ACOSD' -'ASIN' -'ASIND' -'ATAN' -'ATAND' -'ATAN2' -'ATAN2D' -'COS' -'COSD' -'COT' -'COTD' -'SIN' -'SIND' -'TAN' -'TAND' -'SINH' -'COSH' -'TANH' -'ASINH' -'ACOSH' -'ATANH' -'BIT_LENGTH' -'CHAR_LENGTH' -'CHARACTER_LENGTH' -'LOWER' -'OCTET_LENGTH' -'UPPER' -'ASCII' -'BTRIM' -'CHR' -'CONCAT' -'CONCAT_WS' -'FORMAT' -'INITCAP' -'LENGTH' -'LPAD' -'LTRIM' -'MD5' -'PARSE_IDENT' -'PG_CLIENT_ENCODING' -'QUOTE_IDENT' -'QUOTE_LITERAL' -'QUOTE_NULLABLE' -'REGEXP_COUNT' -'REGEXP_INSTR' -'REGEXP_LIKE' -'REGEXP_MATCH' -'REGEXP_MATCHES' -'REGEXP_REPLACE' -'REGEXP_SPLIT_TO_ARRAY' -'REGEXP_SPLIT_TO_TABLE' -'REGEXP_SUBSTR' -'REPEAT' -'RPAD' -'RTRIM' -'SPLIT_PART' -'STARTS_WITH' -'STRING_TO_ARRAY' -'STRING_TO_TABLE' -'STRPOS' -'SUBSTR' -'TO_ASCII' -'TO_HEX' -'TRANSLATE' -'UNISTR' -'AGE' -'CLOCK_TIMESTAMP' -'DATE_BIN' -'DATE_PART' -'DATE_TRUNC' -'ISFINITE' -'JUSTIFY_DAYS' -'JUSTIFY_HOURS' -'JUSTIFY_INTERVAL' -'MAKE_DATE' -'MAKE_INTERVAL' -'MAKE_TIME' -'MAKE_TIMESTAMP' -'MAKE_TIMESTAMPTZ' -'NOW' -'STATEMENT_TIMESTAMP' -'TIMEOFDAY' -'TRANSACTION_TIMESTAMP' -'TO_TIMESTAMP' -'TO_CHAR' -'TO_DATE' -'TO_NUMBER' -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 -'\'' - -token symbolic names: -null -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant -AfterEscapeStringConstantWithNewlineMode_Continued - -rule names: -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -OperatorEndingWithPlusMinus -OperatorCharacter -OperatorCharacterNotAllowPlusMinusAtEnd -OperatorCharacterAllowPlusMinusAtEnd -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -IdentifierStartChar -IdentifierChar -StrictIdentifierChar -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -BeginEscapeStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -Tag -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -Digits -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -EscapeStringText -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -InvalidEscapeStringText -AfterEscapeStringConstantMode_Whitespace -AfterEscapeStringConstantMode_Newline -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_Whitespace -AfterEscapeStringConstantWithNewlineMode_Newline -AfterEscapeStringConstantWithNewlineMode_Continued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE -EscapeStringConstantMode -AfterEscapeStringConstantMode -AfterEscapeStringConstantWithNewlineMode -DollarQuotedStringMode - -atn: -[4, 0, 679, 6791, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1461, 8, 27, 11, 27, 12, 27, 1462, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1469, 8, 28, 11, 28, 12, 28, 1470, 1, 28, 1, 28, 1, 28, 3, 28, 1476, 8, 28, 1, 28, 1, 28, 4, 28, 1480, 8, 28, 11, 28, 12, 28, 1481, 1, 28, 3, 28, 1485, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1494, 8, 29, 10, 29, 12, 29, 1497, 9, 29, 1, 29, 1, 29, 3, 29, 1501, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1506, 8, 29, 11, 29, 12, 29, 1507, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 5, 639, 6323, 8, 639, 10, 639, 12, 639, 6326, 9, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 3, 640, 6334, 8, 640, 1, 641, 1, 641, 3, 641, 6338, 8, 641, 1, 642, 1, 642, 3, 642, 6342, 8, 642, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 5, 644, 6351, 8, 644, 10, 644, 12, 644, 6354, 9, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6363, 8, 646, 10, 646, 12, 646, 6366, 9, 646, 1, 647, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6391, 8, 652, 10, 652, 12, 652, 6394, 9, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 3, 656, 6411, 8, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 5, 657, 6420, 8, 657, 10, 657, 12, 657, 6423, 9, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 5, 659, 6431, 8, 659, 10, 659, 12, 659, 6434, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6448, 8, 663, 10, 663, 12, 663, 6451, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 3, 668, 6470, 8, 668, 1, 668, 1, 668, 3, 668, 6474, 8, 668, 1, 668, 3, 668, 6477, 8, 668, 1, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6483, 8, 668, 1, 668, 3, 668, 6486, 8, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6491, 8, 668, 1, 668, 1, 668, 3, 668, 6495, 8, 668, 1, 669, 4, 669, 6498, 8, 669, 11, 669, 12, 669, 6499, 1, 670, 1, 670, 1, 670, 5, 670, 6505, 8, 670, 10, 670, 12, 670, 6508, 9, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 5, 671, 6518, 8, 671, 10, 671, 12, 671, 6521, 9, 671, 1, 671, 1, 671, 1, 672, 4, 672, 6526, 8, 672, 11, 672, 12, 672, 6527, 1, 672, 1, 672, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 3, 673, 6537, 8, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6545, 8, 674, 10, 674, 12, 674, 6548, 9, 674, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6556, 8, 675, 10, 675, 12, 675, 6559, 9, 675, 1, 675, 1, 675, 1, 675, 4, 675, 6564, 8, 675, 11, 675, 12, 675, 6565, 1, 675, 1, 675, 4, 675, 6570, 8, 675, 11, 675, 12, 675, 6571, 1, 675, 5, 675, 6575, 8, 675, 10, 675, 12, 675, 6578, 9, 675, 1, 675, 5, 675, 6581, 8, 675, 10, 675, 12, 675, 6584, 9, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6595, 8, 676, 10, 676, 12, 676, 6598, 9, 676, 1, 676, 1, 676, 1, 676, 4, 676, 6603, 8, 676, 11, 676, 12, 676, 6604, 1, 676, 1, 676, 4, 676, 6609, 8, 676, 11, 676, 12, 676, 6610, 1, 676, 3, 676, 6614, 8, 676, 5, 676, 6616, 8, 676, 10, 676, 12, 676, 6619, 9, 676, 1, 676, 4, 676, 6622, 8, 676, 11, 676, 12, 676, 6623, 1, 676, 4, 676, 6627, 8, 676, 11, 676, 12, 676, 6628, 1, 676, 5, 676, 6632, 8, 676, 10, 676, 12, 676, 6635, 9, 676, 1, 676, 3, 676, 6638, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6646, 8, 677, 10, 677, 12, 677, 6649, 9, 677, 1, 677, 5, 677, 6652, 8, 677, 10, 677, 12, 677, 6655, 9, 677, 1, 677, 1, 677, 5, 677, 6659, 8, 677, 10, 677, 12, 677, 6662, 9, 677, 3, 677, 6664, 8, 677, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6678, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 3, 682, 6702, 8, 682, 1, 682, 5, 682, 6705, 8, 682, 10, 682, 12, 682, 6708, 9, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6717, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6726, 8, 685, 10, 685, 12, 685, 6729, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 4, 693, 6768, 8, 693, 11, 693, 12, 693, 6769, 1, 693, 1, 693, 5, 693, 6774, 8, 693, 10, 693, 12, 693, 6777, 9, 693, 3, 693, 6779, 8, 693, 1, 694, 1, 694, 3, 694, 6783, 8, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 0, 0, 695, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 0, 1287, 0, 1289, 0, 1291, 637, 1293, 638, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 0, 1313, 647, 1315, 648, 1317, 649, 1319, 0, 1321, 650, 1323, 651, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 0, 1345, 661, 1347, 662, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 0, 1371, 673, 1373, 674, 1375, 0, 1377, 0, 1379, 0, 1381, 675, 1383, 0, 1385, 0, 1387, 679, 1389, 676, 1391, 677, 1393, 678, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6863, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 1, 1365, 1, 0, 0, 0, 1, 1367, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 2, 1377, 1, 0, 0, 0, 2, 1379, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 3, 1383, 1, 0, 0, 0, 3, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 4, 1391, 1, 0, 0, 0, 4, 1393, 1, 0, 0, 0, 5, 1395, 1, 0, 0, 0, 7, 1397, 1, 0, 0, 0, 9, 1399, 1, 0, 0, 0, 11, 1401, 1, 0, 0, 0, 13, 1403, 1, 0, 0, 0, 15, 1405, 1, 0, 0, 0, 17, 1407, 1, 0, 0, 0, 19, 1409, 1, 0, 0, 0, 21, 1411, 1, 0, 0, 0, 23, 1413, 1, 0, 0, 0, 25, 1415, 1, 0, 0, 0, 27, 1417, 1, 0, 0, 0, 29, 1419, 1, 0, 0, 0, 31, 1421, 1, 0, 0, 0, 33, 1423, 1, 0, 0, 0, 35, 1425, 1, 0, 0, 0, 37, 1427, 1, 0, 0, 0, 39, 1429, 1, 0, 0, 0, 41, 1432, 1, 0, 0, 0, 43, 1435, 1, 0, 0, 0, 45, 1438, 1, 0, 0, 0, 47, 1441, 1, 0, 0, 0, 49, 1444, 1, 0, 0, 0, 51, 1447, 1, 0, 0, 0, 53, 1450, 1, 0, 0, 0, 55, 1453, 1, 0, 0, 0, 57, 1456, 1, 0, 0, 0, 59, 1458, 1, 0, 0, 0, 61, 1484, 1, 0, 0, 0, 63, 1495, 1, 0, 0, 0, 65, 1511, 1, 0, 0, 0, 67, 1513, 1, 0, 0, 0, 69, 1515, 1, 0, 0, 0, 71, 1517, 1, 0, 0, 0, 73, 1521, 1, 0, 0, 0, 75, 1529, 1, 0, 0, 0, 77, 1537, 1, 0, 0, 0, 79, 1541, 1, 0, 0, 0, 81, 1545, 1, 0, 0, 0, 83, 1551, 1, 0, 0, 0, 85, 1554, 1, 0, 0, 0, 87, 1558, 1, 0, 0, 0, 89, 1569, 1, 0, 0, 0, 91, 1574, 1, 0, 0, 0, 93, 1579, 1, 0, 0, 0, 95, 1584, 1, 0, 0, 0, 97, 1590, 1, 0, 0, 0, 99, 1598, 1, 0, 0, 0, 101, 1605, 1, 0, 0, 0, 103, 1616, 1, 0, 0, 0, 105, 1623, 1, 0, 0, 0, 107, 1639, 1, 0, 0, 0, 109, 1652, 1, 0, 0, 0, 111, 1665, 1, 0, 0, 0, 113, 1678, 1, 0, 0, 0, 115, 1696, 1, 0, 0, 0, 117, 1709, 1, 0, 0, 0, 119, 1717, 1, 0, 0, 0, 121, 1728, 1, 0, 0, 0, 123, 1733, 1, 0, 0, 0, 125, 1742, 1, 0, 0, 0, 127, 1745, 1, 0, 0, 0, 129, 1750, 1, 0, 0, 0, 131, 1757, 1, 0, 0, 0, 133, 1763, 1, 0, 0, 0, 135, 1769, 1, 0, 0, 0, 137, 1773, 1, 0, 0, 0, 139, 1781, 1, 0, 0, 0, 141, 1786, 1, 0, 0, 0, 143, 1792, 1, 0, 0, 0, 145, 1798, 1, 0, 0, 0, 147, 1805, 1, 0, 0, 0, 149, 1808, 1, 0, 0, 0, 151, 1818, 1, 0, 0, 0, 153, 1828, 1, 0, 0, 0, 155, 1833, 1, 0, 0, 0, 157, 1841, 1, 0, 0, 0, 159, 1849, 1, 0, 0, 0, 161, 1855, 1, 0, 0, 0, 163, 1865, 1, 0, 0, 0, 165, 1880, 1, 0, 0, 0, 167, 1884, 1, 0, 0, 0, 169, 1889, 1, 0, 0, 0, 171, 1896, 1, 0, 0, 0, 173, 1899, 1, 0, 0, 0, 175, 1904, 1, 0, 0, 0, 177, 1907, 1, 0, 0, 0, 179, 1913, 1, 0, 0, 0, 181, 1921, 1, 0, 0, 0, 183, 1929, 1, 0, 0, 0, 185, 1940, 1, 0, 0, 0, 187, 1950, 1, 0, 0, 0, 189, 1957, 1, 0, 0, 0, 191, 1970, 1, 0, 0, 0, 193, 1975, 1, 0, 0, 0, 195, 1985, 1, 0, 0, 0, 197, 1991, 1, 0, 0, 0, 199, 1996, 1, 0, 0, 0, 201, 1999, 1, 0, 0, 0, 203, 2008, 1, 0, 0, 0, 205, 2013, 1, 0, 0, 0, 207, 2019, 1, 0, 0, 0, 209, 2026, 1, 0, 0, 0, 211, 2031, 1, 0, 0, 0, 213, 2037, 1, 0, 0, 0, 215, 2046, 1, 0, 0, 0, 217, 2051, 1, 0, 0, 0, 219, 2057, 1, 0, 0, 0, 221, 2064, 1, 0, 0, 0, 223, 2069, 1, 0, 0, 0, 225, 2083, 1, 0, 0, 0, 227, 2090, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2113, 1, 0, 0, 0, 233, 2119, 1, 0, 0, 0, 235, 2134, 1, 0, 0, 0, 237, 2141, 1, 0, 0, 0, 239, 2146, 1, 0, 0, 0, 241, 2152, 1, 0, 0, 0, 243, 2158, 1, 0, 0, 0, 245, 2161, 1, 0, 0, 0, 247, 2168, 1, 0, 0, 0, 249, 2173, 1, 0, 0, 0, 251, 2178, 1, 0, 0, 0, 253, 2183, 1, 0, 0, 0, 255, 2191, 1, 0, 0, 0, 257, 2199, 1, 0, 0, 0, 259, 2205, 1, 0, 0, 0, 261, 2210, 1, 0, 0, 0, 263, 2219, 1, 0, 0, 0, 265, 2225, 1, 0, 0, 0, 267, 2233, 1, 0, 0, 0, 269, 2241, 1, 0, 0, 0, 271, 2247, 1, 0, 0, 0, 273, 2256, 1, 0, 0, 0, 275, 2263, 1, 0, 0, 0, 277, 2270, 1, 0, 0, 0, 279, 2274, 1, 0, 0, 0, 281, 2280, 1, 0, 0, 0, 283, 2286, 1, 0, 0, 0, 285, 2296, 1, 0, 0, 0, 287, 2301, 1, 0, 0, 0, 289, 2307, 1, 0, 0, 0, 291, 2314, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2335, 1, 0, 0, 0, 297, 2338, 1, 0, 0, 0, 299, 2348, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2364, 1, 0, 0, 0, 305, 2370, 1, 0, 0, 0, 307, 2373, 1, 0, 0, 0, 309, 2379, 1, 0, 0, 0, 311, 2386, 1, 0, 0, 0, 313, 2394, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2417, 1, 0, 0, 0, 321, 2433, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2456, 1, 0, 0, 0, 329, 2464, 1, 0, 0, 0, 331, 2472, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2488, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2512, 1, 0, 0, 0, 341, 2523, 1, 0, 0, 0, 343, 2535, 1, 0, 0, 0, 345, 2543, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2563, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2573, 1, 0, 0, 0, 355, 2577, 1, 0, 0, 0, 357, 2584, 1, 0, 0, 0, 359, 2590, 1, 0, 0, 0, 361, 2595, 1, 0, 0, 0, 363, 2604, 1, 0, 0, 0, 365, 2608, 1, 0, 0, 0, 367, 2619, 1, 0, 0, 0, 369, 2627, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2645, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2660, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2681, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2700, 1, 0, 0, 0, 387, 2708, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2731, 1, 0, 0, 0, 395, 2736, 1, 0, 0, 0, 397, 2741, 1, 0, 0, 0, 399, 2748, 1, 0, 0, 0, 401, 2757, 1, 0, 0, 0, 403, 2767, 1, 0, 0, 0, 405, 2772, 1, 0, 0, 0, 407, 2779, 1, 0, 0, 0, 409, 2785, 1, 0, 0, 0, 411, 2793, 1, 0, 0, 0, 413, 2803, 1, 0, 0, 0, 415, 2813, 1, 0, 0, 0, 417, 2821, 1, 0, 0, 0, 419, 2829, 1, 0, 0, 0, 421, 2839, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2855, 1, 0, 0, 0, 427, 2861, 1, 0, 0, 0, 429, 2871, 1, 0, 0, 0, 431, 2877, 1, 0, 0, 0, 433, 2885, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2927, 1, 0, 0, 0, 445, 2934, 1, 0, 0, 0, 447, 2939, 1, 0, 0, 0, 449, 2944, 1, 0, 0, 0, 451, 2953, 1, 0, 0, 0, 453, 2956, 1, 0, 0, 0, 455, 2966, 1, 0, 0, 0, 457, 2976, 1, 0, 0, 0, 459, 2985, 1, 0, 0, 0, 461, 2995, 1, 0, 0, 0, 463, 3005, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3027, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3043, 1, 0, 0, 0, 475, 3055, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3088, 1, 0, 0, 0, 485, 3092, 1, 0, 0, 0, 487, 3098, 1, 0, 0, 0, 489, 3107, 1, 0, 0, 0, 491, 3113, 1, 0, 0, 0, 493, 3118, 1, 0, 0, 0, 495, 3128, 1, 0, 0, 0, 497, 3134, 1, 0, 0, 0, 499, 3141, 1, 0, 0, 0, 501, 3146, 1, 0, 0, 0, 503, 3152, 1, 0, 0, 0, 505, 3161, 1, 0, 0, 0, 507, 3166, 1, 0, 0, 0, 509, 3174, 1, 0, 0, 0, 511, 3180, 1, 0, 0, 0, 513, 3188, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3210, 1, 0, 0, 0, 519, 3216, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3232, 1, 0, 0, 0, 525, 3237, 1, 0, 0, 0, 527, 3243, 1, 0, 0, 0, 529, 3248, 1, 0, 0, 0, 531, 3253, 1, 0, 0, 0, 533, 3259, 1, 0, 0, 0, 535, 3264, 1, 0, 0, 0, 537, 3267, 1, 0, 0, 0, 539, 3275, 1, 0, 0, 0, 541, 3282, 1, 0, 0, 0, 543, 3289, 1, 0, 0, 0, 545, 3295, 1, 0, 0, 0, 547, 3302, 1, 0, 0, 0, 549, 3305, 1, 0, 0, 0, 551, 3309, 1, 0, 0, 0, 553, 3314, 1, 0, 0, 0, 555, 3323, 1, 0, 0, 0, 557, 3330, 1, 0, 0, 0, 559, 3338, 1, 0, 0, 0, 561, 3344, 1, 0, 0, 0, 563, 3350, 1, 0, 0, 0, 565, 3357, 1, 0, 0, 0, 567, 3365, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3383, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3398, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3416, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3434, 1, 0, 0, 0, 585, 3440, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3462, 1, 0, 0, 0, 591, 3472, 1, 0, 0, 0, 593, 3480, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3492, 1, 0, 0, 0, 599, 3497, 1, 0, 0, 0, 601, 3506, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3524, 1, 0, 0, 0, 607, 3528, 1, 0, 0, 0, 609, 3536, 1, 0, 0, 0, 611, 3544, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3568, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3595, 1, 0, 0, 0, 625, 3601, 1, 0, 0, 0, 627, 3609, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3633, 1, 0, 0, 0, 635, 3638, 1, 0, 0, 0, 637, 3647, 1, 0, 0, 0, 639, 3652, 1, 0, 0, 0, 641, 3657, 1, 0, 0, 0, 643, 3667, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3681, 1, 0, 0, 0, 649, 3688, 1, 0, 0, 0, 651, 3695, 1, 0, 0, 0, 653, 3704, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3736, 1, 0, 0, 0, 661, 3743, 1, 0, 0, 0, 663, 3751, 1, 0, 0, 0, 665, 3755, 1, 0, 0, 0, 667, 3761, 1, 0, 0, 0, 669, 3766, 1, 0, 0, 0, 671, 3773, 1, 0, 0, 0, 673, 3782, 1, 0, 0, 0, 675, 3789, 1, 0, 0, 0, 677, 3800, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3827, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3840, 1, 0, 0, 0, 689, 3848, 1, 0, 0, 0, 691, 3855, 1, 0, 0, 0, 693, 3861, 1, 0, 0, 0, 695, 3867, 1, 0, 0, 0, 697, 3874, 1, 0, 0, 0, 699, 3881, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3897, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3921, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3963, 1, 0, 0, 0, 721, 3969, 1, 0, 0, 0, 723, 3979, 1, 0, 0, 0, 725, 3991, 1, 0, 0, 0, 727, 4003, 1, 0, 0, 0, 729, 4011, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4029, 1, 0, 0, 0, 735, 4035, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4049, 1, 0, 0, 0, 741, 4055, 1, 0, 0, 0, 743, 4064, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4082, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4095, 1, 0, 0, 0, 753, 4104, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4123, 1, 0, 0, 0, 759, 4128, 1, 0, 0, 0, 761, 4136, 1, 0, 0, 0, 763, 4142, 1, 0, 0, 0, 765, 4146, 1, 0, 0, 0, 767, 4151, 1, 0, 0, 0, 769, 4155, 1, 0, 0, 0, 771, 4160, 1, 0, 0, 0, 773, 4168, 1, 0, 0, 0, 775, 4175, 1, 0, 0, 0, 777, 4179, 1, 0, 0, 0, 779, 4187, 1, 0, 0, 0, 781, 4192, 1, 0, 0, 0, 783, 4202, 1, 0, 0, 0, 785, 4211, 1, 0, 0, 0, 787, 4215, 1, 0, 0, 0, 789, 4223, 1, 0, 0, 0, 791, 4230, 1, 0, 0, 0, 793, 4238, 1, 0, 0, 0, 795, 4244, 1, 0, 0, 0, 797, 4253, 1, 0, 0, 0, 799, 4259, 1, 0, 0, 0, 801, 4263, 1, 0, 0, 0, 803, 4271, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4286, 1, 0, 0, 0, 809, 4295, 1, 0, 0, 0, 811, 4301, 1, 0, 0, 0, 813, 4306, 1, 0, 0, 0, 815, 4313, 1, 0, 0, 0, 817, 4321, 1, 0, 0, 0, 819, 4329, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4353, 1, 0, 0, 0, 827, 4357, 1, 0, 0, 0, 829, 4363, 1, 0, 0, 0, 831, 4372, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4387, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4403, 1, 0, 0, 0, 841, 4408, 1, 0, 0, 0, 843, 4415, 1, 0, 0, 0, 845, 4423, 1, 0, 0, 0, 847, 4437, 1, 0, 0, 0, 849, 4448, 1, 0, 0, 0, 851, 4455, 1, 0, 0, 0, 853, 4474, 1, 0, 0, 0, 855, 4502, 1, 0, 0, 0, 857, 4529, 1, 0, 0, 0, 859, 4535, 1, 0, 0, 0, 861, 4548, 1, 0, 0, 0, 863, 4558, 1, 0, 0, 0, 865, 4569, 1, 0, 0, 0, 867, 4579, 1, 0, 0, 0, 869, 4589, 1, 0, 0, 0, 871, 4598, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4625, 1, 0, 0, 0, 879, 4630, 1, 0, 0, 0, 881, 4638, 1, 0, 0, 0, 883, 4645, 1, 0, 0, 0, 885, 4652, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4703, 1, 0, 0, 0, 899, 4713, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4727, 1, 0, 0, 0, 905, 4734, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4750, 1, 0, 0, 0, 911, 4754, 1, 0, 0, 0, 913, 4760, 1, 0, 0, 0, 915, 4773, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4793, 1, 0, 0, 0, 923, 4802, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4821, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4848, 1, 0, 0, 0, 937, 4856, 1, 0, 0, 0, 939, 4867, 1, 0, 0, 0, 941, 4876, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4888, 1, 0, 0, 0, 947, 4893, 1, 0, 0, 0, 949, 4900, 1, 0, 0, 0, 951, 4905, 1, 0, 0, 0, 953, 4914, 1, 0, 0, 0, 955, 4919, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4942, 1, 0, 0, 0, 961, 4951, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4981, 1, 0, 0, 0, 969, 4992, 1, 0, 0, 0, 971, 4999, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5013, 1, 0, 0, 0, 977, 5020, 1, 0, 0, 0, 979, 5024, 1, 0, 0, 0, 981, 5028, 1, 0, 0, 0, 983, 5033, 1, 0, 0, 0, 985, 5038, 1, 0, 0, 0, 987, 5046, 1, 0, 0, 0, 989, 5052, 1, 0, 0, 0, 991, 5062, 1, 0, 0, 0, 993, 5067, 1, 0, 0, 0, 995, 5087, 1, 0, 0, 0, 997, 5105, 1, 0, 0, 0, 999, 5111, 1, 0, 0, 0, 1001, 5124, 1, 0, 0, 0, 1003, 5135, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5150, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5162, 1, 0, 0, 0, 1013, 5174, 1, 0, 0, 0, 1015, 5182, 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5194, 1, 0, 0, 0, 1021, 5202, 1, 0, 0, 0, 1023, 5210, 1, 0, 0, 0, 1025, 5216, 1, 0, 0, 0, 1027, 5221, 1, 0, 0, 0, 1029, 5228, 1, 0, 0, 0, 1031, 5234, 1, 0, 0, 0, 1033, 5240, 1, 0, 0, 0, 1035, 5249, 1, 0, 0, 0, 1037, 5255, 1, 0, 0, 0, 1039, 5259, 1, 0, 0, 0, 1041, 5264, 1, 0, 0, 0, 1043, 5271, 1, 0, 0, 0, 1045, 5279, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5301, 1, 0, 0, 0, 1053, 5306, 1, 0, 0, 0, 1055, 5310, 1, 0, 0, 0, 1057, 5315, 1, 0, 0, 0, 1059, 5320, 1, 0, 0, 0, 1061, 5328, 1, 0, 0, 0, 1063, 5336, 1, 0, 0, 0, 1065, 5340, 1, 0, 0, 0, 1067, 5344, 1, 0, 0, 0, 1069, 5354, 1, 0, 0, 0, 1071, 5360, 1, 0, 0, 0, 1073, 5364, 1, 0, 0, 0, 1075, 5368, 1, 0, 0, 0, 1077, 5371, 1, 0, 0, 0, 1079, 5377, 1, 0, 0, 0, 1081, 5387, 1, 0, 0, 0, 1083, 5391, 1, 0, 0, 0, 1085, 5394, 1, 0, 0, 0, 1087, 5400, 1, 0, 0, 0, 1089, 5408, 1, 0, 0, 0, 1091, 5414, 1, 0, 0, 0, 1093, 5420, 1, 0, 0, 0, 1095, 5425, 1, 0, 0, 0, 1097, 5430, 1, 0, 0, 0, 1099, 5441, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5467, 1, 0, 0, 0, 1107, 5475, 1, 0, 0, 0, 1109, 5480, 1, 0, 0, 0, 1111, 5486, 1, 0, 0, 0, 1113, 5491, 1, 0, 0, 0, 1115, 5497, 1, 0, 0, 0, 1117, 5502, 1, 0, 0, 0, 1119, 5508, 1, 0, 0, 0, 1121, 5514, 1, 0, 0, 0, 1123, 5521, 1, 0, 0, 0, 1125, 5525, 1, 0, 0, 0, 1127, 5530, 1, 0, 0, 0, 1129, 5534, 1, 0, 0, 0, 1131, 5539, 1, 0, 0, 0, 1133, 5543, 1, 0, 0, 0, 1135, 5548, 1, 0, 0, 0, 1137, 5552, 1, 0, 0, 0, 1139, 5557, 1, 0, 0, 0, 1141, 5562, 1, 0, 0, 0, 1143, 5567, 1, 0, 0, 0, 1145, 5572, 1, 0, 0, 0, 1147, 5578, 1, 0, 0, 0, 1149, 5584, 1, 0, 0, 0, 1151, 5590, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5630, 1, 0, 0, 0, 1159, 5636, 1, 0, 0, 0, 1161, 5649, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5667, 1, 0, 0, 0, 1169, 5671, 1, 0, 0, 0, 1171, 5678, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5710, 1, 0, 0, 0, 1181, 5715, 1, 0, 0, 0, 1183, 5721, 1, 0, 0, 0, 1185, 5725, 1, 0, 0, 0, 1187, 5737, 1, 0, 0, 0, 1189, 5756, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5782, 1, 0, 0, 0, 1195, 5797, 1, 0, 0, 0, 1197, 5810, 1, 0, 0, 0, 1199, 5823, 1, 0, 0, 0, 1201, 5835, 1, 0, 0, 0, 1203, 5848, 1, 0, 0, 0, 1205, 5863, 1, 0, 0, 0, 1207, 5878, 1, 0, 0, 0, 1209, 5900, 1, 0, 0, 0, 1211, 5922, 1, 0, 0, 0, 1213, 5936, 1, 0, 0, 0, 1215, 5943, 1, 0, 0, 0, 1217, 5948, 1, 0, 0, 0, 1219, 5954, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5977, 1, 0, 0, 0, 1225, 5993, 1, 0, 0, 0, 1227, 6009, 1, 0, 0, 0, 1229, 6016, 1, 0, 0, 0, 1231, 6023, 1, 0, 0, 0, 1233, 6032, 1, 0, 0, 0, 1235, 6039, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6060, 1, 0, 0, 0, 1243, 6076, 1, 0, 0, 0, 1245, 6085, 1, 0, 0, 0, 1247, 6095, 1, 0, 0, 0, 1249, 6106, 1, 0, 0, 0, 1251, 6115, 1, 0, 0, 0, 1253, 6128, 1, 0, 0, 0, 1255, 6142, 1, 0, 0, 0, 1257, 6159, 1, 0, 0, 0, 1259, 6169, 1, 0, 0, 0, 1261, 6183, 1, 0, 0, 0, 1263, 6193, 1, 0, 0, 0, 1265, 6208, 1, 0, 0, 0, 1267, 6225, 1, 0, 0, 0, 1269, 6229, 1, 0, 0, 0, 1271, 6249, 1, 0, 0, 0, 1273, 6259, 1, 0, 0, 0, 1275, 6281, 1, 0, 0, 0, 1277, 6294, 1, 0, 0, 0, 1279, 6302, 1, 0, 0, 0, 1281, 6310, 1, 0, 0, 0, 1283, 6320, 1, 0, 0, 0, 1285, 6333, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6341, 1, 0, 0, 0, 1291, 6343, 1, 0, 0, 0, 1293, 6346, 1, 0, 0, 0, 1295, 6355, 1, 0, 0, 0, 1297, 6358, 1, 0, 0, 0, 1299, 6367, 1, 0, 0, 0, 1301, 6371, 1, 0, 0, 0, 1303, 6375, 1, 0, 0, 0, 1305, 6379, 1, 0, 0, 0, 1307, 6383, 1, 0, 0, 0, 1309, 6386, 1, 0, 0, 0, 1311, 6395, 1, 0, 0, 0, 1313, 6401, 1, 0, 0, 0, 1315, 6404, 1, 0, 0, 0, 1317, 6408, 1, 0, 0, 0, 1319, 6417, 1, 0, 0, 0, 1321, 6424, 1, 0, 0, 0, 1323, 6427, 1, 0, 0, 0, 1325, 6435, 1, 0, 0, 0, 1327, 6438, 1, 0, 0, 0, 1329, 6441, 1, 0, 0, 0, 1331, 6444, 1, 0, 0, 0, 1333, 6452, 1, 0, 0, 0, 1335, 6455, 1, 0, 0, 0, 1337, 6458, 1, 0, 0, 0, 1339, 6460, 1, 0, 0, 0, 1341, 6494, 1, 0, 0, 0, 1343, 6497, 1, 0, 0, 0, 1345, 6501, 1, 0, 0, 0, 1347, 6509, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6536, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6551, 1, 0, 0, 0, 1357, 6590, 1, 0, 0, 0, 1359, 6641, 1, 0, 0, 0, 1361, 6665, 1, 0, 0, 0, 1363, 6668, 1, 0, 0, 0, 1365, 6670, 1, 0, 0, 0, 1367, 6675, 1, 0, 0, 0, 1369, 6706, 1, 0, 0, 0, 1371, 6709, 1, 0, 0, 0, 1373, 6714, 1, 0, 0, 0, 1375, 6727, 1, 0, 0, 0, 1377, 6730, 1, 0, 0, 0, 1379, 6735, 1, 0, 0, 0, 1381, 6741, 1, 0, 0, 0, 1383, 6746, 1, 0, 0, 0, 1385, 6751, 1, 0, 0, 0, 1387, 6756, 1, 0, 0, 0, 1389, 6761, 1, 0, 0, 0, 1391, 6778, 1, 0, 0, 0, 1393, 6780, 1, 0, 0, 0, 1395, 1396, 5, 36, 0, 0, 1396, 6, 1, 0, 0, 0, 1397, 1398, 5, 40, 0, 0, 1398, 8, 1, 0, 0, 0, 1399, 1400, 5, 41, 0, 0, 1400, 10, 1, 0, 0, 0, 1401, 1402, 5, 91, 0, 0, 1402, 12, 1, 0, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 14, 1, 0, 0, 0, 1405, 1406, 5, 44, 0, 0, 1406, 16, 1, 0, 0, 0, 1407, 1408, 5, 59, 0, 0, 1408, 18, 1, 0, 0, 0, 1409, 1410, 5, 58, 0, 0, 1410, 20, 1, 0, 0, 0, 1411, 1412, 5, 42, 0, 0, 1412, 22, 1, 0, 0, 0, 1413, 1414, 5, 61, 0, 0, 1414, 24, 1, 0, 0, 0, 1415, 1416, 5, 46, 0, 0, 1416, 26, 1, 0, 0, 0, 1417, 1418, 5, 43, 0, 0, 1418, 28, 1, 0, 0, 0, 1419, 1420, 5, 45, 0, 0, 1420, 30, 1, 0, 0, 0, 1421, 1422, 5, 47, 0, 0, 1422, 32, 1, 0, 0, 0, 1423, 1424, 5, 94, 0, 0, 1424, 34, 1, 0, 0, 0, 1425, 1426, 5, 60, 0, 0, 1426, 36, 1, 0, 0, 0, 1427, 1428, 5, 62, 0, 0, 1428, 38, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 1431, 5, 60, 0, 0, 1431, 40, 1, 0, 0, 0, 1432, 1433, 5, 62, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 42, 1, 0, 0, 0, 1435, 1436, 5, 58, 0, 0, 1436, 1437, 5, 61, 0, 0, 1437, 44, 1, 0, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 1440, 5, 61, 0, 0, 1440, 46, 1, 0, 0, 0, 1441, 1442, 5, 61, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 48, 1, 0, 0, 0, 1444, 1445, 5, 62, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 50, 1, 0, 0, 0, 1447, 1448, 5, 46, 0, 0, 1448, 1449, 5, 46, 0, 0, 1449, 52, 1, 0, 0, 0, 1450, 1451, 5, 60, 0, 0, 1451, 1452, 5, 62, 0, 0, 1452, 54, 1, 0, 0, 0, 1453, 1454, 5, 58, 0, 0, 1454, 1455, 5, 58, 0, 0, 1455, 56, 1, 0, 0, 0, 1456, 1457, 5, 37, 0, 0, 1457, 58, 1, 0, 0, 0, 1458, 1460, 5, 36, 0, 0, 1459, 1461, 7, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1460, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 60, 1, 0, 0, 0, 1464, 1480, 3, 65, 30, 0, 1465, 1469, 5, 43, 0, 0, 1466, 1467, 5, 45, 0, 0, 1467, 1469, 4, 28, 0, 0, 1468, 1465, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1475, 1, 0, 0, 0, 1472, 1476, 3, 65, 30, 0, 1473, 1474, 5, 47, 0, 0, 1474, 1476, 4, 28, 1, 0, 1475, 1472, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1480, 1, 0, 0, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 2, 0, 1479, 1464, 1, 0, 0, 0, 1479, 1468, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1485, 7, 1, 0, 0, 1484, 1479, 1, 0, 0, 0, 1484, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1487, 6, 28, 0, 0, 1487, 62, 1, 0, 0, 0, 1488, 1494, 3, 67, 31, 0, 1489, 1490, 5, 45, 0, 0, 1490, 1494, 4, 29, 3, 0, 1491, 1492, 5, 47, 0, 0, 1492, 1494, 4, 29, 4, 0, 1493, 1488, 1, 0, 0, 0, 1493, 1489, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1494, 1497, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1500, 3, 69, 32, 0, 1499, 1501, 3, 61, 28, 0, 1500, 1499, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1505, 1, 0, 0, 0, 1502, 1506, 5, 43, 0, 0, 1503, 1504, 5, 45, 0, 0, 1504, 1506, 4, 29, 5, 0, 1505, 1502, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 6, 29, 1, 0, 1510, 64, 1, 0, 0, 0, 1511, 1512, 7, 2, 0, 0, 1512, 66, 1, 0, 0, 0, 1513, 1514, 7, 3, 0, 0, 1514, 68, 1, 0, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 70, 1, 0, 0, 0, 1517, 1518, 7, 5, 0, 0, 1518, 1519, 7, 6, 0, 0, 1519, 1520, 7, 6, 0, 0, 1520, 72, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 7, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 8, 0, 0, 1526, 1527, 7, 9, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 74, 1, 0, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 7, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 6, 0, 0, 1533, 1534, 7, 8, 0, 0, 1534, 1535, 7, 11, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 76, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 12, 0, 0, 1540, 78, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 80, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 13, 0, 0, 1547, 1548, 7, 13, 0, 0, 1548, 1549, 7, 5, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 82, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 9, 0, 0, 1553, 84, 1, 0, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 9, 0, 0, 1556, 1557, 7, 14, 0, 0, 1557, 86, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 8, 0, 0, 1561, 1562, 7, 15, 0, 0, 1562, 1563, 7, 15, 0, 0, 1563, 1564, 7, 10, 0, 0, 1564, 1565, 7, 16, 0, 0, 1565, 1566, 7, 13, 0, 0, 1566, 1567, 7, 17, 0, 0, 1567, 1568, 7, 14, 0, 0, 1568, 88, 1, 0, 0, 0, 1569, 1570, 7, 18, 0, 0, 1570, 1571, 7, 19, 0, 0, 1571, 1572, 7, 16, 0, 0, 1572, 1573, 7, 20, 0, 0, 1573, 90, 1, 0, 0, 0, 1574, 1575, 7, 14, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 1577, 7, 9, 0, 0, 1577, 1578, 7, 10, 0, 0, 1578, 92, 1, 0, 0, 0, 1579, 1580, 7, 14, 0, 0, 1580, 1581, 7, 5, 0, 0, 1581, 1582, 7, 9, 0, 0, 1582, 1583, 7, 16, 0, 0, 1583, 94, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 20, 0, 0, 1586, 1587, 7, 10, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 21, 0, 0, 1589, 96, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 19, 0, 0, 1592, 1593, 7, 6, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1595, 7, 5, 0, 0, 1595, 1596, 7, 16, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 98, 1, 0, 0, 0, 1598, 1599, 7, 14, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 6, 0, 0, 1601, 1602, 7, 22, 0, 0, 1602, 1603, 7, 15, 0, 0, 1603, 1604, 7, 7, 0, 0, 1604, 100, 1, 0, 0, 0, 1605, 1606, 7, 14, 0, 0, 1606, 1607, 7, 19, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 9, 0, 0, 1609, 1610, 7, 16, 0, 0, 1610, 1611, 7, 13, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, 7, 17, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 16, 0, 0, 1615, 102, 1, 0, 0, 0, 1616, 1617, 7, 14, 0, 0, 1617, 1618, 7, 13, 0, 0, 1618, 1619, 7, 10, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 1622, 7, 10, 0, 0, 1622, 104, 1, 0, 0, 0, 1623, 1624, 7, 14, 0, 0, 1624, 1625, 7, 22, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 7, 16, 0, 0, 1630, 1631, 5, 95, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, 7, 19, 0, 0, 1637, 1638, 7, 23, 0, 0, 1638, 106, 1, 0, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 22, 0, 0, 1641, 1642, 7, 13, 0, 0, 1642, 1643, 7, 13, 0, 0, 1643, 1644, 7, 10, 0, 0, 1644, 1645, 7, 7, 0, 0, 1645, 1646, 7, 16, 0, 0, 1646, 1647, 5, 95, 0, 0, 1647, 1648, 7, 12, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 10, 0, 0, 1651, 108, 1, 0, 0, 0, 1652, 1653, 7, 14, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 13, 0, 0, 1655, 1656, 7, 13, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, 7, 7, 0, 0, 1658, 1659, 7, 16, 0, 0, 1659, 1660, 5, 95, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 19, 0, 0, 1662, 1663, 7, 6, 0, 0, 1663, 1664, 7, 10, 0, 0, 1664, 110, 1, 0, 0, 0, 1665, 1666, 7, 14, 0, 0, 1666, 1667, 7, 22, 0, 0, 1667, 1668, 7, 13, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 1671, 7, 7, 0, 0, 1671, 1672, 7, 16, 0, 0, 1672, 1673, 5, 95, 0, 0, 1673, 1674, 7, 16, 0, 0, 1674, 1675, 7, 17, 0, 0, 1675, 1676, 7, 15, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 112, 1, 0, 0, 0, 1678, 1679, 7, 14, 0, 0, 1679, 1680, 7, 22, 0, 0, 1680, 1681, 7, 13, 0, 0, 1681, 1682, 7, 13, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 1684, 7, 7, 0, 0, 1684, 1685, 7, 16, 0, 0, 1685, 1686, 5, 95, 0, 0, 1686, 1687, 7, 16, 0, 0, 1687, 1688, 7, 17, 0, 0, 1688, 1689, 7, 15, 0, 0, 1689, 1690, 7, 10, 0, 0, 1690, 1691, 7, 9, 0, 0, 1691, 1692, 7, 16, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, 7, 24, 0, 0, 1695, 114, 1, 0, 0, 0, 1696, 1697, 7, 14, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 1699, 7, 13, 0, 0, 1699, 1700, 7, 13, 0, 0, 1700, 1701, 7, 10, 0, 0, 1701, 1702, 7, 7, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 5, 95, 0, 0, 1704, 1705, 7, 22, 0, 0, 1705, 1706, 7, 9, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 116, 1, 0, 0, 0, 1709, 1710, 7, 12, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 25, 0, 0, 1712, 1713, 7, 5, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 1716, 7, 16, 0, 0, 1716, 118, 1, 0, 0, 0, 1717, 1718, 7, 12, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 1720, 7, 25, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 13, 0, 0, 1723, 1724, 7, 5, 0, 0, 1724, 1725, 7, 18, 0, 0, 1725, 1726, 7, 6, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 120, 1, 0, 0, 0, 1728, 1729, 7, 12, 0, 0, 1729, 1730, 7, 10, 0, 0, 1730, 1731, 7, 9, 0, 0, 1731, 1732, 7, 14, 0, 0, 1732, 122, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 17, 0, 0, 1735, 1736, 7, 9, 0, 0, 1736, 1737, 7, 16, 0, 0, 1737, 1738, 7, 17, 0, 0, 1738, 1739, 7, 7, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 124, 1, 0, 0, 0, 1742, 1743, 7, 12, 0, 0, 1743, 1744, 7, 19, 0, 0, 1744, 126, 1, 0, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 6, 0, 0, 1747, 1748, 7, 9, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 128, 1, 0, 0, 0, 1750, 1751, 7, 10, 0, 0, 1751, 1752, 7, 26, 0, 0, 1752, 1753, 7, 14, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 24, 0, 0, 1755, 1756, 7, 16, 0, 0, 1756, 130, 1, 0, 0, 0, 1757, 1758, 7, 25, 0, 0, 1758, 1759, 7, 5, 0, 0, 1759, 1760, 7, 6, 0, 0, 1760, 1761, 7, 9, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 132, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 1767, 7, 14, 0, 0, 1767, 1768, 7, 20, 0, 0, 1768, 134, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 19, 0, 0, 1771, 1772, 7, 13, 0, 0, 1772, 136, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 1778, 7, 17, 0, 0, 1778, 1779, 7, 23, 0, 0, 1779, 1780, 7, 7, 0, 0, 1780, 138, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, 7, 19, 0, 0, 1784, 1785, 7, 15, 0, 0, 1785, 140, 1, 0, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 1789, 7, 5, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 142, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 19, 0, 0, 1795, 1796, 7, 22, 0, 0, 1796, 1797, 7, 24, 0, 0, 1797, 144, 1, 0, 0, 0, 1798, 1799, 7, 20, 0, 0, 1799, 1800, 7, 5, 0, 0, 1800, 1801, 7, 27, 0, 0, 1801, 1802, 7, 17, 0, 0, 1802, 1803, 7, 7, 0, 0, 1803, 1804, 7, 23, 0, 0, 1804, 146, 1, 0, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 148, 1, 0, 0, 0, 1808, 1809, 7, 17, 0, 0, 1809, 1810, 7, 7, 0, 0, 1810, 1811, 7, 17, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 5, 0, 0, 1814, 1815, 7, 6, 0, 0, 1815, 1816, 7, 6, 0, 0, 1816, 1817, 7, 8, 0, 0, 1817, 150, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 16, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 13, 0, 0, 1823, 1824, 7, 9, 0, 0, 1824, 1825, 7, 10, 0, 0, 1825, 1826, 7, 14, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 152, 1, 0, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 7, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 19, 0, 0, 1832, 154, 1, 0, 0, 0, 1833, 1834, 7, 6, 0, 0, 1834, 1835, 7, 5, 0, 0, 1835, 1836, 7, 16, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 1838, 7, 13, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 156, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 5, 0, 0, 1844, 1845, 7, 12, 0, 0, 1845, 1846, 7, 17, 0, 0, 1846, 1847, 7, 7, 0, 0, 1847, 1848, 7, 23, 0, 0, 1848, 158, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 17, 0, 0, 1851, 1852, 7, 15, 0, 0, 1852, 1853, 7, 17, 0, 0, 1853, 1854, 7, 16, 0, 0, 1854, 160, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 19, 0, 0, 1857, 1858, 7, 14, 0, 0, 1858, 1859, 7, 5, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 16, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 15, 0, 0, 1863, 1864, 7, 10, 0, 0, 1864, 162, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 19, 0, 0, 1867, 1868, 7, 14, 0, 0, 1868, 1869, 7, 5, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 17, 0, 0, 1872, 1873, 7, 15, 0, 0, 1873, 1874, 7, 10, 0, 0, 1874, 1875, 7, 9, 0, 0, 1875, 1876, 7, 16, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 15, 0, 0, 1878, 1879, 7, 24, 0, 0, 1879, 164, 1, 0, 0, 0, 1880, 1881, 7, 7, 0, 0, 1881, 1882, 7, 19, 0, 0, 1882, 1883, 7, 16, 0, 0, 1883, 166, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 22, 0, 0, 1886, 1887, 7, 6, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 168, 1, 0, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 25, 0, 0, 1891, 1892, 7, 25, 0, 0, 1892, 1893, 7, 9, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 16, 0, 0, 1895, 170, 1, 0, 0, 0, 1896, 1897, 7, 19, 0, 0, 1897, 1898, 7, 7, 0, 0, 1898, 172, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 6, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 174, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 13, 0, 0, 1906, 176, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 13, 0, 0, 1909, 1910, 7, 12, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 178, 1, 0, 0, 0, 1913, 1914, 7, 24, 0, 0, 1914, 1915, 7, 6, 0, 0, 1915, 1916, 7, 5, 0, 0, 1916, 1917, 7, 14, 0, 0, 1917, 1918, 7, 17, 0, 0, 1918, 1919, 7, 7, 0, 0, 1919, 1920, 7, 23, 0, 0, 1920, 180, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 13, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 15, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 8, 0, 0, 1928, 182, 1, 0, 0, 0, 1929, 1930, 7, 13, 0, 0, 1930, 1931, 7, 10, 0, 0, 1931, 1932, 7, 25, 0, 0, 1932, 1933, 7, 10, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 7, 0, 0, 1936, 1937, 7, 14, 0, 0, 1937, 1938, 7, 10, 0, 0, 1938, 1939, 7, 9, 0, 0, 1939, 184, 1, 0, 0, 0, 1940, 1941, 7, 13, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 16, 0, 0, 1943, 1944, 7, 22, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 17, 0, 0, 1947, 1948, 7, 7, 0, 0, 1948, 1949, 7, 23, 0, 0, 1949, 186, 1, 0, 0, 0, 1950, 1951, 7, 9, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 6, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 14, 0, 0, 1955, 1956, 7, 16, 0, 0, 1956, 188, 1, 0, 0, 0, 1957, 1958, 7, 9, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 1960, 7, 9, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 19, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 5, 95, 0, 0, 1965, 1966, 7, 22, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 190, 1, 0, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 19, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 192, 1, 0, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 8, 0, 0, 1977, 1978, 7, 15, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 13, 0, 0, 1982, 1983, 7, 17, 0, 0, 1983, 1984, 7, 14, 0, 0, 1984, 194, 1, 0, 0, 0, 1985, 1986, 7, 16, 0, 0, 1986, 1987, 7, 5, 0, 0, 1987, 1988, 7, 18, 0, 0, 1988, 1989, 7, 6, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 196, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 20, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 7, 0, 0, 1995, 198, 1, 0, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 19, 0, 0, 1998, 200, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 13, 0, 0, 2001, 2002, 7, 5, 0, 0, 2002, 2003, 7, 17, 0, 0, 2003, 2004, 7, 6, 0, 0, 2004, 2005, 7, 17, 0, 0, 2005, 2006, 7, 7, 0, 0, 2006, 2007, 7, 23, 0, 0, 2007, 202, 1, 0, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 22, 0, 0, 2011, 2012, 7, 10, 0, 0, 2012, 204, 1, 0, 0, 0, 2013, 2014, 7, 22, 0, 0, 2014, 2015, 7, 7, 0, 0, 2015, 2016, 7, 17, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 206, 1, 0, 0, 0, 2019, 2020, 7, 22, 0, 0, 2020, 2021, 7, 7, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 10, 0, 0, 2025, 208, 1, 0, 0, 0, 2026, 2027, 7, 22, 0, 0, 2027, 2028, 7, 9, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 13, 0, 0, 2030, 210, 1, 0, 0, 0, 2031, 2032, 7, 22, 0, 0, 2032, 2033, 7, 9, 0, 0, 2033, 2034, 7, 17, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 2036, 7, 23, 0, 0, 2036, 212, 1, 0, 0, 0, 2037, 2038, 7, 27, 0, 0, 2038, 2039, 7, 5, 0, 0, 2039, 2040, 7, 13, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 5, 0, 0, 2042, 2043, 7, 12, 0, 0, 2043, 2044, 7, 17, 0, 0, 2044, 2045, 7, 14, 0, 0, 2045, 214, 1, 0, 0, 0, 2046, 2047, 7, 29, 0, 0, 2047, 2048, 7, 20, 0, 0, 2048, 2049, 7, 10, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 216, 1, 0, 0, 0, 2051, 2052, 7, 29, 0, 0, 2052, 2053, 7, 20, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 2056, 7, 10, 0, 0, 2056, 218, 1, 0, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 19, 0, 0, 2062, 2063, 7, 29, 0, 0, 2063, 220, 1, 0, 0, 0, 2064, 2065, 7, 29, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 16, 0, 0, 2067, 2068, 7, 20, 0, 0, 2068, 222, 1, 0, 0, 0, 2069, 2070, 7, 5, 0, 0, 2070, 2071, 7, 22, 0, 0, 2071, 2072, 7, 16, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 5, 0, 0, 2078, 2079, 7, 16, 0, 0, 2079, 2080, 7, 17, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 2082, 7, 7, 0, 0, 2082, 224, 1, 0, 0, 0, 2083, 2084, 7, 18, 0, 0, 2084, 2085, 7, 17, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 13, 0, 0, 2088, 2089, 7, 8, 0, 0, 2089, 226, 1, 0, 0, 0, 2090, 2091, 7, 14, 0, 0, 2091, 2092, 7, 19, 0, 0, 2092, 2093, 7, 6, 0, 0, 2093, 2094, 7, 6, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 14, 0, 0, 2101, 2102, 7, 19, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 14, 0, 0, 2104, 2105, 7, 22, 0, 0, 2105, 2106, 7, 13, 0, 0, 2106, 2107, 7, 13, 0, 0, 2107, 2108, 7, 10, 0, 0, 2108, 2109, 7, 7, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 8, 0, 0, 2112, 230, 1, 0, 0, 0, 2113, 2114, 7, 14, 0, 0, 2114, 2115, 7, 13, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 9, 0, 0, 2117, 2118, 7, 9, 0, 0, 2118, 232, 1, 0, 0, 0, 2119, 2120, 7, 14, 0, 0, 2120, 2121, 7, 22, 0, 0, 2121, 2122, 7, 13, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 10, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 16, 0, 0, 2126, 2127, 5, 95, 0, 0, 2127, 2128, 7, 9, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 20, 0, 0, 2130, 2131, 7, 10, 0, 0, 2131, 2132, 7, 15, 0, 0, 2132, 2133, 7, 5, 0, 0, 2133, 234, 1, 0, 0, 0, 2134, 2135, 7, 25, 0, 0, 2135, 2136, 7, 13, 0, 0, 2136, 2137, 7, 10, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 11, 0, 0, 2139, 2140, 7, 10, 0, 0, 2140, 236, 1, 0, 0, 0, 2141, 2142, 7, 25, 0, 0, 2142, 2143, 7, 22, 0, 0, 2143, 2144, 7, 6, 0, 0, 2144, 2145, 7, 6, 0, 0, 2145, 238, 1, 0, 0, 0, 2146, 2147, 7, 17, 0, 0, 2147, 2148, 7, 6, 0, 0, 2148, 2149, 7, 17, 0, 0, 2149, 2150, 7, 21, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 240, 1, 0, 0, 0, 2152, 2153, 7, 17, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 7, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 242, 1, 0, 0, 0, 2158, 2159, 7, 17, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 244, 1, 0, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 2165, 7, 22, 0, 0, 2165, 2166, 7, 6, 0, 0, 2166, 2167, 7, 6, 0, 0, 2167, 246, 1, 0, 0, 0, 2168, 2169, 7, 30, 0, 0, 2169, 2170, 7, 19, 0, 0, 2170, 2171, 7, 17, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 248, 1, 0, 0, 0, 2173, 2174, 7, 6, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 2176, 7, 25, 0, 0, 2176, 2177, 7, 16, 0, 0, 2177, 250, 1, 0, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 17, 0, 0, 2180, 2181, 7, 21, 0, 0, 2181, 2182, 7, 10, 0, 0, 2182, 252, 1, 0, 0, 0, 2183, 2184, 7, 7, 0, 0, 2184, 2185, 7, 5, 0, 0, 2185, 2186, 7, 16, 0, 0, 2186, 2187, 7, 22, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 5, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 254, 1, 0, 0, 0, 2191, 2192, 7, 7, 0, 0, 2192, 2193, 7, 19, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 2195, 7, 7, 0, 0, 2195, 2196, 7, 22, 0, 0, 2196, 2197, 7, 6, 0, 0, 2197, 2198, 7, 6, 0, 0, 2198, 256, 1, 0, 0, 0, 2199, 2200, 7, 19, 0, 0, 2200, 2201, 7, 22, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 13, 0, 0, 2204, 258, 1, 0, 0, 0, 2205, 2206, 7, 19, 0, 0, 2206, 2207, 7, 27, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 2209, 7, 13, 0, 0, 2209, 260, 1, 0, 0, 0, 2210, 2211, 7, 19, 0, 0, 2211, 2212, 7, 27, 0, 0, 2212, 2213, 7, 10, 0, 0, 2213, 2214, 7, 13, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 2216, 7, 5, 0, 0, 2216, 2217, 7, 24, 0, 0, 2217, 2218, 7, 9, 0, 0, 2218, 262, 1, 0, 0, 0, 2219, 2220, 7, 13, 0, 0, 2220, 2221, 7, 17, 0, 0, 2221, 2222, 7, 23, 0, 0, 2222, 2223, 7, 20, 0, 0, 2223, 2224, 7, 16, 0, 0, 2224, 264, 1, 0, 0, 0, 2225, 2226, 7, 9, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 15, 0, 0, 2228, 2229, 7, 17, 0, 0, 2229, 2230, 7, 6, 0, 0, 2230, 2231, 7, 5, 0, 0, 2231, 2232, 7, 13, 0, 0, 2232, 266, 1, 0, 0, 0, 2233, 2234, 7, 27, 0, 0, 2234, 2235, 7, 10, 0, 0, 2235, 2236, 7, 13, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 2238, 7, 19, 0, 0, 2238, 2239, 7, 9, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 268, 1, 0, 0, 0, 2241, 2242, 7, 5, 0, 0, 2242, 2243, 7, 18, 0, 0, 2243, 2244, 7, 19, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 16, 0, 0, 2246, 270, 1, 0, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 18, 0, 0, 2249, 2250, 7, 9, 0, 0, 2250, 2251, 7, 19, 0, 0, 2251, 2252, 7, 6, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2254, 7, 16, 0, 0, 2254, 2255, 7, 10, 0, 0, 2255, 272, 1, 0, 0, 0, 2256, 2257, 7, 5, 0, 0, 2257, 2258, 7, 14, 0, 0, 2258, 2259, 7, 14, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 9, 0, 0, 2262, 274, 1, 0, 0, 0, 2263, 2264, 7, 5, 0, 0, 2264, 2265, 7, 14, 0, 0, 2265, 2266, 7, 16, 0, 0, 2266, 2267, 7, 17, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 7, 0, 0, 2269, 276, 1, 0, 0, 0, 2270, 2271, 7, 5, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 12, 0, 0, 2273, 278, 1, 0, 0, 0, 2274, 2275, 7, 5, 0, 0, 2275, 2276, 7, 12, 0, 0, 2276, 2277, 7, 15, 0, 0, 2277, 2278, 7, 17, 0, 0, 2278, 2279, 7, 7, 0, 0, 2279, 280, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 25, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 10, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 282, 1, 0, 0, 0, 2286, 2287, 7, 5, 0, 0, 2287, 2288, 7, 23, 0, 0, 2288, 2289, 7, 23, 0, 0, 2289, 2290, 7, 13, 0, 0, 2290, 2291, 7, 10, 0, 0, 2291, 2292, 7, 23, 0, 0, 2292, 2293, 7, 5, 0, 0, 2293, 2294, 7, 16, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 284, 1, 0, 0, 0, 2296, 2297, 7, 5, 0, 0, 2297, 2298, 7, 6, 0, 0, 2298, 2299, 7, 9, 0, 0, 2299, 2300, 7, 19, 0, 0, 2300, 286, 1, 0, 0, 0, 2301, 2302, 7, 5, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 16, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 2306, 7, 13, 0, 0, 2306, 288, 1, 0, 0, 0, 2307, 2308, 7, 5, 0, 0, 2308, 2309, 7, 6, 0, 0, 2309, 2310, 7, 29, 0, 0, 2310, 2311, 7, 5, 0, 0, 2311, 2312, 7, 8, 0, 0, 2312, 2313, 7, 9, 0, 0, 2313, 290, 1, 0, 0, 0, 2314, 2315, 7, 5, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 9, 0, 0, 2317, 2318, 7, 10, 0, 0, 2318, 2319, 7, 13, 0, 0, 2319, 2320, 7, 16, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 19, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 2328, 7, 17, 0, 0, 2328, 2329, 7, 23, 0, 0, 2329, 2330, 7, 7, 0, 0, 2330, 2331, 7, 15, 0, 0, 2331, 2332, 7, 10, 0, 0, 2332, 2333, 7, 7, 0, 0, 2333, 2334, 7, 16, 0, 0, 2334, 294, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 296, 1, 0, 0, 0, 2338, 2339, 7, 5, 0, 0, 2339, 2340, 7, 16, 0, 0, 2340, 2341, 7, 16, 0, 0, 2341, 2342, 7, 13, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 18, 0, 0, 2344, 2345, 7, 22, 0, 0, 2345, 2346, 7, 16, 0, 0, 2346, 2347, 7, 10, 0, 0, 2347, 298, 1, 0, 0, 0, 2348, 2349, 7, 18, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 14, 0, 0, 2351, 2352, 7, 21, 0, 0, 2352, 2353, 7, 29, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 12, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 18, 0, 0, 2358, 2359, 7, 10, 0, 0, 2359, 2360, 7, 25, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 10, 0, 0, 2363, 302, 1, 0, 0, 0, 2364, 2365, 7, 18, 0, 0, 2365, 2366, 7, 10, 0, 0, 2366, 2367, 7, 23, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 7, 0, 0, 2369, 304, 1, 0, 0, 0, 2370, 2371, 7, 18, 0, 0, 2371, 2372, 7, 8, 0, 0, 2372, 306, 1, 0, 0, 0, 2373, 2374, 7, 14, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 20, 0, 0, 2377, 2378, 7, 10, 0, 0, 2378, 308, 1, 0, 0, 0, 2379, 2380, 7, 14, 0, 0, 2380, 2381, 7, 5, 0, 0, 2381, 2382, 7, 6, 0, 0, 2382, 2383, 7, 6, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 12, 0, 0, 2385, 310, 1, 0, 0, 0, 2386, 2387, 7, 14, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 9, 0, 0, 2389, 2390, 7, 14, 0, 0, 2390, 2391, 7, 5, 0, 0, 2391, 2392, 7, 12, 0, 0, 2392, 2393, 7, 10, 0, 0, 2393, 312, 1, 0, 0, 0, 2394, 2395, 7, 14, 0, 0, 2395, 2396, 7, 5, 0, 0, 2396, 2397, 7, 9, 0, 0, 2397, 2398, 7, 14, 0, 0, 2398, 2399, 7, 5, 0, 0, 2399, 2400, 7, 12, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 5, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 19, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 20, 0, 0, 2413, 2414, 7, 5, 0, 0, 2414, 2415, 7, 17, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 318, 1, 0, 0, 0, 2417, 2418, 7, 14, 0, 0, 2418, 2419, 7, 20, 0, 0, 2419, 2420, 7, 5, 0, 0, 2420, 2421, 7, 13, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 10, 0, 0, 2425, 2426, 7, 13, 0, 0, 2426, 2427, 7, 17, 0, 0, 2427, 2428, 7, 9, 0, 0, 2428, 2429, 7, 16, 0, 0, 2429, 2430, 7, 17, 0, 0, 2430, 2431, 7, 14, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 320, 1, 0, 0, 0, 2433, 2434, 7, 14, 0, 0, 2434, 2435, 7, 20, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 21, 0, 0, 2438, 2439, 7, 24, 0, 0, 2439, 2440, 7, 19, 0, 0, 2440, 2441, 7, 17, 0, 0, 2441, 2442, 7, 7, 0, 0, 2442, 2443, 7, 16, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 6, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 9, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 6, 0, 0, 2452, 2453, 7, 19, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 10, 0, 0, 2455, 326, 1, 0, 0, 0, 2456, 2457, 7, 14, 0, 0, 2457, 2458, 7, 6, 0, 0, 2458, 2459, 7, 22, 0, 0, 2459, 2460, 7, 9, 0, 0, 2460, 2461, 7, 16, 0, 0, 2461, 2462, 7, 10, 0, 0, 2462, 2463, 7, 13, 0, 0, 2463, 328, 1, 0, 0, 0, 2464, 2465, 7, 14, 0, 0, 2465, 2466, 7, 19, 0, 0, 2466, 2467, 7, 15, 0, 0, 2467, 2468, 7, 15, 0, 0, 2468, 2469, 7, 10, 0, 0, 2469, 2470, 7, 7, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 330, 1, 0, 0, 0, 2472, 2473, 7, 14, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 15, 0, 0, 2475, 2476, 7, 15, 0, 0, 2476, 2477, 7, 10, 0, 0, 2477, 2478, 7, 7, 0, 0, 2478, 2479, 7, 16, 0, 0, 2479, 2480, 7, 9, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 17, 0, 0, 2486, 2487, 7, 16, 0, 0, 2487, 334, 1, 0, 0, 0, 2488, 2489, 7, 14, 0, 0, 2489, 2490, 7, 19, 0, 0, 2490, 2491, 7, 15, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 17, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 16, 0, 0, 2495, 2496, 7, 10, 0, 0, 2496, 2497, 7, 12, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 7, 0, 0, 2501, 2502, 7, 25, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 23, 0, 0, 2504, 2505, 7, 22, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 5, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 2509, 7, 17, 0, 0, 2509, 2510, 7, 19, 0, 0, 2510, 2511, 7, 7, 0, 0, 2511, 338, 1, 0, 0, 0, 2512, 2513, 7, 14, 0, 0, 2513, 2514, 7, 19, 0, 0, 2514, 2515, 7, 7, 0, 0, 2515, 2516, 7, 7, 0, 0, 2516, 2517, 7, 10, 0, 0, 2517, 2518, 7, 14, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 19, 0, 0, 2521, 2522, 7, 7, 0, 0, 2522, 340, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 7, 0, 0, 2526, 2527, 7, 9, 0, 0, 2527, 2528, 7, 16, 0, 0, 2528, 2529, 7, 13, 0, 0, 2529, 2530, 7, 5, 0, 0, 2530, 2531, 7, 17, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 9, 0, 0, 2534, 342, 1, 0, 0, 0, 2535, 2536, 7, 14, 0, 0, 2536, 2537, 7, 19, 0, 0, 2537, 2538, 7, 7, 0, 0, 2538, 2539, 7, 16, 0, 0, 2539, 2540, 7, 10, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 16, 0, 0, 2542, 344, 1, 0, 0, 0, 2543, 2544, 7, 14, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 2547, 7, 16, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 22, 0, 0, 2550, 2551, 7, 10, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 27, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 13, 0, 0, 2558, 2559, 7, 9, 0, 0, 2559, 2560, 7, 17, 0, 0, 2560, 2561, 7, 19, 0, 0, 2561, 2562, 7, 7, 0, 0, 2562, 348, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 24, 0, 0, 2566, 2567, 7, 8, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 9, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 352, 1, 0, 0, 0, 2573, 2574, 7, 14, 0, 0, 2574, 2575, 7, 9, 0, 0, 2575, 2576, 7, 27, 0, 0, 2576, 354, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 22, 0, 0, 2579, 2580, 7, 13, 0, 0, 2580, 2581, 7, 9, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 356, 1, 0, 0, 0, 2584, 2585, 7, 14, 0, 0, 2585, 2586, 7, 8, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 6, 0, 0, 2588, 2589, 7, 10, 0, 0, 2589, 358, 1, 0, 0, 0, 2590, 2591, 7, 12, 0, 0, 2591, 2592, 7, 5, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 5, 0, 0, 2594, 360, 1, 0, 0, 0, 2595, 2596, 7, 12, 0, 0, 2596, 2597, 7, 5, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 5, 0, 0, 2599, 2600, 7, 18, 0, 0, 2600, 2601, 7, 5, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 10, 0, 0, 2603, 362, 1, 0, 0, 0, 2604, 2605, 7, 12, 0, 0, 2605, 2606, 7, 5, 0, 0, 2606, 2607, 7, 8, 0, 0, 2607, 364, 1, 0, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 10, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 2612, 7, 6, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 19, 0, 0, 2614, 2615, 7, 14, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 16, 0, 0, 2617, 2618, 7, 10, 0, 0, 2618, 366, 1, 0, 0, 0, 2619, 2620, 7, 12, 0, 0, 2620, 2621, 7, 10, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 13, 0, 0, 2625, 2626, 7, 10, 0, 0, 2626, 368, 1, 0, 0, 0, 2627, 2628, 7, 12, 0, 0, 2628, 2629, 7, 10, 0, 0, 2629, 2630, 7, 25, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 22, 0, 0, 2632, 2633, 7, 6, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 9, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 25, 0, 0, 2639, 2640, 7, 10, 0, 0, 2640, 2641, 7, 13, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 372, 1, 0, 0, 0, 2645, 2646, 7, 12, 0, 0, 2646, 2647, 7, 10, 0, 0, 2647, 2648, 7, 25, 0, 0, 2648, 2649, 7, 17, 0, 0, 2649, 2650, 7, 7, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 2652, 7, 13, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 10, 0, 0, 2659, 376, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 10, 0, 0, 2662, 2663, 7, 6, 0, 0, 2663, 2664, 7, 17, 0, 0, 2664, 2665, 7, 15, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 16, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 15, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 13, 0, 0, 2679, 2680, 7, 9, 0, 0, 2680, 380, 1, 0, 0, 0, 2681, 2682, 7, 12, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 14, 0, 0, 2684, 2685, 7, 16, 0, 0, 2685, 2686, 7, 17, 0, 0, 2686, 2687, 7, 19, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 17, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 18, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 10, 0, 0, 2699, 384, 1, 0, 0, 0, 2700, 2701, 7, 12, 0, 0, 2701, 2702, 7, 17, 0, 0, 2702, 2703, 7, 9, 0, 0, 2703, 2704, 7, 14, 0, 0, 2704, 2705, 7, 5, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 386, 1, 0, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 2710, 7, 19, 0, 0, 2710, 2711, 7, 14, 0, 0, 2711, 2712, 7, 22, 0, 0, 2712, 2713, 7, 15, 0, 0, 2713, 2714, 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 16, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 19, 0, 0, 2719, 2720, 7, 15, 0, 0, 2720, 2721, 7, 5, 0, 0, 2721, 2722, 7, 17, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 19, 0, 0, 2726, 2727, 7, 22, 0, 0, 2727, 2728, 7, 18, 0, 0, 2728, 2729, 7, 6, 0, 0, 2729, 2730, 7, 10, 0, 0, 2730, 392, 1, 0, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 19, 0, 0, 2734, 2735, 7, 24, 0, 0, 2735, 394, 1, 0, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 20, 0, 0, 2740, 396, 1, 0, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 2743, 7, 7, 0, 0, 2743, 2744, 7, 5, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 398, 1, 0, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 14, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 17, 0, 0, 2754, 2755, 7, 7, 0, 0, 2755, 2756, 7, 23, 0, 0, 2756, 400, 1, 0, 0, 0, 2757, 2758, 7, 10, 0, 0, 2758, 2759, 7, 7, 0, 0, 2759, 2760, 7, 14, 0, 0, 2760, 2761, 7, 13, 0, 0, 2761, 2762, 7, 8, 0, 0, 2762, 2763, 7, 24, 0, 0, 2763, 2764, 7, 16, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 402, 1, 0, 0, 0, 2767, 2768, 7, 10, 0, 0, 2768, 2769, 7, 7, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 15, 0, 0, 2771, 404, 1, 0, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 2774, 7, 9, 0, 0, 2774, 2775, 7, 14, 0, 0, 2775, 2776, 7, 5, 0, 0, 2776, 2777, 7, 24, 0, 0, 2777, 2778, 7, 10, 0, 0, 2778, 406, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 27, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 7, 0, 0, 2783, 2784, 7, 16, 0, 0, 2784, 408, 1, 0, 0, 0, 2785, 2786, 7, 10, 0, 0, 2786, 2787, 7, 26, 0, 0, 2787, 2788, 7, 14, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 22, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 410, 1, 0, 0, 0, 2793, 2794, 7, 10, 0, 0, 2794, 2795, 7, 26, 0, 0, 2795, 2796, 7, 14, 0, 0, 2796, 2797, 7, 6, 0, 0, 2797, 2798, 7, 22, 0, 0, 2798, 2799, 7, 12, 0, 0, 2799, 2800, 7, 17, 0, 0, 2800, 2801, 7, 7, 0, 0, 2801, 2802, 7, 23, 0, 0, 2802, 412, 1, 0, 0, 0, 2803, 2804, 7, 10, 0, 0, 2804, 2805, 7, 26, 0, 0, 2805, 2806, 7, 14, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 2808, 7, 22, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 17, 0, 0, 2810, 2811, 7, 27, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 414, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 26, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 14, 0, 0, 2817, 2818, 7, 22, 0, 0, 2818, 2819, 7, 16, 0, 0, 2819, 2820, 7, 10, 0, 0, 2820, 416, 1, 0, 0, 0, 2821, 2822, 7, 10, 0, 0, 2822, 2823, 7, 26, 0, 0, 2823, 2824, 7, 24, 0, 0, 2824, 2825, 7, 6, 0, 0, 2825, 2826, 7, 5, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 7, 0, 0, 2828, 418, 1, 0, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 26, 0, 0, 2831, 2832, 7, 16, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 9, 0, 0, 2835, 2836, 7, 17, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 7, 0, 0, 2838, 420, 1, 0, 0, 0, 2839, 2840, 7, 10, 0, 0, 2840, 2841, 7, 26, 0, 0, 2841, 2842, 7, 16, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 2844, 7, 13, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 2846, 7, 5, 0, 0, 2846, 2847, 7, 6, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 25, 0, 0, 2849, 2850, 7, 5, 0, 0, 2850, 2851, 7, 15, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 8, 0, 0, 2854, 424, 1, 0, 0, 0, 2855, 2856, 7, 25, 0, 0, 2856, 2857, 7, 17, 0, 0, 2857, 2858, 7, 13, 0, 0, 2858, 2859, 7, 9, 0, 0, 2859, 2860, 7, 16, 0, 0, 2860, 426, 1, 0, 0, 0, 2861, 2862, 7, 25, 0, 0, 2862, 2863, 7, 19, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 2865, 7, 6, 0, 0, 2865, 2866, 7, 19, 0, 0, 2866, 2867, 7, 29, 0, 0, 2867, 2868, 7, 17, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 23, 0, 0, 2870, 428, 1, 0, 0, 0, 2871, 2872, 7, 25, 0, 0, 2872, 2873, 7, 19, 0, 0, 2873, 2874, 7, 13, 0, 0, 2874, 2875, 7, 14, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 430, 1, 0, 0, 0, 2877, 2878, 7, 25, 0, 0, 2878, 2879, 7, 19, 0, 0, 2879, 2880, 7, 13, 0, 0, 2880, 2881, 7, 29, 0, 0, 2881, 2882, 7, 5, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 12, 0, 0, 2884, 432, 1, 0, 0, 0, 2885, 2886, 7, 25, 0, 0, 2886, 2887, 7, 22, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 14, 0, 0, 2889, 2890, 7, 16, 0, 0, 2890, 2891, 7, 17, 0, 0, 2891, 2892, 7, 19, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 22, 0, 0, 2896, 2897, 7, 7, 0, 0, 2897, 2898, 7, 14, 0, 0, 2898, 2899, 7, 16, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, 7, 9, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 2906, 7, 6, 0, 0, 2906, 2907, 7, 19, 0, 0, 2907, 2908, 7, 18, 0, 0, 2908, 2909, 7, 5, 0, 0, 2909, 2910, 7, 6, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 23, 0, 0, 2912, 2913, 7, 13, 0, 0, 2913, 2914, 7, 5, 0, 0, 2914, 2915, 7, 7, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 10, 0, 0, 2917, 2918, 7, 12, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 20, 0, 0, 2920, 2921, 7, 5, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 12, 0, 0, 2923, 2924, 7, 6, 0, 0, 2924, 2925, 7, 10, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 442, 1, 0, 0, 0, 2927, 2928, 7, 20, 0, 0, 2928, 2929, 7, 10, 0, 0, 2929, 2930, 7, 5, 0, 0, 2930, 2931, 7, 12, 0, 0, 2931, 2932, 7, 10, 0, 0, 2932, 2933, 7, 13, 0, 0, 2933, 444, 1, 0, 0, 0, 2934, 2935, 7, 20, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 6, 0, 0, 2937, 2938, 7, 12, 0, 0, 2938, 446, 1, 0, 0, 0, 2939, 2940, 7, 20, 0, 0, 2940, 2941, 7, 19, 0, 0, 2941, 2942, 7, 22, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 448, 1, 0, 0, 0, 2944, 2945, 7, 17, 0, 0, 2945, 2946, 7, 12, 0, 0, 2946, 2947, 7, 10, 0, 0, 2947, 2948, 7, 7, 0, 0, 2948, 2949, 7, 16, 0, 0, 2949, 2950, 7, 17, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 8, 0, 0, 2952, 450, 1, 0, 0, 0, 2953, 2954, 7, 17, 0, 0, 2954, 2955, 7, 25, 0, 0, 2955, 452, 1, 0, 0, 0, 2956, 2957, 7, 17, 0, 0, 2957, 2958, 7, 15, 0, 0, 2958, 2959, 7, 15, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 5, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 10, 0, 0, 2965, 454, 1, 0, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 15, 0, 0, 2968, 2969, 7, 15, 0, 0, 2969, 2970, 7, 22, 0, 0, 2970, 2971, 7, 16, 0, 0, 2971, 2972, 7, 5, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 6, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 456, 1, 0, 0, 0, 2976, 2977, 7, 17, 0, 0, 2977, 2978, 7, 15, 0, 0, 2978, 2979, 7, 24, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 17, 0, 0, 2981, 2982, 7, 14, 0, 0, 2982, 2983, 7, 17, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 458, 1, 0, 0, 0, 2985, 2986, 7, 17, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 14, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 22, 0, 0, 2990, 2991, 7, 12, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 7, 0, 0, 2993, 2994, 7, 23, 0, 0, 2994, 460, 1, 0, 0, 0, 2995, 2996, 7, 17, 0, 0, 2996, 2997, 7, 7, 0, 0, 2997, 2998, 7, 14, 0, 0, 2998, 2999, 7, 13, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 10, 0, 0, 3002, 3003, 7, 7, 0, 0, 3003, 3004, 7, 16, 0, 0, 3004, 462, 1, 0, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 7, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 10, 0, 0, 3009, 3010, 7, 26, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 12, 0, 0, 3014, 3015, 7, 10, 0, 0, 3015, 3016, 7, 26, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 9, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 7, 0, 0, 3021, 3022, 7, 20, 0, 0, 3022, 3023, 7, 10, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 17, 0, 0, 3025, 3026, 7, 16, 0, 0, 3026, 468, 1, 0, 0, 0, 3027, 3028, 7, 17, 0, 0, 3028, 3029, 7, 7, 0, 0, 3029, 3030, 7, 20, 0, 0, 3030, 3031, 7, 10, 0, 0, 3031, 3032, 7, 13, 0, 0, 3032, 3033, 7, 17, 0, 0, 3033, 3034, 7, 16, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 17, 0, 0, 3040, 3041, 7, 7, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 472, 1, 0, 0, 0, 3043, 3044, 7, 17, 0, 0, 3044, 3045, 7, 7, 0, 0, 3045, 3046, 7, 9, 0, 0, 3046, 3047, 7, 10, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 9, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 17, 0, 0, 3052, 3053, 7, 27, 0, 0, 3053, 3054, 7, 10, 0, 0, 3054, 474, 1, 0, 0, 0, 3055, 3056, 7, 17, 0, 0, 3056, 3057, 7, 7, 0, 0, 3057, 3058, 7, 9, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 3060, 7, 13, 0, 0, 3060, 3061, 7, 16, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 9, 0, 0, 3065, 3066, 7, 16, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 5, 0, 0, 3068, 3069, 7, 12, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 27, 0, 0, 3073, 3074, 7, 19, 0, 0, 3074, 3075, 7, 21, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 9, 0, 0, 3080, 3081, 7, 19, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 5, 0, 0, 3083, 3084, 7, 16, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 19, 0, 0, 3086, 3087, 7, 7, 0, 0, 3087, 482, 1, 0, 0, 0, 3088, 3089, 7, 21, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 8, 0, 0, 3091, 484, 1, 0, 0, 0, 3092, 3093, 7, 6, 0, 0, 3093, 3094, 7, 5, 0, 0, 3094, 3095, 7, 18, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 6, 0, 0, 3097, 486, 1, 0, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 7, 0, 0, 3101, 3102, 7, 23, 0, 0, 3102, 3103, 7, 22, 0, 0, 3103, 3104, 7, 5, 0, 0, 3104, 3105, 7, 23, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 488, 1, 0, 0, 0, 3107, 3108, 7, 6, 0, 0, 3108, 3109, 7, 5, 0, 0, 3109, 3110, 7, 13, 0, 0, 3110, 3111, 7, 23, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 490, 1, 0, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 3115, 7, 5, 0, 0, 3115, 3116, 7, 9, 0, 0, 3116, 3117, 7, 16, 0, 0, 3117, 492, 1, 0, 0, 0, 3118, 3119, 7, 6, 0, 0, 3119, 3120, 7, 10, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 21, 0, 0, 3122, 3123, 7, 24, 0, 0, 3123, 3124, 7, 13, 0, 0, 3124, 3125, 7, 19, 0, 0, 3125, 3126, 7, 19, 0, 0, 3126, 3127, 7, 25, 0, 0, 3127, 494, 1, 0, 0, 0, 3128, 3129, 7, 6, 0, 0, 3129, 3130, 7, 10, 0, 0, 3130, 3131, 7, 27, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 496, 1, 0, 0, 0, 3134, 3135, 7, 6, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 9, 0, 0, 3137, 3138, 7, 16, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 7, 0, 0, 3140, 498, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 12, 0, 0, 3145, 500, 1, 0, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 19, 0, 0, 3148, 3149, 7, 14, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 502, 1, 0, 0, 0, 3152, 3153, 7, 6, 0, 0, 3153, 3154, 7, 19, 0, 0, 3154, 3155, 7, 14, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 16, 0, 0, 3157, 3158, 7, 17, 0, 0, 3158, 3159, 7, 19, 0, 0, 3159, 3160, 7, 7, 0, 0, 3160, 504, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 19, 0, 0, 3163, 3164, 7, 14, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 506, 1, 0, 0, 0, 3166, 3167, 7, 15, 0, 0, 3167, 3168, 7, 5, 0, 0, 3168, 3169, 7, 24, 0, 0, 3169, 3170, 7, 24, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, 7, 23, 0, 0, 3173, 508, 1, 0, 0, 0, 3174, 3175, 7, 15, 0, 0, 3175, 3176, 7, 5, 0, 0, 3176, 3177, 7, 16, 0, 0, 3177, 3178, 7, 14, 0, 0, 3178, 3179, 7, 20, 0, 0, 3179, 510, 1, 0, 0, 0, 3180, 3181, 7, 15, 0, 0, 3181, 3182, 7, 5, 0, 0, 3182, 3183, 7, 16, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 20, 0, 0, 3185, 3186, 7, 10, 0, 0, 3186, 3187, 7, 12, 0, 0, 3187, 512, 1, 0, 0, 0, 3188, 3189, 7, 15, 0, 0, 3189, 3190, 7, 5, 0, 0, 3190, 3191, 7, 16, 0, 0, 3191, 3192, 7, 10, 0, 0, 3192, 3193, 7, 13, 0, 0, 3193, 3194, 7, 17, 0, 0, 3194, 3195, 7, 5, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 17, 0, 0, 3197, 3198, 7, 11, 0, 0, 3198, 3199, 7, 10, 0, 0, 3199, 3200, 7, 12, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 26, 0, 0, 3204, 3205, 7, 27, 0, 0, 3205, 3206, 7, 5, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 22, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 516, 1, 0, 0, 0, 3210, 3211, 7, 15, 0, 0, 3211, 3212, 7, 10, 0, 0, 3212, 3213, 7, 13, 0, 0, 3213, 3214, 7, 23, 0, 0, 3214, 3215, 7, 10, 0, 0, 3215, 518, 1, 0, 0, 0, 3216, 3217, 7, 15, 0, 0, 3217, 3218, 7, 17, 0, 0, 3218, 3219, 7, 7, 0, 0, 3219, 3220, 7, 22, 0, 0, 3220, 3221, 7, 16, 0, 0, 3221, 3222, 7, 10, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 17, 0, 0, 3225, 3226, 7, 7, 0, 0, 3226, 3227, 7, 27, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 6, 0, 0, 3229, 3230, 7, 22, 0, 0, 3230, 3231, 7, 10, 0, 0, 3231, 522, 1, 0, 0, 0, 3232, 3233, 7, 15, 0, 0, 3233, 3234, 7, 19, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 3236, 7, 10, 0, 0, 3236, 524, 1, 0, 0, 0, 3237, 3238, 7, 15, 0, 0, 3238, 3239, 7, 19, 0, 0, 3239, 3240, 7, 7, 0, 0, 3240, 3241, 7, 16, 0, 0, 3241, 3242, 7, 20, 0, 0, 3242, 526, 1, 0, 0, 0, 3243, 3244, 7, 15, 0, 0, 3244, 3245, 7, 19, 0, 0, 3245, 3246, 7, 27, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 528, 1, 0, 0, 0, 3248, 3249, 7, 7, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 3251, 7, 15, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 530, 1, 0, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 15, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 532, 1, 0, 0, 0, 3259, 3260, 7, 7, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 3262, 7, 26, 0, 0, 3262, 3263, 7, 16, 0, 0, 3263, 534, 1, 0, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 19, 0, 0, 3266, 536, 1, 0, 0, 0, 3267, 3268, 7, 7, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 16, 0, 0, 3270, 3271, 7, 20, 0, 0, 3271, 3272, 7, 17, 0, 0, 3272, 3273, 7, 7, 0, 0, 3273, 3274, 7, 23, 0, 0, 3274, 538, 1, 0, 0, 0, 3275, 3276, 7, 7, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 16, 0, 0, 3278, 3279, 7, 17, 0, 0, 3279, 3280, 7, 25, 0, 0, 3280, 3281, 7, 8, 0, 0, 3281, 540, 1, 0, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 19, 0, 0, 3284, 3285, 7, 29, 0, 0, 3285, 3286, 7, 5, 0, 0, 3286, 3287, 7, 17, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 542, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 22, 0, 0, 3291, 3292, 7, 6, 0, 0, 3292, 3293, 7, 6, 0, 0, 3293, 3294, 7, 9, 0, 0, 3294, 544, 1, 0, 0, 0, 3295, 3296, 7, 19, 0, 0, 3296, 3297, 7, 18, 0, 0, 3297, 3298, 7, 30, 0, 0, 3298, 3299, 7, 10, 0, 0, 3299, 3300, 7, 14, 0, 0, 3300, 3301, 7, 16, 0, 0, 3301, 546, 1, 0, 0, 0, 3302, 3303, 7, 19, 0, 0, 3303, 3304, 7, 25, 0, 0, 3304, 548, 1, 0, 0, 0, 3305, 3306, 7, 19, 0, 0, 3306, 3307, 7, 25, 0, 0, 3307, 3308, 7, 25, 0, 0, 3308, 550, 1, 0, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 17, 0, 0, 3311, 3312, 7, 12, 0, 0, 3312, 3313, 7, 9, 0, 0, 3313, 552, 1, 0, 0, 0, 3314, 3315, 7, 19, 0, 0, 3315, 3316, 7, 24, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 3318, 7, 13, 0, 0, 3318, 3319, 7, 5, 0, 0, 3319, 3320, 7, 16, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 13, 0, 0, 3322, 554, 1, 0, 0, 0, 3323, 3324, 7, 19, 0, 0, 3324, 3325, 7, 24, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 3327, 7, 17, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 7, 0, 0, 3329, 556, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 24, 0, 0, 3332, 3333, 7, 16, 0, 0, 3333, 3334, 7, 17, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 7, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 558, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 29, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 12, 0, 0, 3343, 560, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 29, 0, 0, 3346, 3347, 7, 7, 0, 0, 3347, 3348, 7, 10, 0, 0, 3348, 3349, 7, 13, 0, 0, 3349, 562, 1, 0, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 5, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, 7, 13, 0, 0, 3356, 564, 1, 0, 0, 0, 3357, 3358, 7, 24, 0, 0, 3358, 3359, 7, 5, 0, 0, 3359, 3360, 7, 13, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 5, 0, 0, 3363, 3364, 7, 6, 0, 0, 3364, 566, 1, 0, 0, 0, 3365, 3366, 7, 24, 0, 0, 3366, 3367, 7, 5, 0, 0, 3367, 3368, 7, 13, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 16, 0, 0, 3371, 3372, 7, 17, 0, 0, 3372, 3373, 7, 19, 0, 0, 3373, 3374, 7, 7, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 17, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 23, 0, 0, 3382, 570, 1, 0, 0, 0, 3383, 3384, 7, 24, 0, 0, 3384, 3385, 7, 5, 0, 0, 3385, 3386, 7, 9, 0, 0, 3386, 3387, 7, 9, 0, 0, 3387, 3388, 7, 29, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 13, 0, 0, 3390, 3391, 7, 12, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 7, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 574, 1, 0, 0, 0, 3398, 3399, 7, 24, 0, 0, 3399, 3400, 7, 13, 0, 0, 3400, 3401, 7, 10, 0, 0, 3401, 3402, 7, 14, 0, 0, 3402, 3403, 7, 10, 0, 0, 3403, 3404, 7, 12, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 23, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 13, 0, 0, 3410, 3411, 7, 10, 0, 0, 3411, 3412, 7, 24, 0, 0, 3412, 3413, 7, 5, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 3415, 7, 10, 0, 0, 3415, 578, 1, 0, 0, 0, 3416, 3417, 7, 24, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 10, 0, 0, 3419, 3420, 7, 24, 0, 0, 3420, 3421, 7, 5, 0, 0, 3421, 3422, 7, 13, 0, 0, 3422, 3423, 7, 10, 0, 0, 3423, 3424, 7, 12, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 10, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 27, 0, 0, 3432, 3433, 7, 10, 0, 0, 3433, 582, 1, 0, 0, 0, 3434, 3435, 7, 24, 0, 0, 3435, 3436, 7, 13, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 584, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 13, 0, 0, 3442, 3443, 7, 17, 0, 0, 3443, 3444, 7, 27, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 6, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 23, 0, 0, 3448, 3449, 7, 10, 0, 0, 3449, 3450, 7, 9, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 14, 0, 0, 3455, 3456, 7, 10, 0, 0, 3456, 3457, 7, 12, 0, 0, 3457, 3458, 7, 22, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 6, 0, 0, 3461, 588, 1, 0, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 3465, 7, 19, 0, 0, 3465, 3466, 7, 14, 0, 0, 3466, 3467, 7, 10, 0, 0, 3467, 3468, 7, 12, 0, 0, 3468, 3469, 7, 22, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 590, 1, 0, 0, 0, 3472, 3473, 7, 24, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 19, 0, 0, 3475, 3476, 7, 23, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 15, 0, 0, 3479, 592, 1, 0, 0, 0, 3480, 3481, 7, 28, 0, 0, 3481, 3482, 7, 22, 0, 0, 3482, 3483, 7, 19, 0, 0, 3483, 3484, 7, 16, 0, 0, 3484, 3485, 7, 10, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 5, 0, 0, 3488, 3489, 7, 7, 0, 0, 3489, 3490, 7, 23, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 596, 1, 0, 0, 0, 3492, 3493, 7, 13, 0, 0, 3493, 3494, 7, 10, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 12, 0, 0, 3496, 598, 1, 0, 0, 0, 3497, 3498, 7, 13, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 5, 0, 0, 3500, 3501, 7, 9, 0, 0, 3501, 3502, 7, 9, 0, 0, 3502, 3503, 7, 17, 0, 0, 3503, 3504, 7, 23, 0, 0, 3504, 3505, 7, 7, 0, 0, 3505, 600, 1, 0, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 20, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 14, 0, 0, 3512, 3513, 7, 21, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 14, 0, 0, 3517, 3518, 7, 22, 0, 0, 3518, 3519, 7, 13, 0, 0, 3519, 3520, 7, 9, 0, 0, 3520, 3521, 7, 17, 0, 0, 3521, 3522, 7, 27, 0, 0, 3522, 3523, 7, 10, 0, 0, 3523, 604, 1, 0, 0, 0, 3524, 3525, 7, 13, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 3527, 7, 25, 0, 0, 3527, 606, 1, 0, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 10, 0, 0, 3530, 3531, 7, 25, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 9, 0, 0, 3534, 3535, 7, 20, 0, 0, 3535, 608, 1, 0, 0, 0, 3536, 3537, 7, 13, 0, 0, 3537, 3538, 7, 10, 0, 0, 3538, 3539, 7, 17, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 3541, 7, 12, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 26, 0, 0, 3543, 610, 1, 0, 0, 0, 3544, 3545, 7, 13, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 6, 0, 0, 3547, 3548, 7, 5, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 17, 0, 0, 3550, 3551, 7, 27, 0, 0, 3551, 3552, 7, 10, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 6, 0, 0, 3556, 3557, 7, 10, 0, 0, 3557, 3558, 7, 5, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 10, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 7, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 15, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 616, 1, 0, 0, 0, 3568, 3569, 7, 13, 0, 0, 3569, 3570, 7, 10, 0, 0, 3570, 3571, 7, 24, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 18, 0, 0, 3576, 3577, 7, 6, 0, 0, 3577, 3578, 7, 10, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 24, 0, 0, 3582, 3583, 7, 6, 0, 0, 3583, 3584, 7, 5, 0, 0, 3584, 3585, 7, 14, 0, 0, 3585, 3586, 7, 10, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 24, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 17, 0, 0, 3592, 3593, 7, 14, 0, 0, 3593, 3594, 7, 5, 0, 0, 3594, 622, 1, 0, 0, 0, 3595, 3596, 7, 13, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 9, 0, 0, 3598, 3599, 7, 10, 0, 0, 3599, 3600, 7, 16, 0, 0, 3600, 624, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 9, 0, 0, 3604, 3605, 7, 16, 0, 0, 3605, 3606, 7, 5, 0, 0, 3606, 3607, 7, 13, 0, 0, 3607, 3608, 7, 16, 0, 0, 3608, 626, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 9, 0, 0, 3612, 3613, 7, 16, 0, 0, 3613, 3614, 7, 13, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 14, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 16, 0, 0, 3621, 3622, 7, 22, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 7, 0, 0, 3624, 3625, 7, 9, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 27, 0, 0, 3629, 3630, 7, 19, 0, 0, 3630, 3631, 7, 21, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 632, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 19, 0, 0, 3635, 3636, 7, 6, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 634, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 19, 0, 0, 3640, 3641, 7, 6, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 18, 0, 0, 3643, 3644, 7, 5, 0, 0, 3644, 3645, 7, 14, 0, 0, 3645, 3646, 7, 21, 0, 0, 3646, 636, 1, 0, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 19, 0, 0, 3649, 3650, 7, 29, 0, 0, 3650, 3651, 7, 9, 0, 0, 3651, 638, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 22, 0, 0, 3654, 3655, 7, 6, 0, 0, 3655, 3656, 7, 10, 0, 0, 3656, 640, 1, 0, 0, 0, 3657, 3658, 7, 9, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 3660, 7, 27, 0, 0, 3660, 3661, 7, 10, 0, 0, 3661, 3662, 7, 24, 0, 0, 3662, 3663, 7, 19, 0, 0, 3663, 3664, 7, 17, 0, 0, 3664, 3665, 7, 7, 0, 0, 3665, 3666, 7, 16, 0, 0, 3666, 642, 1, 0, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 3669, 7, 14, 0, 0, 3669, 3670, 7, 20, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 15, 0, 0, 3672, 3673, 7, 5, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 14, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 646, 1, 0, 0, 0, 3681, 3682, 7, 9, 0, 0, 3682, 3683, 7, 10, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 13, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 648, 1, 0, 0, 0, 3688, 3689, 7, 9, 0, 0, 3689, 3690, 7, 10, 0, 0, 3690, 3691, 7, 14, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 7, 0, 0, 3693, 3694, 7, 12, 0, 0, 3694, 650, 1, 0, 0, 0, 3695, 3696, 7, 9, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 3698, 7, 14, 0, 0, 3698, 3699, 7, 22, 0, 0, 3699, 3700, 7, 13, 0, 0, 3700, 3701, 7, 17, 0, 0, 3701, 3702, 7, 16, 0, 0, 3702, 3703, 7, 8, 0, 0, 3703, 652, 1, 0, 0, 0, 3704, 3705, 7, 9, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 28, 0, 0, 3707, 3708, 7, 22, 0, 0, 3708, 3709, 7, 10, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 10, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 28, 0, 0, 3716, 3717, 7, 22, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 7, 0, 0, 3719, 3720, 7, 14, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 13, 0, 0, 3726, 3727, 7, 17, 0, 0, 3727, 3728, 7, 5, 0, 0, 3728, 3729, 7, 6, 0, 0, 3729, 3730, 7, 17, 0, 0, 3730, 3731, 7, 11, 0, 0, 3731, 3732, 7, 5, 0, 0, 3732, 3733, 7, 18, 0, 0, 3733, 3734, 7, 6, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 658, 1, 0, 0, 0, 3736, 3737, 7, 9, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 13, 0, 0, 3739, 3740, 7, 27, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 660, 1, 0, 0, 0, 3743, 3744, 7, 9, 0, 0, 3744, 3745, 7, 10, 0, 0, 3745, 3746, 7, 9, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 17, 0, 0, 3748, 3749, 7, 19, 0, 0, 3749, 3750, 7, 7, 0, 0, 3750, 662, 1, 0, 0, 0, 3751, 3752, 7, 9, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 16, 0, 0, 3754, 664, 1, 0, 0, 0, 3755, 3756, 7, 9, 0, 0, 3756, 3757, 7, 20, 0, 0, 3757, 3758, 7, 5, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 666, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 20, 0, 0, 3763, 3764, 7, 19, 0, 0, 3764, 3765, 7, 29, 0, 0, 3765, 668, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 17, 0, 0, 3768, 3769, 7, 15, 0, 0, 3769, 3770, 7, 24, 0, 0, 3770, 3771, 7, 6, 0, 0, 3771, 3772, 7, 10, 0, 0, 3772, 670, 1, 0, 0, 0, 3773, 3774, 7, 9, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 5, 0, 0, 3776, 3777, 7, 24, 0, 0, 3777, 3778, 7, 9, 0, 0, 3778, 3779, 7, 20, 0, 0, 3779, 3780, 7, 19, 0, 0, 3780, 3781, 7, 16, 0, 0, 3781, 672, 1, 0, 0, 0, 3782, 3783, 7, 9, 0, 0, 3783, 3784, 7, 16, 0, 0, 3784, 3785, 7, 5, 0, 0, 3785, 3786, 7, 18, 0, 0, 3786, 3787, 7, 6, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 674, 1, 0, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 16, 0, 0, 3791, 3792, 7, 5, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 3794, 7, 12, 0, 0, 3794, 3795, 7, 5, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 7, 0, 0, 3798, 3799, 7, 10, 0, 0, 3799, 676, 1, 0, 0, 0, 3800, 3801, 7, 9, 0, 0, 3801, 3802, 7, 16, 0, 0, 3802, 3803, 7, 5, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 16, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 16, 0, 0, 3810, 3811, 7, 10, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 3814, 7, 7, 0, 0, 3814, 3815, 7, 16, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 16, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 16, 0, 0, 3820, 3821, 7, 17, 0, 0, 3821, 3822, 7, 9, 0, 0, 3822, 3823, 7, 16, 0, 0, 3823, 3824, 7, 17, 0, 0, 3824, 3825, 7, 14, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 682, 1, 0, 0, 0, 3827, 3828, 7, 9, 0, 0, 3828, 3829, 7, 16, 0, 0, 3829, 3830, 7, 12, 0, 0, 3830, 3831, 7, 17, 0, 0, 3831, 3832, 7, 7, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 12, 0, 0, 3836, 3837, 7, 19, 0, 0, 3837, 3838, 7, 22, 0, 0, 3838, 3839, 7, 16, 0, 0, 3839, 686, 1, 0, 0, 0, 3840, 3841, 7, 9, 0, 0, 3841, 3842, 7, 16, 0, 0, 3842, 3843, 7, 19, 0, 0, 3843, 3844, 7, 13, 0, 0, 3844, 3845, 7, 5, 0, 0, 3845, 3846, 7, 23, 0, 0, 3846, 3847, 7, 10, 0, 0, 3847, 688, 1, 0, 0, 0, 3848, 3849, 7, 9, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 3851, 7, 13, 0, 0, 3851, 3852, 7, 17, 0, 0, 3852, 3853, 7, 14, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 690, 1, 0, 0, 0, 3855, 3856, 7, 9, 0, 0, 3856, 3857, 7, 16, 0, 0, 3857, 3858, 7, 13, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 24, 0, 0, 3860, 692, 1, 0, 0, 0, 3861, 3862, 7, 9, 0, 0, 3862, 3863, 7, 8, 0, 0, 3863, 3864, 7, 9, 0, 0, 3864, 3865, 7, 17, 0, 0, 3865, 3866, 7, 12, 0, 0, 3866, 694, 1, 0, 0, 0, 3867, 3868, 7, 9, 0, 0, 3868, 3869, 7, 8, 0, 0, 3869, 3870, 7, 9, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 3873, 7, 15, 0, 0, 3873, 696, 1, 0, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 5, 0, 0, 3876, 3877, 7, 18, 0, 0, 3877, 3878, 7, 6, 0, 0, 3878, 3879, 7, 10, 0, 0, 3879, 3880, 7, 9, 0, 0, 3880, 698, 1, 0, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 5, 0, 0, 3883, 3884, 7, 18, 0, 0, 3884, 3885, 7, 6, 0, 0, 3885, 3886, 7, 10, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 24, 0, 0, 3888, 3889, 7, 5, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 10, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 10, 0, 0, 3894, 3895, 7, 15, 0, 0, 3895, 3896, 7, 24, 0, 0, 3896, 702, 1, 0, 0, 0, 3897, 3898, 7, 16, 0, 0, 3898, 3899, 7, 10, 0, 0, 3899, 3900, 7, 15, 0, 0, 3900, 3901, 7, 24, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 5, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 3905, 7, 10, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 3909, 7, 15, 0, 0, 3909, 3910, 7, 24, 0, 0, 3910, 3911, 7, 19, 0, 0, 3911, 3912, 7, 13, 0, 0, 3912, 3913, 7, 5, 0, 0, 3913, 3914, 7, 13, 0, 0, 3914, 3915, 7, 8, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 10, 0, 0, 3918, 3919, 7, 26, 0, 0, 3919, 3920, 7, 16, 0, 0, 3920, 708, 1, 0, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 7, 0, 0, 3925, 3926, 7, 9, 0, 0, 3926, 3927, 7, 5, 0, 0, 3927, 3928, 7, 14, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 19, 0, 0, 3931, 3932, 7, 7, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 13, 0, 0, 3935, 3936, 7, 17, 0, 0, 3936, 3937, 7, 23, 0, 0, 3937, 3938, 7, 23, 0, 0, 3938, 3939, 7, 10, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 13, 0, 0, 3943, 3944, 7, 22, 0, 0, 3944, 3945, 7, 7, 0, 0, 3945, 3946, 7, 14, 0, 0, 3946, 3947, 7, 5, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 10, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 22, 0, 0, 3953, 3954, 7, 9, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 12, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 8, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 10, 0, 0, 3962, 718, 1, 0, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 8, 0, 0, 3965, 3966, 7, 24, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 9, 0, 0, 3968, 720, 1, 0, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 7, 0, 0, 3971, 3972, 7, 18, 0, 0, 3972, 3973, 7, 19, 0, 0, 3973, 3974, 7, 22, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 3976, 7, 12, 0, 0, 3976, 3977, 7, 10, 0, 0, 3977, 3978, 7, 12, 0, 0, 3978, 722, 1, 0, 0, 0, 3979, 3980, 7, 22, 0, 0, 3980, 3981, 7, 7, 0, 0, 3981, 3982, 7, 14, 0, 0, 3982, 3983, 7, 19, 0, 0, 3983, 3984, 7, 15, 0, 0, 3984, 3985, 7, 15, 0, 0, 3985, 3986, 7, 17, 0, 0, 3986, 3987, 7, 16, 0, 0, 3987, 3988, 7, 16, 0, 0, 3988, 3989, 7, 10, 0, 0, 3989, 3990, 7, 12, 0, 0, 3990, 724, 1, 0, 0, 0, 3991, 3992, 7, 22, 0, 0, 3992, 3993, 7, 7, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 7, 0, 0, 3995, 3996, 7, 14, 0, 0, 3996, 3997, 7, 13, 0, 0, 3997, 3998, 7, 8, 0, 0, 3998, 3999, 7, 24, 0, 0, 3999, 4000, 7, 16, 0, 0, 4000, 4001, 7, 10, 0, 0, 4001, 4002, 7, 12, 0, 0, 4002, 726, 1, 0, 0, 0, 4003, 4004, 7, 22, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 4006, 7, 21, 0, 0, 4006, 4007, 7, 7, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 29, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 728, 1, 0, 0, 0, 4011, 4012, 7, 22, 0, 0, 4012, 4013, 7, 7, 0, 0, 4013, 4014, 7, 6, 0, 0, 4014, 4015, 7, 17, 0, 0, 4015, 4016, 7, 9, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 7, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 6, 0, 0, 4023, 4024, 7, 19, 0, 0, 4024, 4025, 7, 23, 0, 0, 4025, 4026, 7, 23, 0, 0, 4026, 4027, 7, 10, 0, 0, 4027, 4028, 7, 12, 0, 0, 4028, 732, 1, 0, 0, 0, 4029, 4030, 7, 22, 0, 0, 4030, 4031, 7, 7, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 17, 0, 0, 4033, 4034, 7, 6, 0, 0, 4034, 734, 1, 0, 0, 0, 4035, 4036, 7, 22, 0, 0, 4036, 4037, 7, 24, 0, 0, 4037, 4038, 7, 12, 0, 0, 4038, 4039, 7, 5, 0, 0, 4039, 4040, 7, 16, 0, 0, 4040, 4041, 7, 10, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 27, 0, 0, 4043, 4044, 7, 5, 0, 0, 4044, 4045, 7, 14, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 15, 0, 0, 4048, 738, 1, 0, 0, 0, 4049, 4050, 7, 27, 0, 0, 4050, 4051, 7, 5, 0, 0, 4051, 4052, 7, 6, 0, 0, 4052, 4053, 7, 17, 0, 0, 4053, 4054, 7, 12, 0, 0, 4054, 740, 1, 0, 0, 0, 4055, 4056, 7, 27, 0, 0, 4056, 4057, 7, 5, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 12, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 16, 0, 0, 4062, 4063, 7, 10, 0, 0, 4063, 742, 1, 0, 0, 0, 4064, 4065, 7, 27, 0, 0, 4065, 4066, 7, 5, 0, 0, 4066, 4067, 7, 6, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 12, 0, 0, 4069, 4070, 7, 5, 0, 0, 4070, 4071, 7, 16, 0, 0, 4071, 4072, 7, 19, 0, 0, 4072, 4073, 7, 13, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 13, 0, 0, 4077, 4078, 7, 8, 0, 0, 4078, 4079, 7, 17, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 23, 0, 0, 4081, 746, 1, 0, 0, 0, 4082, 4083, 7, 27, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 4085, 7, 13, 0, 0, 4085, 4086, 7, 9, 0, 0, 4086, 4087, 7, 17, 0, 0, 4087, 4088, 7, 19, 0, 0, 4088, 4089, 7, 7, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 17, 0, 0, 4092, 4093, 7, 10, 0, 0, 4093, 4094, 7, 29, 0, 0, 4094, 750, 1, 0, 0, 0, 4095, 4096, 7, 27, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 6, 0, 0, 4098, 4099, 7, 5, 0, 0, 4099, 4100, 7, 16, 0, 0, 4100, 4101, 7, 17, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 10, 0, 0, 4103, 752, 1, 0, 0, 0, 4104, 4105, 7, 29, 0, 0, 4105, 4106, 7, 20, 0, 0, 4106, 4107, 7, 17, 0, 0, 4107, 4108, 7, 16, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 9, 0, 0, 4110, 4111, 7, 24, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 14, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 29, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 16, 0, 0, 4118, 4119, 7, 20, 0, 0, 4119, 4120, 7, 19, 0, 0, 4120, 4121, 7, 22, 0, 0, 4121, 4122, 7, 16, 0, 0, 4122, 756, 1, 0, 0, 0, 4123, 4124, 7, 29, 0, 0, 4124, 4125, 7, 19, 0, 0, 4125, 4126, 7, 13, 0, 0, 4126, 4127, 7, 21, 0, 0, 4127, 758, 1, 0, 0, 0, 4128, 4129, 7, 29, 0, 0, 4129, 4130, 7, 13, 0, 0, 4130, 4131, 7, 5, 0, 0, 4131, 4132, 7, 24, 0, 0, 4132, 4133, 7, 24, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 13, 0, 0, 4135, 760, 1, 0, 0, 0, 4136, 4137, 7, 29, 0, 0, 4137, 4138, 7, 13, 0, 0, 4138, 4139, 7, 17, 0, 0, 4139, 4140, 7, 16, 0, 0, 4140, 4141, 7, 10, 0, 0, 4141, 762, 1, 0, 0, 0, 4142, 4143, 7, 26, 0, 0, 4143, 4144, 7, 15, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 764, 1, 0, 0, 0, 4146, 4147, 7, 8, 0, 0, 4147, 4148, 7, 10, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 766, 1, 0, 0, 0, 4151, 4152, 7, 8, 0, 0, 4152, 4153, 7, 10, 0, 0, 4153, 4154, 7, 9, 0, 0, 4154, 768, 1, 0, 0, 0, 4155, 4156, 7, 11, 0, 0, 4156, 4157, 7, 19, 0, 0, 4157, 4158, 7, 7, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 770, 1, 0, 0, 0, 4160, 4161, 7, 18, 0, 0, 4161, 4162, 7, 10, 0, 0, 4162, 4163, 7, 16, 0, 0, 4163, 4164, 7, 29, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 7, 0, 0, 4167, 772, 1, 0, 0, 0, 4168, 4169, 7, 18, 0, 0, 4169, 4170, 7, 17, 0, 0, 4170, 4171, 7, 23, 0, 0, 4171, 4172, 7, 17, 0, 0, 4172, 4173, 7, 7, 0, 0, 4173, 4174, 7, 16, 0, 0, 4174, 774, 1, 0, 0, 0, 4175, 4176, 7, 18, 0, 0, 4176, 4177, 7, 17, 0, 0, 4177, 4178, 7, 16, 0, 0, 4178, 776, 1, 0, 0, 0, 4179, 4180, 7, 18, 0, 0, 4180, 4181, 7, 19, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 6, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 7, 0, 0, 4186, 778, 1, 0, 0, 0, 4187, 4188, 7, 14, 0, 0, 4188, 4189, 7, 20, 0, 0, 4189, 4190, 7, 5, 0, 0, 4190, 4191, 7, 13, 0, 0, 4191, 780, 1, 0, 0, 0, 4192, 4193, 7, 14, 0, 0, 4193, 4194, 7, 20, 0, 0, 4194, 4195, 7, 5, 0, 0, 4195, 4196, 7, 13, 0, 0, 4196, 4197, 7, 5, 0, 0, 4197, 4198, 7, 14, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 13, 0, 0, 4201, 782, 1, 0, 0, 0, 4202, 4203, 7, 14, 0, 0, 4203, 4204, 7, 19, 0, 0, 4204, 4205, 7, 5, 0, 0, 4205, 4206, 7, 6, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 9, 0, 0, 4208, 4209, 7, 14, 0, 0, 4209, 4210, 7, 10, 0, 0, 4210, 784, 1, 0, 0, 0, 4211, 4212, 7, 12, 0, 0, 4212, 4213, 7, 10, 0, 0, 4213, 4214, 7, 14, 0, 0, 4214, 786, 1, 0, 0, 0, 4215, 4216, 7, 12, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 17, 0, 0, 4219, 4220, 7, 15, 0, 0, 4220, 4221, 7, 5, 0, 0, 4221, 4222, 7, 6, 0, 0, 4222, 788, 1, 0, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 26, 0, 0, 4225, 4226, 7, 17, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 4228, 7, 16, 0, 0, 4228, 4229, 7, 9, 0, 0, 4229, 790, 1, 0, 0, 0, 4230, 4231, 7, 10, 0, 0, 4231, 4232, 7, 26, 0, 0, 4232, 4233, 7, 16, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 4235, 7, 5, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 16, 0, 0, 4237, 792, 1, 0, 0, 0, 4238, 4239, 7, 25, 0, 0, 4239, 4240, 7, 6, 0, 0, 4240, 4241, 7, 19, 0, 0, 4241, 4242, 7, 5, 0, 0, 4242, 4243, 7, 16, 0, 0, 4243, 794, 1, 0, 0, 0, 4244, 4245, 7, 23, 0, 0, 4245, 4246, 7, 13, 0, 0, 4246, 4247, 7, 10, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 16, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 16, 0, 0, 4252, 796, 1, 0, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 7, 0, 0, 4255, 4256, 7, 19, 0, 0, 4256, 4257, 7, 22, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 798, 1, 0, 0, 0, 4259, 4260, 7, 17, 0, 0, 4260, 4261, 7, 7, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 800, 1, 0, 0, 0, 4263, 4264, 7, 17, 0, 0, 4264, 4265, 7, 7, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 23, 0, 0, 4268, 4269, 7, 10, 0, 0, 4269, 4270, 7, 13, 0, 0, 4270, 802, 1, 0, 0, 0, 4271, 4272, 7, 17, 0, 0, 4272, 4273, 7, 7, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 13, 0, 0, 4276, 4277, 7, 27, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 6, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 9, 0, 0, 4284, 4285, 7, 16, 0, 0, 4285, 806, 1, 0, 0, 0, 4286, 4287, 7, 7, 0, 0, 4287, 4288, 7, 5, 0, 0, 4288, 4289, 7, 16, 0, 0, 4289, 4290, 7, 17, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 7, 0, 0, 4292, 4293, 7, 5, 0, 0, 4293, 4294, 7, 6, 0, 0, 4294, 808, 1, 0, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 14, 0, 0, 4297, 4298, 7, 20, 0, 0, 4298, 4299, 7, 5, 0, 0, 4299, 4300, 7, 13, 0, 0, 4300, 810, 1, 0, 0, 0, 4301, 4302, 7, 7, 0, 0, 4302, 4303, 7, 19, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 10, 0, 0, 4305, 812, 1, 0, 0, 0, 4306, 4307, 7, 7, 0, 0, 4307, 4308, 7, 22, 0, 0, 4308, 4309, 7, 6, 0, 0, 4309, 4310, 7, 6, 0, 0, 4310, 4311, 7, 17, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 814, 1, 0, 0, 0, 4313, 4314, 7, 7, 0, 0, 4314, 4315, 7, 22, 0, 0, 4315, 4316, 7, 15, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 13, 0, 0, 4318, 4319, 7, 17, 0, 0, 4319, 4320, 7, 14, 0, 0, 4320, 816, 1, 0, 0, 0, 4321, 4322, 7, 19, 0, 0, 4322, 4323, 7, 27, 0, 0, 4323, 4324, 7, 10, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 5, 0, 0, 4327, 4328, 7, 8, 0, 0, 4328, 818, 1, 0, 0, 0, 4329, 4330, 7, 24, 0, 0, 4330, 4331, 7, 19, 0, 0, 4331, 4332, 7, 9, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 16, 0, 0, 4334, 4335, 7, 17, 0, 0, 4335, 4336, 7, 19, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 24, 0, 0, 4339, 4340, 7, 13, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 14, 0, 0, 4342, 4343, 7, 17, 0, 0, 4343, 4344, 7, 9, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 10, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 824, 1, 0, 0, 0, 4353, 4354, 7, 13, 0, 0, 4354, 4355, 7, 19, 0, 0, 4355, 4356, 7, 29, 0, 0, 4356, 826, 1, 0, 0, 0, 4357, 4358, 7, 9, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 16, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 25, 0, 0, 4362, 828, 1, 0, 0, 0, 4363, 4364, 7, 9, 0, 0, 4364, 4365, 7, 15, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 4368, 7, 6, 0, 0, 4368, 4369, 7, 17, 0, 0, 4369, 4370, 7, 7, 0, 0, 4370, 4371, 7, 16, 0, 0, 4371, 830, 1, 0, 0, 0, 4372, 4373, 7, 9, 0, 0, 4373, 4374, 7, 22, 0, 0, 4374, 4375, 7, 18, 0, 0, 4375, 4376, 7, 9, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 13, 0, 0, 4378, 4379, 7, 17, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 23, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 16, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 15, 0, 0, 4385, 4386, 7, 10, 0, 0, 4386, 834, 1, 0, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 4389, 7, 17, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 10, 0, 0, 4391, 4392, 7, 9, 0, 0, 4392, 4393, 7, 16, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 15, 0, 0, 4395, 4396, 7, 24, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 16, 0, 0, 4398, 4399, 7, 13, 0, 0, 4399, 4400, 7, 10, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 838, 1, 0, 0, 0, 4403, 4404, 7, 16, 0, 0, 4404, 4405, 7, 13, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 840, 1, 0, 0, 0, 4408, 4409, 7, 27, 0, 0, 4409, 4410, 7, 5, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 22, 0, 0, 4412, 4413, 7, 10, 0, 0, 4413, 4414, 7, 9, 0, 0, 4414, 842, 1, 0, 0, 0, 4415, 4416, 7, 27, 0, 0, 4416, 4417, 7, 5, 0, 0, 4417, 4418, 7, 13, 0, 0, 4418, 4419, 7, 14, 0, 0, 4419, 4420, 7, 20, 0, 0, 4420, 4421, 7, 5, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 844, 1, 0, 0, 0, 4423, 4424, 7, 26, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 6, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 18, 0, 0, 4432, 4433, 7, 22, 0, 0, 4433, 4434, 7, 16, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 9, 0, 0, 4436, 846, 1, 0, 0, 0, 4437, 4438, 7, 26, 0, 0, 4438, 4439, 7, 15, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 14, 0, 0, 4441, 4442, 7, 19, 0, 0, 4442, 4443, 7, 15, 0, 0, 4443, 4444, 7, 15, 0, 0, 4444, 4445, 7, 10, 0, 0, 4445, 4446, 7, 7, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 848, 1, 0, 0, 0, 4448, 4449, 7, 26, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 4451, 7, 6, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 23, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 850, 1, 0, 0, 0, 4455, 4456, 7, 26, 0, 0, 4456, 4457, 7, 15, 0, 0, 4457, 4458, 7, 6, 0, 0, 4458, 4459, 5, 95, 0, 0, 4459, 4460, 7, 17, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 4462, 5, 95, 0, 0, 4462, 4463, 7, 29, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 6, 0, 0, 4466, 4467, 5, 95, 0, 0, 4467, 4468, 7, 25, 0, 0, 4468, 4469, 7, 19, 0, 0, 4469, 4470, 7, 13, 0, 0, 4470, 4471, 7, 15, 0, 0, 4471, 4472, 7, 10, 0, 0, 4472, 4473, 7, 12, 0, 0, 4473, 852, 1, 0, 0, 0, 4474, 4475, 7, 26, 0, 0, 4475, 4476, 7, 15, 0, 0, 4476, 4477, 7, 6, 0, 0, 4477, 4478, 5, 95, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 9, 0, 0, 4480, 4481, 5, 95, 0, 0, 4481, 4482, 7, 29, 0, 0, 4482, 4483, 7, 10, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 6, 0, 0, 4485, 4486, 5, 95, 0, 0, 4486, 4487, 7, 25, 0, 0, 4487, 4488, 7, 19, 0, 0, 4488, 4489, 7, 13, 0, 0, 4489, 4490, 7, 15, 0, 0, 4490, 4491, 7, 10, 0, 0, 4491, 4492, 7, 12, 0, 0, 4492, 4493, 5, 95, 0, 0, 4493, 4494, 7, 12, 0, 0, 4494, 4495, 7, 19, 0, 0, 4495, 4496, 7, 14, 0, 0, 4496, 4497, 7, 22, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 7, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 854, 1, 0, 0, 0, 4502, 4503, 7, 26, 0, 0, 4503, 4504, 7, 15, 0, 0, 4504, 4505, 7, 6, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 17, 0, 0, 4507, 4508, 7, 9, 0, 0, 4508, 4509, 5, 95, 0, 0, 4509, 4510, 7, 29, 0, 0, 4510, 4511, 7, 10, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 5, 95, 0, 0, 4514, 4515, 7, 25, 0, 0, 4515, 4516, 7, 19, 0, 0, 4516, 4517, 7, 13, 0, 0, 4517, 4518, 7, 15, 0, 0, 4518, 4519, 7, 10, 0, 0, 4519, 4520, 7, 12, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 14, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 7, 0, 0, 4524, 4525, 7, 16, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 7, 0, 0, 4527, 4528, 7, 16, 0, 0, 4528, 856, 1, 0, 0, 0, 4529, 4530, 7, 26, 0, 0, 4530, 4531, 7, 24, 0, 0, 4531, 4532, 7, 5, 0, 0, 4532, 4533, 7, 16, 0, 0, 4533, 4534, 7, 20, 0, 0, 4534, 858, 1, 0, 0, 0, 4535, 4536, 7, 26, 0, 0, 4536, 4537, 7, 24, 0, 0, 4537, 4538, 7, 5, 0, 0, 4538, 4539, 7, 16, 0, 0, 4539, 4540, 7, 20, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 26, 0, 0, 4543, 4544, 7, 17, 0, 0, 4544, 4545, 7, 9, 0, 0, 4545, 4546, 7, 16, 0, 0, 4546, 4547, 7, 9, 0, 0, 4547, 860, 1, 0, 0, 0, 4548, 4549, 7, 26, 0, 0, 4549, 4550, 7, 15, 0, 0, 4550, 4551, 7, 6, 0, 0, 4551, 4552, 7, 14, 0, 0, 4552, 4553, 7, 19, 0, 0, 4553, 4554, 7, 7, 0, 0, 4554, 4555, 7, 14, 0, 0, 4555, 4556, 7, 5, 0, 0, 4556, 4557, 7, 16, 0, 0, 4557, 862, 1, 0, 0, 0, 4558, 4559, 7, 26, 0, 0, 4559, 4560, 7, 15, 0, 0, 4560, 4561, 7, 6, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 6, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 15, 0, 0, 4565, 4566, 7, 10, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 864, 1, 0, 0, 0, 4569, 4570, 7, 26, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 6, 0, 0, 4572, 4573, 7, 10, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 17, 0, 0, 4575, 4576, 7, 9, 0, 0, 4576, 4577, 7, 16, 0, 0, 4577, 4578, 7, 9, 0, 0, 4578, 866, 1, 0, 0, 0, 4579, 4580, 7, 26, 0, 0, 4580, 4581, 7, 15, 0, 0, 4581, 4582, 7, 6, 0, 0, 4582, 4583, 7, 25, 0, 0, 4583, 4584, 7, 19, 0, 0, 4584, 4585, 7, 13, 0, 0, 4585, 4586, 7, 10, 0, 0, 4586, 4587, 7, 9, 0, 0, 4587, 4588, 7, 16, 0, 0, 4588, 868, 1, 0, 0, 0, 4589, 4590, 7, 26, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 6, 0, 0, 4592, 4593, 7, 24, 0, 0, 4593, 4594, 7, 5, 0, 0, 4594, 4595, 7, 13, 0, 0, 4595, 4596, 7, 9, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 870, 1, 0, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 6, 0, 0, 4601, 4602, 7, 24, 0, 0, 4602, 4603, 7, 17, 0, 0, 4603, 872, 1, 0, 0, 0, 4604, 4605, 7, 26, 0, 0, 4605, 4606, 7, 15, 0, 0, 4606, 4607, 7, 6, 0, 0, 4607, 4608, 7, 13, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 19, 0, 0, 4610, 4611, 7, 16, 0, 0, 4611, 874, 1, 0, 0, 0, 4612, 4613, 7, 26, 0, 0, 4613, 4614, 7, 15, 0, 0, 4614, 4615, 7, 6, 0, 0, 4615, 4616, 7, 9, 0, 0, 4616, 4617, 7, 10, 0, 0, 4617, 4618, 7, 13, 0, 0, 4618, 4619, 7, 17, 0, 0, 4619, 4620, 7, 5, 0, 0, 4620, 4621, 7, 6, 0, 0, 4621, 4622, 7, 17, 0, 0, 4622, 4623, 7, 11, 0, 0, 4623, 4624, 7, 10, 0, 0, 4624, 876, 1, 0, 0, 0, 4625, 4626, 7, 14, 0, 0, 4626, 4627, 7, 5, 0, 0, 4627, 4628, 7, 6, 0, 0, 4628, 4629, 7, 6, 0, 0, 4629, 878, 1, 0, 0, 0, 4630, 4631, 7, 14, 0, 0, 4631, 4632, 7, 22, 0, 0, 4632, 4633, 7, 13, 0, 0, 4633, 4634, 7, 13, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 7, 0, 0, 4636, 4637, 7, 16, 0, 0, 4637, 880, 1, 0, 0, 0, 4638, 4639, 7, 5, 0, 0, 4639, 4640, 7, 16, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 4642, 7, 5, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 20, 0, 0, 4644, 882, 1, 0, 0, 0, 4645, 4646, 7, 12, 0, 0, 4646, 4647, 7, 10, 0, 0, 4647, 4648, 7, 16, 0, 0, 4648, 4649, 7, 5, 0, 0, 4649, 4650, 7, 14, 0, 0, 4650, 4651, 7, 20, 0, 0, 4651, 884, 1, 0, 0, 0, 4652, 4653, 7, 10, 0, 0, 4653, 4654, 7, 26, 0, 0, 4654, 4655, 7, 24, 0, 0, 4655, 4656, 7, 13, 0, 0, 4656, 4657, 7, 10, 0, 0, 4657, 4658, 7, 9, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 17, 0, 0, 4660, 4661, 7, 19, 0, 0, 4661, 4662, 7, 7, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 23, 0, 0, 4664, 4665, 7, 10, 0, 0, 4665, 4666, 7, 7, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 5, 0, 0, 4669, 4670, 7, 16, 0, 0, 4670, 4671, 7, 10, 0, 0, 4671, 4672, 7, 12, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 19, 0, 0, 4675, 4676, 7, 23, 0, 0, 4676, 4677, 7, 23, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 12, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 9, 0, 0, 4681, 4682, 7, 16, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 13, 0, 0, 4684, 4685, 7, 10, 0, 0, 4685, 4686, 7, 12, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 17, 0, 0, 4688, 4689, 7, 7, 0, 0, 4689, 4690, 7, 14, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 22, 0, 0, 4692, 4693, 7, 12, 0, 0, 4693, 4694, 7, 10, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 13, 0, 0, 4696, 4697, 7, 19, 0, 0, 4697, 4698, 7, 22, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 17, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 896, 1, 0, 0, 0, 4703, 4704, 7, 16, 0, 0, 4704, 4705, 7, 13, 0, 0, 4705, 4706, 7, 5, 0, 0, 4706, 4707, 7, 7, 0, 0, 4707, 4708, 7, 9, 0, 0, 4708, 4709, 7, 25, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 15, 0, 0, 4712, 898, 1, 0, 0, 0, 4713, 4714, 7, 17, 0, 0, 4714, 4715, 7, 15, 0, 0, 4715, 4716, 7, 24, 0, 0, 4716, 4717, 7, 19, 0, 0, 4717, 4718, 7, 13, 0, 0, 4718, 4719, 7, 16, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 24, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 6, 0, 0, 4723, 4724, 7, 17, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 8, 0, 0, 4726, 902, 1, 0, 0, 0, 4727, 4728, 7, 15, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 4730, 7, 16, 0, 0, 4730, 4731, 7, 20, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 12, 0, 0, 4733, 904, 1, 0, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 10, 0, 0, 4736, 4737, 7, 25, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 7, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 23, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 7, 0, 0, 4747, 4748, 7, 10, 0, 0, 4748, 4749, 7, 29, 0, 0, 4749, 908, 1, 0, 0, 0, 4750, 4751, 7, 19, 0, 0, 4751, 4752, 7, 6, 0, 0, 4752, 4753, 7, 12, 0, 0, 4753, 910, 1, 0, 0, 0, 4754, 4755, 7, 27, 0, 0, 4755, 4756, 7, 5, 0, 0, 4756, 4757, 7, 6, 0, 0, 4757, 4758, 7, 22, 0, 0, 4758, 4759, 7, 10, 0, 0, 4759, 912, 1, 0, 0, 0, 4760, 4761, 7, 9, 0, 0, 4761, 4762, 7, 22, 0, 0, 4762, 4763, 7, 18, 0, 0, 4763, 4764, 7, 9, 0, 0, 4764, 4765, 7, 14, 0, 0, 4765, 4766, 7, 13, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 24, 0, 0, 4768, 4769, 7, 16, 0, 0, 4769, 4770, 7, 17, 0, 0, 4770, 4771, 7, 19, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 914, 1, 0, 0, 0, 4773, 4774, 7, 24, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 18, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 14, 0, 0, 4779, 4780, 7, 5, 0, 0, 4780, 4781, 7, 16, 0, 0, 4781, 4782, 7, 17, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 16, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 10, 0, 0, 4790, 4791, 7, 7, 0, 0, 4791, 4792, 7, 12, 0, 0, 4792, 920, 1, 0, 0, 0, 4793, 4794, 7, 13, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 22, 0, 0, 4796, 4797, 7, 16, 0, 0, 4797, 4798, 7, 17, 0, 0, 4798, 4799, 7, 7, 0, 0, 4799, 4800, 7, 10, 0, 0, 4800, 4801, 7, 9, 0, 0, 4801, 922, 1, 0, 0, 0, 4802, 4803, 7, 9, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 20, 0, 0, 4805, 4806, 7, 10, 0, 0, 4806, 4807, 7, 15, 0, 0, 4807, 4808, 7, 5, 0, 0, 4808, 4809, 7, 9, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 19, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 12, 0, 0, 4816, 4817, 7, 22, 0, 0, 4817, 4818, 7, 13, 0, 0, 4818, 4819, 7, 10, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 926, 1, 0, 0, 0, 4821, 4822, 7, 17, 0, 0, 4822, 4823, 7, 7, 0, 0, 4823, 4824, 7, 24, 0, 0, 4824, 4825, 7, 22, 0, 0, 4825, 4826, 7, 16, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 22, 0, 0, 4829, 4830, 7, 24, 0, 0, 4830, 4831, 7, 24, 0, 0, 4831, 4832, 7, 19, 0, 0, 4832, 4833, 7, 13, 0, 0, 4833, 4834, 7, 16, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 5, 0, 0, 4837, 4838, 7, 13, 0, 0, 4838, 4839, 7, 5, 0, 0, 4839, 4840, 7, 6, 0, 0, 4840, 4841, 7, 6, 0, 0, 4841, 4842, 7, 10, 0, 0, 4842, 4843, 7, 6, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 28, 0, 0, 4846, 4847, 7, 6, 0, 0, 4847, 934, 1, 0, 0, 0, 4848, 4849, 7, 12, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 24, 0, 0, 4851, 4852, 7, 10, 0, 0, 4852, 4853, 7, 7, 0, 0, 4853, 4854, 7, 12, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 936, 1, 0, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 27, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 13, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 17, 0, 0, 4862, 4863, 7, 12, 0, 0, 4863, 4864, 7, 17, 0, 0, 4864, 4865, 7, 7, 0, 0, 4865, 4866, 7, 23, 0, 0, 4866, 938, 1, 0, 0, 0, 4867, 4868, 7, 14, 0, 0, 4868, 4869, 7, 19, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 25, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 4873, 7, 17, 0, 0, 4873, 4874, 7, 14, 0, 0, 4874, 4875, 7, 16, 0, 0, 4875, 940, 1, 0, 0, 0, 4876, 4877, 7, 9, 0, 0, 4877, 4878, 7, 21, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 24, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 4883, 7, 19, 0, 0, 4883, 4884, 7, 14, 0, 0, 4884, 4885, 7, 21, 0, 0, 4885, 4886, 7, 10, 0, 0, 4886, 4887, 7, 12, 0, 0, 4887, 944, 1, 0, 0, 0, 4888, 4889, 7, 16, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 10, 0, 0, 4891, 4892, 7, 9, 0, 0, 4892, 946, 1, 0, 0, 0, 4893, 4894, 7, 13, 0, 0, 4894, 4895, 7, 19, 0, 0, 4895, 4896, 7, 6, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 24, 0, 0, 4899, 948, 1, 0, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 18, 0, 0, 4903, 4904, 7, 10, 0, 0, 4904, 950, 1, 0, 0, 0, 4905, 4906, 7, 23, 0, 0, 4906, 4907, 7, 13, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 22, 0, 0, 4909, 4910, 7, 24, 0, 0, 4910, 4911, 7, 17, 0, 0, 4911, 4912, 7, 7, 0, 0, 4912, 4913, 7, 23, 0, 0, 4913, 952, 1, 0, 0, 0, 4914, 4915, 7, 9, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 16, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 954, 1, 0, 0, 0, 4919, 4920, 7, 16, 0, 0, 4920, 4921, 7, 5, 0, 0, 4921, 4922, 7, 18, 0, 0, 4922, 4923, 7, 6, 0, 0, 4923, 4924, 7, 10, 0, 0, 4924, 4925, 7, 9, 0, 0, 4925, 4926, 7, 5, 0, 0, 4926, 4927, 7, 15, 0, 0, 4927, 4928, 7, 24, 0, 0, 4928, 4929, 7, 6, 0, 0, 4929, 4930, 7, 10, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 19, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 12, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 7, 0, 0, 4936, 4937, 7, 5, 0, 0, 4937, 4938, 7, 6, 0, 0, 4938, 4939, 7, 17, 0, 0, 4939, 4940, 7, 16, 0, 0, 4940, 4941, 7, 8, 0, 0, 4941, 958, 1, 0, 0, 0, 4942, 4943, 7, 26, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 16, 0, 0, 4946, 4947, 7, 5, 0, 0, 4947, 4948, 7, 18, 0, 0, 4948, 4949, 7, 6, 0, 0, 4949, 4950, 7, 10, 0, 0, 4950, 960, 1, 0, 0, 0, 4951, 4952, 7, 14, 0, 0, 4952, 4953, 7, 19, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 22, 0, 0, 4955, 4956, 7, 15, 0, 0, 4956, 4957, 7, 7, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 7, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 15, 0, 0, 4965, 4966, 7, 10, 0, 0, 4966, 4967, 7, 9, 0, 0, 4967, 4968, 7, 24, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 14, 0, 0, 4970, 4971, 7, 10, 0, 0, 4971, 4972, 7, 9, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 13, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 29, 0, 0, 4976, 4977, 7, 16, 0, 0, 4977, 4978, 7, 8, 0, 0, 4978, 4979, 7, 24, 0, 0, 4979, 4980, 7, 10, 0, 0, 4980, 966, 1, 0, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 19, 0, 0, 4983, 4984, 7, 13, 0, 0, 4984, 4985, 7, 15, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 17, 0, 0, 4988, 4989, 7, 11, 0, 0, 4989, 4990, 7, 10, 0, 0, 4990, 4991, 7, 12, 0, 0, 4991, 968, 1, 0, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 17, 0, 0, 4994, 4995, 7, 16, 0, 0, 4995, 4996, 7, 20, 0, 0, 4996, 4997, 7, 17, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 970, 1, 0, 0, 0, 4999, 5000, 7, 25, 0, 0, 5000, 5001, 7, 17, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 16, 0, 0, 5003, 5004, 7, 10, 0, 0, 5004, 5005, 7, 13, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 23, 0, 0, 5007, 5008, 7, 13, 0, 0, 5008, 5009, 7, 19, 0, 0, 5009, 5010, 7, 22, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 9, 0, 0, 5012, 974, 1, 0, 0, 0, 5013, 5014, 7, 19, 0, 0, 5014, 5015, 7, 16, 0, 0, 5015, 5016, 7, 20, 0, 0, 5016, 5017, 7, 10, 0, 0, 5017, 5018, 7, 13, 0, 0, 5018, 5019, 7, 9, 0, 0, 5019, 976, 1, 0, 0, 0, 5020, 5021, 7, 7, 0, 0, 5021, 5022, 7, 25, 0, 0, 5022, 5023, 7, 14, 0, 0, 5023, 978, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 25, 0, 0, 5026, 5027, 7, 12, 0, 0, 5027, 980, 1, 0, 0, 0, 5028, 5029, 7, 7, 0, 0, 5029, 5030, 7, 25, 0, 0, 5030, 5031, 7, 21, 0, 0, 5031, 5032, 7, 14, 0, 0, 5032, 982, 1, 0, 0, 0, 5033, 5034, 7, 7, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 21, 0, 0, 5036, 5037, 7, 12, 0, 0, 5037, 984, 1, 0, 0, 0, 5038, 5039, 7, 22, 0, 0, 5039, 5040, 7, 10, 0, 0, 5040, 5041, 7, 9, 0, 0, 5041, 5042, 7, 14, 0, 0, 5042, 5043, 7, 5, 0, 0, 5043, 5044, 7, 24, 0, 0, 5044, 5045, 7, 10, 0, 0, 5045, 986, 1, 0, 0, 0, 5046, 5047, 7, 27, 0, 0, 5047, 5048, 7, 17, 0, 0, 5048, 5049, 7, 10, 0, 0, 5049, 5050, 7, 29, 0, 0, 5050, 5051, 7, 9, 0, 0, 5051, 988, 1, 0, 0, 0, 5052, 5053, 7, 7, 0, 0, 5053, 5054, 7, 19, 0, 0, 5054, 5055, 7, 13, 0, 0, 5055, 5056, 7, 15, 0, 0, 5056, 5057, 7, 5, 0, 0, 5057, 5058, 7, 6, 0, 0, 5058, 5059, 7, 17, 0, 0, 5059, 5060, 7, 11, 0, 0, 5060, 5061, 7, 10, 0, 0, 5061, 990, 1, 0, 0, 0, 5062, 5063, 7, 12, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 15, 0, 0, 5065, 5066, 7, 24, 0, 0, 5066, 992, 1, 0, 0, 0, 5067, 5068, 7, 24, 0, 0, 5068, 5069, 7, 13, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 5072, 7, 16, 0, 0, 5072, 5073, 5, 95, 0, 0, 5073, 5074, 7, 9, 0, 0, 5074, 5075, 7, 16, 0, 0, 5075, 5076, 7, 13, 0, 0, 5076, 5077, 7, 17, 0, 0, 5077, 5078, 7, 14, 0, 0, 5078, 5079, 7, 16, 0, 0, 5079, 5080, 5, 95, 0, 0, 5080, 5081, 7, 24, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 13, 0, 0, 5083, 5084, 7, 5, 0, 0, 5084, 5085, 7, 15, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 994, 1, 0, 0, 0, 5087, 5088, 7, 27, 0, 0, 5088, 5089, 7, 5, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 18, 0, 0, 5093, 5094, 7, 6, 0, 0, 5094, 5095, 7, 10, 0, 0, 5095, 5096, 5, 95, 0, 0, 5096, 5097, 7, 14, 0, 0, 5097, 5098, 7, 19, 0, 0, 5098, 5099, 7, 7, 0, 0, 5099, 5100, 7, 25, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 996, 1, 0, 0, 0, 5105, 5106, 7, 10, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 19, 0, 0, 5109, 5110, 7, 13, 0, 0, 5110, 998, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 9, 0, 0, 5113, 5114, 7, 10, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 27, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 5, 0, 0, 5120, 5121, 7, 18, 0, 0, 5121, 5122, 7, 6, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 1000, 1, 0, 0, 0, 5124, 5125, 7, 22, 0, 0, 5125, 5126, 7, 9, 0, 0, 5126, 5127, 7, 10, 0, 0, 5127, 5128, 5, 95, 0, 0, 5128, 5129, 7, 14, 0, 0, 5129, 5130, 7, 19, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 22, 0, 0, 5132, 5133, 7, 15, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 1002, 1, 0, 0, 0, 5135, 5136, 7, 5, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 17, 0, 0, 5138, 5139, 7, 5, 0, 0, 5139, 5140, 7, 9, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 14, 0, 0, 5142, 5143, 7, 19, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 9, 0, 0, 5145, 5146, 7, 16, 0, 0, 5146, 5147, 7, 5, 0, 0, 5147, 5148, 7, 7, 0, 0, 5148, 5149, 7, 16, 0, 0, 5149, 1006, 1, 0, 0, 0, 5150, 5151, 7, 24, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 25, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 15, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 23, 0, 0, 5159, 5160, 7, 10, 0, 0, 5160, 5161, 7, 16, 0, 0, 5161, 1010, 1, 0, 0, 0, 5162, 5163, 7, 12, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 23, 0, 0, 5166, 5167, 7, 7, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 16, 0, 0, 5170, 5171, 7, 17, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 9, 0, 0, 5173, 1012, 1, 0, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 5176, 7, 16, 0, 0, 5176, 5177, 7, 5, 0, 0, 5177, 5178, 7, 14, 0, 0, 5178, 5179, 7, 21, 0, 0, 5179, 5180, 7, 10, 0, 0, 5180, 5181, 7, 12, 0, 0, 5181, 1014, 1, 0, 0, 0, 5182, 5183, 7, 10, 0, 0, 5183, 5184, 7, 6, 0, 0, 5184, 5185, 7, 9, 0, 0, 5185, 5186, 7, 17, 0, 0, 5186, 5187, 7, 25, 0, 0, 5187, 1016, 1, 0, 0, 0, 5188, 5189, 7, 29, 0, 0, 5189, 5190, 7, 20, 0, 0, 5190, 5191, 7, 17, 0, 0, 5191, 5192, 7, 6, 0, 0, 5192, 5193, 7, 10, 0, 0, 5193, 1018, 1, 0, 0, 0, 5194, 5195, 7, 13, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 5197, 7, 27, 0, 0, 5197, 5198, 7, 10, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 10, 0, 0, 5201, 1020, 1, 0, 0, 0, 5202, 5203, 7, 25, 0, 0, 5203, 5204, 7, 19, 0, 0, 5204, 5205, 7, 13, 0, 0, 5205, 5206, 7, 10, 0, 0, 5206, 5207, 7, 5, 0, 0, 5207, 5208, 7, 14, 0, 0, 5208, 5209, 7, 20, 0, 0, 5209, 1022, 1, 0, 0, 0, 5210, 5211, 7, 9, 0, 0, 5211, 5212, 7, 6, 0, 0, 5212, 5213, 7, 17, 0, 0, 5213, 5214, 7, 14, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 1024, 1, 0, 0, 0, 5216, 5217, 7, 10, 0, 0, 5217, 5218, 7, 26, 0, 0, 5218, 5219, 7, 17, 0, 0, 5219, 5220, 7, 16, 0, 0, 5220, 1026, 1, 0, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 16, 0, 0, 5224, 5225, 7, 22, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 7, 0, 0, 5227, 1028, 1, 0, 0, 0, 5228, 5229, 7, 28, 0, 0, 5229, 5230, 7, 22, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 13, 0, 0, 5232, 5233, 7, 8, 0, 0, 5233, 1030, 1, 0, 0, 0, 5234, 5235, 7, 13, 0, 0, 5235, 5236, 7, 5, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 9, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 1032, 1, 0, 0, 0, 5240, 5241, 7, 9, 0, 0, 5241, 5242, 7, 28, 0, 0, 5242, 5243, 7, 6, 0, 0, 5243, 5244, 7, 9, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 5246, 7, 5, 0, 0, 5246, 5247, 7, 16, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 1034, 1, 0, 0, 0, 5249, 5250, 7, 12, 0, 0, 5250, 5251, 7, 10, 0, 0, 5251, 5252, 7, 18, 0, 0, 5252, 5253, 7, 22, 0, 0, 5253, 5254, 7, 23, 0, 0, 5254, 1036, 1, 0, 0, 0, 5255, 5256, 7, 6, 0, 0, 5256, 5257, 7, 19, 0, 0, 5257, 5258, 7, 23, 0, 0, 5258, 1038, 1, 0, 0, 0, 5259, 5260, 7, 17, 0, 0, 5260, 5261, 7, 7, 0, 0, 5261, 5262, 7, 25, 0, 0, 5262, 5263, 7, 19, 0, 0, 5263, 1040, 1, 0, 0, 0, 5264, 5265, 7, 7, 0, 0, 5265, 5266, 7, 19, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 17, 0, 0, 5268, 5269, 7, 14, 0, 0, 5269, 5270, 7, 10, 0, 0, 5270, 1042, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 5, 0, 0, 5273, 5274, 7, 13, 0, 0, 5274, 5275, 7, 7, 0, 0, 5275, 5276, 7, 17, 0, 0, 5276, 5277, 7, 7, 0, 0, 5277, 5278, 7, 23, 0, 0, 5278, 1044, 1, 0, 0, 0, 5279, 5280, 7, 10, 0, 0, 5280, 5281, 7, 26, 0, 0, 5281, 5282, 7, 14, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 5284, 7, 24, 0, 0, 5284, 5285, 7, 16, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 19, 0, 0, 5287, 5288, 7, 7, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 9, 0, 0, 5291, 5292, 7, 9, 0, 0, 5292, 5293, 7, 10, 0, 0, 5293, 5294, 7, 13, 0, 0, 5294, 5295, 7, 16, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 6, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 5299, 7, 19, 0, 0, 5299, 5300, 7, 24, 0, 0, 5300, 1050, 1, 0, 0, 0, 5301, 5302, 7, 19, 0, 0, 5302, 5303, 7, 24, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1052, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 18, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 1054, 1, 0, 0, 0, 5310, 5311, 7, 14, 0, 0, 5311, 5312, 7, 18, 0, 0, 5312, 5313, 7, 13, 0, 0, 5313, 5314, 7, 16, 0, 0, 5314, 1056, 1, 0, 0, 0, 5315, 5316, 7, 14, 0, 0, 5316, 5317, 7, 10, 0, 0, 5317, 5318, 7, 17, 0, 0, 5318, 5319, 7, 6, 0, 0, 5319, 1058, 1, 0, 0, 0, 5320, 5321, 7, 14, 0, 0, 5321, 5322, 7, 10, 0, 0, 5322, 5323, 7, 17, 0, 0, 5323, 5324, 7, 6, 0, 0, 5324, 5325, 7, 17, 0, 0, 5325, 5326, 7, 7, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1060, 1, 0, 0, 0, 5328, 5329, 7, 12, 0, 0, 5329, 5330, 7, 10, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 5332, 7, 13, 0, 0, 5332, 5333, 7, 10, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 1062, 1, 0, 0, 0, 5336, 5337, 7, 12, 0, 0, 5337, 5338, 7, 17, 0, 0, 5338, 5339, 7, 27, 0, 0, 5339, 1064, 1, 0, 0, 0, 5340, 5341, 7, 10, 0, 0, 5341, 5342, 7, 26, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1066, 1, 0, 0, 0, 5344, 5345, 7, 25, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 14, 0, 0, 5347, 5348, 7, 16, 0, 0, 5348, 5349, 7, 19, 0, 0, 5349, 5350, 7, 13, 0, 0, 5350, 5351, 7, 17, 0, 0, 5351, 5352, 7, 5, 0, 0, 5352, 5353, 7, 6, 0, 0, 5353, 1068, 1, 0, 0, 0, 5354, 5355, 7, 25, 0, 0, 5355, 5356, 7, 6, 0, 0, 5356, 5357, 7, 19, 0, 0, 5357, 5358, 7, 19, 0, 0, 5358, 5359, 7, 13, 0, 0, 5359, 1070, 1, 0, 0, 0, 5360, 5361, 7, 23, 0, 0, 5361, 5362, 7, 14, 0, 0, 5362, 5363, 7, 12, 0, 0, 5363, 1072, 1, 0, 0, 0, 5364, 5365, 7, 6, 0, 0, 5365, 5366, 7, 14, 0, 0, 5366, 5367, 7, 15, 0, 0, 5367, 1074, 1, 0, 0, 0, 5368, 5369, 7, 6, 0, 0, 5369, 5370, 7, 7, 0, 0, 5370, 1076, 1, 0, 0, 0, 5371, 5372, 7, 6, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 5, 49, 0, 0, 5375, 5376, 5, 48, 0, 0, 5376, 1078, 1, 0, 0, 0, 5377, 5378, 7, 15, 0, 0, 5378, 5379, 7, 17, 0, 0, 5379, 5380, 7, 7, 0, 0, 5380, 5381, 5, 95, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 5, 0, 0, 5384, 5385, 7, 6, 0, 0, 5385, 5386, 7, 10, 0, 0, 5386, 1080, 1, 0, 0, 0, 5387, 5388, 7, 15, 0, 0, 5388, 5389, 7, 19, 0, 0, 5389, 5390, 7, 12, 0, 0, 5390, 1082, 1, 0, 0, 0, 5391, 5392, 7, 24, 0, 0, 5392, 5393, 7, 17, 0, 0, 5393, 1084, 1, 0, 0, 0, 5394, 5395, 7, 24, 0, 0, 5395, 5396, 7, 19, 0, 0, 5396, 5397, 7, 29, 0, 0, 5397, 5398, 7, 10, 0, 0, 5398, 5399, 7, 13, 0, 0, 5399, 1086, 1, 0, 0, 0, 5400, 5401, 7, 13, 0, 0, 5401, 5402, 7, 5, 0, 0, 5402, 5403, 7, 12, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 5, 0, 0, 5405, 5406, 7, 7, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 1088, 1, 0, 0, 0, 5408, 5409, 7, 13, 0, 0, 5409, 5410, 7, 19, 0, 0, 5410, 5411, 7, 22, 0, 0, 5411, 5412, 7, 7, 0, 0, 5412, 5413, 7, 12, 0, 0, 5413, 1090, 1, 0, 0, 0, 5414, 5415, 7, 9, 0, 0, 5415, 5416, 7, 14, 0, 0, 5416, 5417, 7, 5, 0, 0, 5417, 5418, 7, 6, 0, 0, 5418, 5419, 7, 10, 0, 0, 5419, 1092, 1, 0, 0, 0, 5420, 5421, 7, 9, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 23, 0, 0, 5423, 5424, 7, 7, 0, 0, 5424, 1094, 1, 0, 0, 0, 5425, 5426, 7, 9, 0, 0, 5426, 5427, 7, 28, 0, 0, 5427, 5428, 7, 13, 0, 0, 5428, 5429, 7, 16, 0, 0, 5429, 1096, 1, 0, 0, 0, 5430, 5431, 7, 16, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 5433, 7, 17, 0, 0, 5433, 5434, 7, 15, 0, 0, 5434, 5435, 5, 95, 0, 0, 5435, 5436, 7, 9, 0, 0, 5436, 5437, 7, 14, 0, 0, 5437, 5438, 7, 5, 0, 0, 5438, 5439, 7, 6, 0, 0, 5439, 5440, 7, 10, 0, 0, 5440, 1098, 1, 0, 0, 0, 5441, 5442, 7, 16, 0, 0, 5442, 5443, 7, 13, 0, 0, 5443, 5444, 7, 22, 0, 0, 5444, 5445, 7, 7, 0, 0, 5445, 5446, 7, 14, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 29, 0, 0, 5448, 5449, 7, 17, 0, 0, 5449, 5450, 7, 12, 0, 0, 5450, 5451, 7, 16, 0, 0, 5451, 5452, 7, 20, 0, 0, 5452, 5453, 5, 95, 0, 0, 5453, 5454, 7, 18, 0, 0, 5454, 5455, 7, 22, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 21, 0, 0, 5457, 5458, 7, 10, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 13, 0, 0, 5461, 5462, 7, 5, 0, 0, 5462, 5463, 7, 7, 0, 0, 5463, 5464, 7, 12, 0, 0, 5464, 5465, 7, 19, 0, 0, 5465, 5466, 7, 15, 0, 0, 5466, 1104, 1, 0, 0, 0, 5467, 5468, 7, 9, 0, 0, 5468, 5469, 7, 10, 0, 0, 5469, 5470, 7, 16, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 10, 0, 0, 5472, 5473, 7, 10, 0, 0, 5473, 5474, 7, 12, 0, 0, 5474, 1106, 1, 0, 0, 0, 5475, 5476, 7, 5, 0, 0, 5476, 5477, 7, 14, 0, 0, 5477, 5478, 7, 19, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 1108, 1, 0, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 14, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 9, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 1110, 1, 0, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 17, 0, 0, 5489, 5490, 7, 7, 0, 0, 5490, 1112, 1, 0, 0, 0, 5491, 5492, 7, 5, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 17, 0, 0, 5494, 5495, 7, 7, 0, 0, 5495, 5496, 7, 12, 0, 0, 5496, 1114, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 16, 0, 0, 5499, 5500, 7, 5, 0, 0, 5500, 5501, 7, 7, 0, 0, 5501, 1116, 1, 0, 0, 0, 5502, 5503, 7, 5, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 1118, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 16, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 5, 50, 0, 0, 5513, 1120, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 5, 50, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1122, 1, 0, 0, 0, 5521, 5522, 7, 14, 0, 0, 5522, 5523, 7, 19, 0, 0, 5523, 5524, 7, 9, 0, 0, 5524, 1124, 1, 0, 0, 0, 5525, 5526, 7, 14, 0, 0, 5526, 5527, 7, 19, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 12, 0, 0, 5529, 1126, 1, 0, 0, 0, 5530, 5531, 7, 14, 0, 0, 5531, 5532, 7, 19, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 1128, 1, 0, 0, 0, 5534, 5535, 7, 14, 0, 0, 5535, 5536, 7, 19, 0, 0, 5536, 5537, 7, 16, 0, 0, 5537, 5538, 7, 12, 0, 0, 5538, 1130, 1, 0, 0, 0, 5539, 5540, 7, 9, 0, 0, 5540, 5541, 7, 17, 0, 0, 5541, 5542, 7, 7, 0, 0, 5542, 1132, 1, 0, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 17, 0, 0, 5545, 5546, 7, 7, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1134, 1, 0, 0, 0, 5548, 5549, 7, 16, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 7, 0, 0, 5551, 1136, 1, 0, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 7, 12, 0, 0, 5556, 1138, 1, 0, 0, 0, 5557, 5558, 7, 9, 0, 0, 5558, 5559, 7, 17, 0, 0, 5559, 5560, 7, 7, 0, 0, 5560, 5561, 7, 20, 0, 0, 5561, 1140, 1, 0, 0, 0, 5562, 5563, 7, 14, 0, 0, 5563, 5564, 7, 19, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 20, 0, 0, 5566, 1142, 1, 0, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 5569, 7, 5, 0, 0, 5569, 5570, 7, 7, 0, 0, 5570, 5571, 7, 20, 0, 0, 5571, 1144, 1, 0, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 9, 0, 0, 5574, 5575, 7, 17, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 5577, 7, 20, 0, 0, 5577, 1146, 1, 0, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1148, 1, 0, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 16, 0, 0, 5586, 5587, 7, 5, 0, 0, 5587, 5588, 7, 7, 0, 0, 5588, 5589, 7, 20, 0, 0, 5589, 1150, 1, 0, 0, 0, 5590, 5591, 7, 18, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 5, 95, 0, 0, 5594, 5595, 7, 6, 0, 0, 5595, 5596, 7, 10, 0, 0, 5596, 5597, 7, 7, 0, 0, 5597, 5598, 7, 23, 0, 0, 5598, 5599, 7, 16, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 14, 0, 0, 5602, 5603, 7, 20, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 13, 0, 0, 5605, 5606, 5, 95, 0, 0, 5606, 5607, 7, 6, 0, 0, 5607, 5608, 7, 10, 0, 0, 5608, 5609, 7, 7, 0, 0, 5609, 5610, 7, 23, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 14, 0, 0, 5614, 5615, 7, 20, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 13, 0, 0, 5617, 5618, 7, 5, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 16, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1156, 1, 0, 0, 0, 5630, 5631, 7, 6, 0, 0, 5631, 5632, 7, 19, 0, 0, 5632, 5633, 7, 29, 0, 0, 5633, 5634, 7, 10, 0, 0, 5634, 5635, 7, 13, 0, 0, 5635, 1158, 1, 0, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 14, 0, 0, 5638, 5639, 7, 16, 0, 0, 5639, 5640, 7, 10, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 5, 95, 0, 0, 5642, 5643, 7, 6, 0, 0, 5643, 5644, 7, 10, 0, 0, 5644, 5645, 7, 7, 0, 0, 5645, 5646, 7, 23, 0, 0, 5646, 5647, 7, 16, 0, 0, 5647, 5648, 7, 20, 0, 0, 5648, 1160, 1, 0, 0, 0, 5649, 5650, 7, 22, 0, 0, 5650, 5651, 7, 24, 0, 0, 5651, 5652, 7, 24, 0, 0, 5652, 5653, 7, 10, 0, 0, 5653, 5654, 7, 13, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 5, 0, 0, 5656, 5657, 7, 9, 0, 0, 5657, 5658, 7, 14, 0, 0, 5658, 5659, 7, 17, 0, 0, 5659, 5660, 7, 17, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 18, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 13, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 15, 0, 0, 5666, 1166, 1, 0, 0, 0, 5667, 5668, 7, 14, 0, 0, 5668, 5669, 7, 20, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1168, 1, 0, 0, 0, 5671, 5672, 7, 14, 0, 0, 5672, 5673, 7, 19, 0, 0, 5673, 5674, 7, 7, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 5, 0, 0, 5676, 5677, 7, 16, 0, 0, 5677, 1170, 1, 0, 0, 0, 5678, 5679, 7, 14, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 7, 0, 0, 5681, 5682, 7, 14, 0, 0, 5682, 5683, 7, 5, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 29, 0, 0, 5686, 5687, 7, 9, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 25, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 13, 0, 0, 5691, 5692, 7, 15, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 17, 0, 0, 5696, 5697, 7, 7, 0, 0, 5697, 5698, 7, 17, 0, 0, 5698, 5699, 7, 16, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 24, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 10, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 23, 0, 0, 5707, 5708, 7, 16, 0, 0, 5708, 5709, 7, 20, 0, 0, 5709, 1178, 1, 0, 0, 0, 5710, 5711, 7, 6, 0, 0, 5711, 5712, 7, 24, 0, 0, 5712, 5713, 7, 5, 0, 0, 5713, 5714, 7, 12, 0, 0, 5714, 1180, 1, 0, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 16, 0, 0, 5717, 5718, 7, 13, 0, 0, 5718, 5719, 7, 17, 0, 0, 5719, 5720, 7, 15, 0, 0, 5720, 1182, 1, 0, 0, 0, 5721, 5722, 7, 15, 0, 0, 5722, 5723, 7, 12, 0, 0, 5723, 5724, 5, 53, 0, 0, 5724, 1184, 1, 0, 0, 0, 5725, 5726, 7, 24, 0, 0, 5726, 5727, 7, 5, 0, 0, 5727, 5728, 7, 13, 0, 0, 5728, 5729, 7, 9, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 5, 95, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 12, 0, 0, 5733, 5734, 7, 10, 0, 0, 5734, 5735, 7, 7, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 1186, 1, 0, 0, 0, 5737, 5738, 7, 24, 0, 0, 5738, 5739, 7, 23, 0, 0, 5739, 5740, 5, 95, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 6, 0, 0, 5742, 5743, 7, 17, 0, 0, 5743, 5744, 7, 10, 0, 0, 5744, 5745, 7, 7, 0, 0, 5745, 5746, 7, 16, 0, 0, 5746, 5747, 5, 95, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 14, 0, 0, 5750, 5751, 7, 19, 0, 0, 5751, 5752, 7, 12, 0, 0, 5752, 5753, 7, 17, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 23, 0, 0, 5755, 1188, 1, 0, 0, 0, 5756, 5757, 7, 28, 0, 0, 5757, 5758, 7, 22, 0, 0, 5758, 5759, 7, 19, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 5, 95, 0, 0, 5762, 5763, 7, 17, 0, 0, 5763, 5764, 7, 12, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 28, 0, 0, 5769, 5770, 7, 22, 0, 0, 5770, 5771, 7, 19, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 6, 0, 0, 5775, 5776, 7, 17, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 13, 0, 0, 5779, 5780, 7, 5, 0, 0, 5780, 5781, 7, 6, 0, 0, 5781, 1192, 1, 0, 0, 0, 5782, 5783, 7, 28, 0, 0, 5783, 5784, 7, 22, 0, 0, 5784, 5785, 7, 19, 0, 0, 5785, 5786, 7, 16, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 5, 95, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 22, 0, 0, 5790, 5791, 7, 6, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 5, 0, 0, 5793, 5794, 7, 18, 0, 0, 5794, 5795, 7, 6, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 1194, 1, 0, 0, 0, 5797, 5798, 7, 13, 0, 0, 5798, 5799, 7, 10, 0, 0, 5799, 5800, 7, 23, 0, 0, 5800, 5801, 7, 10, 0, 0, 5801, 5802, 7, 26, 0, 0, 5802, 5803, 7, 24, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 14, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1196, 1, 0, 0, 0, 5810, 5811, 7, 13, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 7, 23, 0, 0, 5813, 5814, 7, 10, 0, 0, 5814, 5815, 7, 26, 0, 0, 5815, 5816, 7, 24, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 17, 0, 0, 5818, 5819, 7, 7, 0, 0, 5819, 5820, 7, 9, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 1198, 1, 0, 0, 0, 5823, 5824, 7, 13, 0, 0, 5824, 5825, 7, 10, 0, 0, 5825, 5826, 7, 23, 0, 0, 5826, 5827, 7, 10, 0, 0, 5827, 5828, 7, 26, 0, 0, 5828, 5829, 7, 24, 0, 0, 5829, 5830, 5, 95, 0, 0, 5830, 5831, 7, 6, 0, 0, 5831, 5832, 7, 17, 0, 0, 5832, 5833, 7, 21, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 1200, 1, 0, 0, 0, 5835, 5836, 7, 13, 0, 0, 5836, 5837, 7, 10, 0, 0, 5837, 5838, 7, 23, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 5840, 7, 26, 0, 0, 5840, 5841, 7, 24, 0, 0, 5841, 5842, 5, 95, 0, 0, 5842, 5843, 7, 15, 0, 0, 5843, 5844, 7, 5, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 14, 0, 0, 5846, 5847, 7, 20, 0, 0, 5847, 1202, 1, 0, 0, 0, 5848, 5849, 7, 13, 0, 0, 5849, 5850, 7, 10, 0, 0, 5850, 5851, 7, 23, 0, 0, 5851, 5852, 7, 10, 0, 0, 5852, 5853, 7, 26, 0, 0, 5853, 5854, 7, 24, 0, 0, 5854, 5855, 5, 95, 0, 0, 5855, 5856, 7, 15, 0, 0, 5856, 5857, 7, 5, 0, 0, 5857, 5858, 7, 16, 0, 0, 5858, 5859, 7, 14, 0, 0, 5859, 5860, 7, 20, 0, 0, 5860, 5861, 7, 10, 0, 0, 5861, 5862, 7, 9, 0, 0, 5862, 1204, 1, 0, 0, 0, 5863, 5864, 7, 13, 0, 0, 5864, 5865, 7, 10, 0, 0, 5865, 5866, 7, 23, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 26, 0, 0, 5868, 5869, 7, 24, 0, 0, 5869, 5870, 5, 95, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 24, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 5, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1206, 1, 0, 0, 0, 5878, 5879, 7, 13, 0, 0, 5879, 5880, 7, 10, 0, 0, 5880, 5881, 7, 23, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 26, 0, 0, 5883, 5884, 7, 24, 0, 0, 5884, 5885, 5, 95, 0, 0, 5885, 5886, 7, 9, 0, 0, 5886, 5887, 7, 24, 0, 0, 5887, 5888, 7, 6, 0, 0, 5888, 5889, 7, 17, 0, 0, 5889, 5890, 7, 16, 0, 0, 5890, 5891, 5, 95, 0, 0, 5891, 5892, 7, 16, 0, 0, 5892, 5893, 7, 19, 0, 0, 5893, 5894, 5, 95, 0, 0, 5894, 5895, 7, 5, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 5, 0, 0, 5898, 5899, 7, 8, 0, 0, 5899, 1208, 1, 0, 0, 0, 5900, 5901, 7, 13, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 23, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 26, 0, 0, 5905, 5906, 7, 24, 0, 0, 5906, 5907, 5, 95, 0, 0, 5907, 5908, 7, 9, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 7, 6, 0, 0, 5910, 5911, 7, 17, 0, 0, 5911, 5912, 7, 16, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 16, 0, 0, 5914, 5915, 7, 19, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 18, 0, 0, 5919, 5920, 7, 6, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 1210, 1, 0, 0, 0, 5922, 5923, 7, 13, 0, 0, 5923, 5924, 7, 10, 0, 0, 5924, 5925, 7, 23, 0, 0, 5925, 5926, 7, 10, 0, 0, 5926, 5927, 7, 26, 0, 0, 5927, 5928, 7, 24, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 9, 0, 0, 5930, 5931, 7, 22, 0, 0, 5931, 5932, 7, 18, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 13, 0, 0, 5935, 1212, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 24, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 1214, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 7, 5, 0, 0, 5946, 5947, 7, 12, 0, 0, 5947, 1216, 1, 0, 0, 0, 5948, 5949, 7, 13, 0, 0, 5949, 5950, 7, 16, 0, 0, 5950, 5951, 7, 13, 0, 0, 5951, 5952, 7, 17, 0, 0, 5952, 5953, 7, 15, 0, 0, 5953, 1218, 1, 0, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 6, 0, 0, 5957, 5958, 7, 17, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 5, 95, 0, 0, 5960, 5961, 7, 24, 0, 0, 5961, 5962, 7, 5, 0, 0, 5962, 5963, 7, 13, 0, 0, 5963, 5964, 7, 16, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 9, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 16, 0, 0, 5970, 5971, 7, 9, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 29, 0, 0, 5973, 5974, 7, 17, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 20, 0, 0, 5976, 1222, 1, 0, 0, 0, 5977, 5978, 7, 9, 0, 0, 5978, 5979, 7, 16, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 17, 0, 0, 5981, 5982, 7, 7, 0, 0, 5982, 5983, 7, 23, 0, 0, 5983, 5984, 5, 95, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 19, 0, 0, 5986, 5987, 5, 95, 0, 0, 5987, 5988, 7, 5, 0, 0, 5988, 5989, 7, 13, 0, 0, 5989, 5990, 7, 13, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 8, 0, 0, 5992, 1224, 1, 0, 0, 0, 5993, 5994, 7, 9, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 17, 0, 0, 5997, 5998, 7, 7, 0, 0, 5998, 5999, 7, 23, 0, 0, 5999, 6000, 5, 95, 0, 0, 6000, 6001, 7, 16, 0, 0, 6001, 6002, 7, 19, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 18, 0, 0, 6006, 6007, 7, 6, 0, 0, 6007, 6008, 7, 10, 0, 0, 6008, 1226, 1, 0, 0, 0, 6009, 6010, 7, 9, 0, 0, 6010, 6011, 7, 16, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 24, 0, 0, 6013, 6014, 7, 19, 0, 0, 6014, 6015, 7, 9, 0, 0, 6015, 1228, 1, 0, 0, 0, 6016, 6017, 7, 9, 0, 0, 6017, 6018, 7, 22, 0, 0, 6018, 6019, 7, 18, 0, 0, 6019, 6020, 7, 9, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 1230, 1, 0, 0, 0, 6023, 6024, 7, 16, 0, 0, 6024, 6025, 7, 19, 0, 0, 6025, 6026, 5, 95, 0, 0, 6026, 6027, 7, 5, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 14, 0, 0, 6029, 6030, 7, 17, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 1232, 1, 0, 0, 0, 6032, 6033, 7, 16, 0, 0, 6033, 6034, 7, 19, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 20, 0, 0, 6036, 6037, 7, 10, 0, 0, 6037, 6038, 7, 26, 0, 0, 6038, 1234, 1, 0, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 13, 0, 0, 6041, 6042, 7, 5, 0, 0, 6042, 6043, 7, 7, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 7, 6, 0, 0, 6045, 6046, 7, 5, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 10, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 22, 0, 0, 6050, 6051, 7, 7, 0, 0, 6051, 6052, 7, 17, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 5, 0, 0, 6057, 6058, 7, 23, 0, 0, 6058, 6059, 7, 10, 0, 0, 6059, 1240, 1, 0, 0, 0, 6060, 6061, 7, 14, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 19, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 21, 0, 0, 6065, 6066, 5, 95, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 17, 0, 0, 6068, 6069, 7, 15, 0, 0, 6069, 6070, 7, 10, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 5, 0, 0, 6073, 6074, 7, 15, 0, 0, 6074, 6075, 7, 24, 0, 0, 6075, 1242, 1, 0, 0, 0, 6076, 6077, 7, 12, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 5, 95, 0, 0, 6081, 6082, 7, 18, 0, 0, 6082, 6083, 7, 17, 0, 0, 6083, 6084, 7, 7, 0, 0, 6084, 1244, 1, 0, 0, 0, 6085, 6086, 7, 12, 0, 0, 6086, 6087, 7, 5, 0, 0, 6087, 6088, 7, 16, 0, 0, 6088, 6089, 7, 10, 0, 0, 6089, 6090, 5, 95, 0, 0, 6090, 6091, 7, 24, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 13, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 1246, 1, 0, 0, 0, 6095, 6096, 7, 12, 0, 0, 6096, 6097, 7, 5, 0, 0, 6097, 6098, 7, 16, 0, 0, 6098, 6099, 7, 10, 0, 0, 6099, 6100, 5, 95, 0, 0, 6100, 6101, 7, 16, 0, 0, 6101, 6102, 7, 13, 0, 0, 6102, 6103, 7, 22, 0, 0, 6103, 6104, 7, 7, 0, 0, 6104, 6105, 7, 14, 0, 0, 6105, 1248, 1, 0, 0, 0, 6106, 6107, 7, 17, 0, 0, 6107, 6108, 7, 9, 0, 0, 6108, 6109, 7, 25, 0, 0, 6109, 6110, 7, 17, 0, 0, 6110, 6111, 7, 7, 0, 0, 6111, 6112, 7, 17, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 1250, 1, 0, 0, 0, 6115, 6116, 7, 30, 0, 0, 6116, 6117, 7, 22, 0, 0, 6117, 6118, 7, 9, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 6120, 7, 17, 0, 0, 6120, 6121, 7, 25, 0, 0, 6121, 6122, 7, 8, 0, 0, 6122, 6123, 5, 95, 0, 0, 6123, 6124, 7, 12, 0, 0, 6124, 6125, 7, 5, 0, 0, 6125, 6126, 7, 8, 0, 0, 6126, 6127, 7, 9, 0, 0, 6127, 1252, 1, 0, 0, 0, 6128, 6129, 7, 30, 0, 0, 6129, 6130, 7, 22, 0, 0, 6130, 6131, 7, 9, 0, 0, 6131, 6132, 7, 16, 0, 0, 6132, 6133, 7, 17, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 8, 0, 0, 6135, 6136, 5, 95, 0, 0, 6136, 6137, 7, 20, 0, 0, 6137, 6138, 7, 19, 0, 0, 6138, 6139, 7, 22, 0, 0, 6139, 6140, 7, 13, 0, 0, 6140, 6141, 7, 9, 0, 0, 6141, 1254, 1, 0, 0, 0, 6142, 6143, 7, 30, 0, 0, 6143, 6144, 7, 22, 0, 0, 6144, 6145, 7, 9, 0, 0, 6145, 6146, 7, 16, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 25, 0, 0, 6148, 6149, 7, 8, 0, 0, 6149, 6150, 5, 95, 0, 0, 6150, 6151, 7, 17, 0, 0, 6151, 6152, 7, 7, 0, 0, 6152, 6153, 7, 16, 0, 0, 6153, 6154, 7, 10, 0, 0, 6154, 6155, 7, 13, 0, 0, 6155, 6156, 7, 27, 0, 0, 6156, 6157, 7, 5, 0, 0, 6157, 6158, 7, 6, 0, 0, 6158, 1256, 1, 0, 0, 0, 6159, 6160, 7, 15, 0, 0, 6160, 6161, 7, 5, 0, 0, 6161, 6162, 7, 21, 0, 0, 6162, 6163, 7, 10, 0, 0, 6163, 6164, 5, 95, 0, 0, 6164, 6165, 7, 12, 0, 0, 6165, 6166, 7, 5, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 10, 0, 0, 6168, 1258, 1, 0, 0, 0, 6169, 6170, 7, 15, 0, 0, 6170, 6171, 7, 5, 0, 0, 6171, 6172, 7, 21, 0, 0, 6172, 6173, 7, 10, 0, 0, 6173, 6174, 5, 95, 0, 0, 6174, 6175, 7, 17, 0, 0, 6175, 6176, 7, 7, 0, 0, 6176, 6177, 7, 16, 0, 0, 6177, 6178, 7, 10, 0, 0, 6178, 6179, 7, 13, 0, 0, 6179, 6180, 7, 27, 0, 0, 6180, 6181, 7, 5, 0, 0, 6181, 6182, 7, 6, 0, 0, 6182, 1260, 1, 0, 0, 0, 6183, 6184, 7, 15, 0, 0, 6184, 6185, 7, 5, 0, 0, 6185, 6186, 7, 21, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 6188, 5, 95, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 15, 0, 0, 6191, 6192, 7, 10, 0, 0, 6192, 1262, 1, 0, 0, 0, 6193, 6194, 7, 15, 0, 0, 6194, 6195, 7, 5, 0, 0, 6195, 6196, 7, 21, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 5, 95, 0, 0, 6198, 6199, 7, 16, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 10, 0, 0, 6202, 6203, 7, 9, 0, 0, 6203, 6204, 7, 16, 0, 0, 6204, 6205, 7, 5, 0, 0, 6205, 6206, 7, 15, 0, 0, 6206, 6207, 7, 24, 0, 0, 6207, 1264, 1, 0, 0, 0, 6208, 6209, 7, 15, 0, 0, 6209, 6210, 7, 5, 0, 0, 6210, 6211, 7, 21, 0, 0, 6211, 6212, 7, 10, 0, 0, 6212, 6213, 5, 95, 0, 0, 6213, 6214, 7, 16, 0, 0, 6214, 6215, 7, 17, 0, 0, 6215, 6216, 7, 15, 0, 0, 6216, 6217, 7, 10, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 15, 0, 0, 6221, 6222, 7, 24, 0, 0, 6222, 6223, 7, 16, 0, 0, 6223, 6224, 7, 11, 0, 0, 6224, 1266, 1, 0, 0, 0, 6225, 6226, 7, 7, 0, 0, 6226, 6227, 7, 19, 0, 0, 6227, 6228, 7, 29, 0, 0, 6228, 1268, 1, 0, 0, 0, 6229, 6230, 7, 9, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 5, 0, 0, 6232, 6233, 7, 16, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 15, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 7, 7, 0, 0, 6237, 6238, 7, 16, 0, 0, 6238, 6239, 5, 95, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 17, 0, 0, 6241, 6242, 7, 15, 0, 0, 6242, 6243, 7, 10, 0, 0, 6243, 6244, 7, 9, 0, 0, 6244, 6245, 7, 16, 0, 0, 6245, 6246, 7, 5, 0, 0, 6246, 6247, 7, 15, 0, 0, 6247, 6248, 7, 24, 0, 0, 6248, 1270, 1, 0, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 17, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 19, 0, 0, 6254, 6255, 7, 25, 0, 0, 6255, 6256, 7, 12, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 8, 0, 0, 6258, 1272, 1, 0, 0, 0, 6259, 6260, 7, 16, 0, 0, 6260, 6261, 7, 13, 0, 0, 6261, 6262, 7, 5, 0, 0, 6262, 6263, 7, 7, 0, 0, 6263, 6264, 7, 9, 0, 0, 6264, 6265, 7, 5, 0, 0, 6265, 6266, 7, 14, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 19, 0, 0, 6269, 6270, 7, 7, 0, 0, 6270, 6271, 5, 95, 0, 0, 6271, 6272, 7, 16, 0, 0, 6272, 6273, 7, 17, 0, 0, 6273, 6274, 7, 15, 0, 0, 6274, 6275, 7, 10, 0, 0, 6275, 6276, 7, 9, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 5, 0, 0, 6278, 6279, 7, 15, 0, 0, 6279, 6280, 7, 24, 0, 0, 6280, 1274, 1, 0, 0, 0, 6281, 6282, 7, 16, 0, 0, 6282, 6283, 7, 19, 0, 0, 6283, 6284, 5, 95, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 17, 0, 0, 6286, 6287, 7, 15, 0, 0, 6287, 6288, 7, 10, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 16, 0, 0, 6290, 6291, 7, 5, 0, 0, 6291, 6292, 7, 15, 0, 0, 6292, 6293, 7, 24, 0, 0, 6293, 1276, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 19, 0, 0, 6296, 6297, 5, 95, 0, 0, 6297, 6298, 7, 14, 0, 0, 6298, 6299, 7, 20, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 13, 0, 0, 6301, 1278, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 5, 95, 0, 0, 6305, 6306, 7, 12, 0, 0, 6306, 6307, 7, 5, 0, 0, 6307, 6308, 7, 16, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 1280, 1, 0, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 5, 95, 0, 0, 6313, 6314, 7, 7, 0, 0, 6314, 6315, 7, 22, 0, 0, 6315, 6316, 7, 15, 0, 0, 6316, 6317, 7, 18, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 13, 0, 0, 6319, 1282, 1, 0, 0, 0, 6320, 6324, 3, 1285, 640, 0, 6321, 6323, 3, 1287, 641, 0, 6322, 6321, 1, 0, 0, 0, 6323, 6326, 1, 0, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 1284, 1, 0, 0, 0, 6326, 6324, 1, 0, 0, 0, 6327, 6334, 7, 31, 0, 0, 6328, 6329, 7, 32, 0, 0, 6329, 6334, 4, 640, 6, 0, 6330, 6331, 7, 33, 0, 0, 6331, 6332, 7, 34, 0, 0, 6332, 6334, 4, 640, 7, 0, 6333, 6327, 1, 0, 0, 0, 6333, 6328, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6338, 3, 1289, 642, 0, 6336, 6338, 5, 36, 0, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6336, 1, 0, 0, 0, 6338, 1288, 1, 0, 0, 0, 6339, 6342, 3, 1285, 640, 0, 6340, 6342, 7, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6340, 1, 0, 0, 0, 6342, 1290, 1, 0, 0, 0, 6343, 6344, 3, 1293, 644, 0, 6344, 6345, 5, 34, 0, 0, 6345, 1292, 1, 0, 0, 0, 6346, 6352, 5, 34, 0, 0, 6347, 6348, 5, 34, 0, 0, 6348, 6351, 5, 34, 0, 0, 6349, 6351, 8, 35, 0, 0, 6350, 6347, 1, 0, 0, 0, 6350, 6349, 1, 0, 0, 0, 6351, 6354, 1, 0, 0, 0, 6352, 6350, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 1294, 1, 0, 0, 0, 6354, 6352, 1, 0, 0, 0, 6355, 6356, 3, 1297, 646, 0, 6356, 6357, 5, 34, 0, 0, 6357, 1296, 1, 0, 0, 0, 6358, 6364, 5, 34, 0, 0, 6359, 6360, 5, 34, 0, 0, 6360, 6363, 5, 34, 0, 0, 6361, 6363, 8, 36, 0, 0, 6362, 6359, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 6366, 1, 0, 0, 0, 6364, 6362, 1, 0, 0, 0, 6364, 6365, 1, 0, 0, 0, 6365, 1298, 1, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6368, 7, 22, 0, 0, 6368, 6369, 5, 38, 0, 0, 6369, 6370, 3, 1291, 643, 0, 6370, 1300, 1, 0, 0, 0, 6371, 6372, 7, 22, 0, 0, 6372, 6373, 5, 38, 0, 0, 6373, 6374, 3, 1293, 644, 0, 6374, 1302, 1, 0, 0, 0, 6375, 6376, 7, 22, 0, 0, 6376, 6377, 5, 38, 0, 0, 6377, 6378, 3, 1295, 645, 0, 6378, 1304, 1, 0, 0, 0, 6379, 6380, 7, 22, 0, 0, 6380, 6381, 5, 38, 0, 0, 6381, 6382, 3, 1297, 646, 0, 6382, 1306, 1, 0, 0, 0, 6383, 6384, 3, 1309, 652, 0, 6384, 6385, 5, 39, 0, 0, 6385, 1308, 1, 0, 0, 0, 6386, 6392, 5, 39, 0, 0, 6387, 6388, 5, 39, 0, 0, 6388, 6391, 5, 39, 0, 0, 6389, 6391, 8, 37, 0, 0, 6390, 6387, 1, 0, 0, 0, 6390, 6389, 1, 0, 0, 0, 6391, 6394, 1, 0, 0, 0, 6392, 6390, 1, 0, 0, 0, 6392, 6393, 1, 0, 0, 0, 6393, 1310, 1, 0, 0, 0, 6394, 6392, 1, 0, 0, 0, 6395, 6396, 7, 10, 0, 0, 6396, 6397, 5, 39, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 6399, 6, 653, 2, 0, 6399, 6400, 6, 653, 3, 0, 6400, 1312, 1, 0, 0, 0, 6401, 6402, 3, 1315, 655, 0, 6402, 6403, 5, 39, 0, 0, 6403, 1314, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1309, 652, 0, 6407, 1316, 1, 0, 0, 0, 6408, 6410, 5, 36, 0, 0, 6409, 6411, 3, 1319, 657, 0, 6410, 6409, 1, 0, 0, 0, 6410, 6411, 1, 0, 0, 0, 6411, 6412, 1, 0, 0, 0, 6412, 6413, 5, 36, 0, 0, 6413, 6414, 6, 656, 4, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 656, 5, 0, 6416, 1318, 1, 0, 0, 0, 6417, 6421, 3, 1285, 640, 0, 6418, 6420, 3, 1289, 642, 0, 6419, 6418, 1, 0, 0, 0, 6420, 6423, 1, 0, 0, 0, 6421, 6419, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 1320, 1, 0, 0, 0, 6423, 6421, 1, 0, 0, 0, 6424, 6425, 3, 1323, 659, 0, 6425, 6426, 5, 39, 0, 0, 6426, 1322, 1, 0, 0, 0, 6427, 6428, 7, 18, 0, 0, 6428, 6432, 5, 39, 0, 0, 6429, 6431, 7, 38, 0, 0, 6430, 6429, 1, 0, 0, 0, 6431, 6434, 1, 0, 0, 0, 6432, 6430, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 1324, 1, 0, 0, 0, 6434, 6432, 1, 0, 0, 0, 6435, 6436, 3, 1327, 661, 0, 6436, 6437, 5, 39, 0, 0, 6437, 1326, 1, 0, 0, 0, 6438, 6439, 7, 18, 0, 0, 6439, 6440, 3, 1309, 652, 0, 6440, 1328, 1, 0, 0, 0, 6441, 6442, 3, 1331, 663, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1330, 1, 0, 0, 0, 6444, 6445, 7, 26, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 39, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1332, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1335, 665, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1334, 1, 0, 0, 0, 6455, 6456, 7, 26, 0, 0, 6456, 6457, 3, 1309, 652, 0, 6457, 1336, 1, 0, 0, 0, 6458, 6459, 3, 1343, 669, 0, 6459, 1338, 1, 0, 0, 0, 6460, 6461, 3, 1343, 669, 0, 6461, 6462, 5, 46, 0, 0, 6462, 6463, 5, 46, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6465, 6, 667, 6, 0, 6465, 1340, 1, 0, 0, 0, 6466, 6467, 3, 1343, 669, 0, 6467, 6469, 5, 46, 0, 0, 6468, 6470, 3, 1343, 669, 0, 6469, 6468, 1, 0, 0, 0, 6469, 6470, 1, 0, 0, 0, 6470, 6476, 1, 0, 0, 0, 6471, 6473, 7, 10, 0, 0, 6472, 6474, 7, 1, 0, 0, 6473, 6472, 1, 0, 0, 0, 6473, 6474, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6477, 3, 1343, 669, 0, 6476, 6471, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6495, 1, 0, 0, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6485, 3, 1343, 669, 0, 6480, 6482, 7, 10, 0, 0, 6481, 6483, 7, 1, 0, 0, 6482, 6481, 1, 0, 0, 0, 6482, 6483, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6486, 3, 1343, 669, 0, 6485, 6480, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 6495, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6493, 3, 1343, 669, 0, 6493, 6495, 1, 0, 0, 0, 6494, 6466, 1, 0, 0, 0, 6494, 6478, 1, 0, 0, 0, 6494, 6487, 1, 0, 0, 0, 6495, 1342, 1, 0, 0, 0, 6496, 6498, 7, 0, 0, 0, 6497, 6496, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6497, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 1344, 1, 0, 0, 0, 6501, 6502, 5, 58, 0, 0, 6502, 6506, 7, 40, 0, 0, 6503, 6505, 7, 41, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6508, 1, 0, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 1346, 1, 0, 0, 0, 6508, 6506, 1, 0, 0, 0, 6509, 6510, 5, 58, 0, 0, 6510, 6511, 5, 34, 0, 0, 6511, 6519, 1, 0, 0, 0, 6512, 6513, 5, 92, 0, 0, 6513, 6518, 9, 0, 0, 0, 6514, 6515, 5, 34, 0, 0, 6515, 6518, 5, 34, 0, 0, 6516, 6518, 8, 42, 0, 0, 6517, 6512, 1, 0, 0, 0, 6517, 6514, 1, 0, 0, 0, 6517, 6516, 1, 0, 0, 0, 6518, 6521, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6522, 1, 0, 0, 0, 6521, 6519, 1, 0, 0, 0, 6522, 6523, 5, 34, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6526, 7, 43, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6525, 1, 0, 0, 0, 6527, 6528, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6530, 6, 672, 7, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 5, 13, 0, 0, 6532, 6534, 5, 10, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6537, 1, 0, 0, 0, 6535, 6537, 5, 10, 0, 0, 6536, 6531, 1, 0, 0, 0, 6536, 6535, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6539, 6, 673, 7, 0, 6539, 1352, 1, 0, 0, 0, 6540, 6541, 5, 45, 0, 0, 6541, 6542, 5, 45, 0, 0, 6542, 6546, 1, 0, 0, 0, 6543, 6545, 8, 44, 0, 0, 6544, 6543, 1, 0, 0, 0, 6545, 6548, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6549, 1, 0, 0, 0, 6548, 6546, 1, 0, 0, 0, 6549, 6550, 6, 674, 7, 0, 6550, 1354, 1, 0, 0, 0, 6551, 6552, 5, 47, 0, 0, 6552, 6553, 5, 42, 0, 0, 6553, 6576, 1, 0, 0, 0, 6554, 6556, 5, 47, 0, 0, 6555, 6554, 1, 0, 0, 0, 6556, 6559, 1, 0, 0, 0, 6557, 6555, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6575, 3, 1355, 675, 0, 6561, 6575, 8, 45, 0, 0, 6562, 6564, 5, 47, 0, 0, 6563, 6562, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6565, 6566, 1, 0, 0, 0, 6566, 6567, 1, 0, 0, 0, 6567, 6575, 8, 45, 0, 0, 6568, 6570, 5, 42, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6575, 8, 45, 0, 0, 6574, 6557, 1, 0, 0, 0, 6574, 6561, 1, 0, 0, 0, 6574, 6563, 1, 0, 0, 0, 6574, 6569, 1, 0, 0, 0, 6575, 6578, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6582, 1, 0, 0, 0, 6578, 6576, 1, 0, 0, 0, 6579, 6581, 5, 42, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6584, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6585, 1, 0, 0, 0, 6584, 6582, 1, 0, 0, 0, 6585, 6586, 5, 42, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6589, 6, 675, 7, 0, 6589, 1356, 1, 0, 0, 0, 6590, 6591, 5, 47, 0, 0, 6591, 6592, 5, 42, 0, 0, 6592, 6617, 1, 0, 0, 0, 6593, 6595, 5, 47, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6598, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6599, 1, 0, 0, 0, 6598, 6596, 1, 0, 0, 0, 6599, 6616, 3, 1355, 675, 0, 6600, 6616, 8, 45, 0, 0, 6601, 6603, 5, 47, 0, 0, 6602, 6601, 1, 0, 0, 0, 6603, 6604, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6614, 8, 45, 0, 0, 6607, 6609, 5, 42, 0, 0, 6608, 6607, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6614, 8, 45, 0, 0, 6613, 6602, 1, 0, 0, 0, 6613, 6608, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6596, 1, 0, 0, 0, 6615, 6600, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6637, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6622, 5, 47, 0, 0, 6621, 6620, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6623, 6624, 1, 0, 0, 0, 6624, 6638, 1, 0, 0, 0, 6625, 6627, 5, 42, 0, 0, 6626, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6638, 1, 0, 0, 0, 6630, 6632, 5, 47, 0, 0, 6631, 6630, 1, 0, 0, 0, 6632, 6635, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6633, 6634, 1, 0, 0, 0, 6634, 6636, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6638, 3, 1357, 676, 0, 6637, 6621, 1, 0, 0, 0, 6637, 6626, 1, 0, 0, 0, 6637, 6633, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 6, 676, 8, 0, 6640, 1358, 1, 0, 0, 0, 6641, 6653, 5, 92, 0, 0, 6642, 6652, 8, 46, 0, 0, 6643, 6647, 5, 34, 0, 0, 6644, 6646, 8, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6649, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6650, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6650, 6652, 5, 34, 0, 0, 6651, 6642, 1, 0, 0, 0, 6651, 6643, 1, 0, 0, 0, 6652, 6655, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6656, 6660, 5, 34, 0, 0, 6657, 6659, 8, 47, 0, 0, 6658, 6657, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6664, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6656, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 1360, 1, 0, 0, 0, 6665, 6666, 5, 92, 0, 0, 6666, 6667, 5, 92, 0, 0, 6667, 1362, 1, 0, 0, 0, 6668, 6669, 9, 0, 0, 0, 6669, 1364, 1, 0, 0, 0, 6670, 6671, 3, 1369, 682, 0, 6671, 6672, 5, 39, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 6, 680, 9, 0, 6674, 1366, 1, 0, 0, 0, 6675, 6677, 3, 1369, 682, 0, 6676, 6678, 5, 92, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6680, 5, 0, 0, 1, 6680, 1368, 1, 0, 0, 0, 6681, 6682, 5, 39, 0, 0, 6682, 6705, 5, 39, 0, 0, 6683, 6701, 5, 92, 0, 0, 6684, 6685, 5, 120, 0, 0, 6685, 6702, 7, 39, 0, 0, 6686, 6687, 5, 117, 0, 0, 6687, 6688, 7, 39, 0, 0, 6688, 6689, 7, 39, 0, 0, 6689, 6690, 7, 39, 0, 0, 6690, 6702, 7, 39, 0, 0, 6691, 6692, 5, 85, 0, 0, 6692, 6693, 7, 39, 0, 0, 6693, 6694, 7, 39, 0, 0, 6694, 6695, 7, 39, 0, 0, 6695, 6696, 7, 39, 0, 0, 6696, 6697, 7, 39, 0, 0, 6697, 6698, 7, 39, 0, 0, 6698, 6699, 7, 39, 0, 0, 6699, 6702, 7, 39, 0, 0, 6700, 6702, 8, 48, 0, 0, 6701, 6684, 1, 0, 0, 0, 6701, 6686, 1, 0, 0, 0, 6701, 6691, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6705, 8, 49, 0, 0, 6704, 6681, 1, 0, 0, 0, 6704, 6683, 1, 0, 0, 0, 6704, 6703, 1, 0, 0, 0, 6705, 6708, 1, 0, 0, 0, 6706, 6704, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6710, 3, 1375, 685, 0, 6710, 6711, 5, 39, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 683, 9, 0, 6713, 1372, 1, 0, 0, 0, 6714, 6716, 3, 1375, 685, 0, 6715, 6717, 5, 92, 0, 0, 6716, 6715, 1, 0, 0, 0, 6716, 6717, 1, 0, 0, 0, 6717, 6718, 1, 0, 0, 0, 6718, 6719, 5, 0, 0, 1, 6719, 1374, 1, 0, 0, 0, 6720, 6721, 5, 39, 0, 0, 6721, 6726, 5, 39, 0, 0, 6722, 6723, 5, 92, 0, 0, 6723, 6726, 9, 0, 0, 0, 6724, 6726, 8, 49, 0, 0, 6725, 6720, 1, 0, 0, 0, 6725, 6722, 1, 0, 0, 0, 6725, 6724, 1, 0, 0, 0, 6726, 6729, 1, 0, 0, 0, 6727, 6725, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 1376, 1, 0, 0, 0, 6729, 6727, 1, 0, 0, 0, 6730, 6731, 3, 1349, 672, 0, 6731, 6732, 1, 0, 0, 0, 6732, 6733, 6, 686, 10, 0, 6733, 6734, 6, 686, 7, 0, 6734, 1378, 1, 0, 0, 0, 6735, 6736, 3, 1351, 673, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 687, 11, 0, 6738, 6739, 6, 687, 7, 0, 6739, 6740, 6, 687, 12, 0, 6740, 1380, 1, 0, 0, 0, 6741, 6742, 6, 688, 13, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 6, 688, 14, 0, 6744, 6745, 6, 688, 15, 0, 6745, 1382, 1, 0, 0, 0, 6746, 6747, 3, 1349, 672, 0, 6747, 6748, 1, 0, 0, 0, 6748, 6749, 6, 689, 10, 0, 6749, 6750, 6, 689, 7, 0, 6750, 1384, 1, 0, 0, 0, 6751, 6752, 3, 1351, 673, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 6, 690, 11, 0, 6754, 6755, 6, 690, 7, 0, 6755, 1386, 1, 0, 0, 0, 6756, 6757, 5, 39, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6759, 6, 691, 2, 0, 6759, 6760, 6, 691, 16, 0, 6760, 1388, 1, 0, 0, 0, 6761, 6762, 6, 692, 17, 0, 6762, 6763, 1, 0, 0, 0, 6763, 6764, 6, 692, 14, 0, 6764, 6765, 6, 692, 15, 0, 6765, 1390, 1, 0, 0, 0, 6766, 6768, 8, 50, 0, 0, 6767, 6766, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6767, 1, 0, 0, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6779, 1, 0, 0, 0, 6771, 6775, 5, 36, 0, 0, 6772, 6774, 8, 50, 0, 0, 6773, 6772, 1, 0, 0, 0, 6774, 6777, 1, 0, 0, 0, 6775, 6773, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6779, 1, 0, 0, 0, 6777, 6775, 1, 0, 0, 0, 6778, 6767, 1, 0, 0, 0, 6778, 6771, 1, 0, 0, 0, 6779, 1392, 1, 0, 0, 0, 6780, 6782, 5, 36, 0, 0, 6781, 6783, 3, 1319, 657, 0, 6782, 6781, 1, 0, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 1, 0, 0, 0, 6784, 6785, 5, 36, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 4, 694, 8, 0, 6787, 6788, 6, 694, 18, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6790, 6, 694, 15, 0, 6790, 1394, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1462, 1468, 1470, 1475, 1479, 1481, 1484, 1493, 1495, 1500, 1505, 1507, 6324, 6333, 6337, 6341, 6350, 6352, 6362, 6364, 6390, 6392, 6410, 6421, 6432, 6449, 6469, 6473, 6476, 6482, 6485, 6490, 6494, 6499, 6506, 6517, 6519, 6527, 6533, 6536, 6546, 6557, 6565, 6571, 6574, 6576, 6582, 6596, 6604, 6610, 6613, 6615, 6617, 6623, 6628, 6633, 6637, 6647, 6651, 6653, 6660, 6663, 6677, 6701, 6704, 6706, 6716, 6725, 6727, 6769, 6775, 6778, 6782, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 656, 1, 5, 4, 0, 1, 667, 2, 0, 1, 0, 1, 676, 3, 2, 2, 0, 7, 663, 0, 7, 664, 0, 2, 3, 0, 1, 688, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 692, 5, 1, 694, 6] \ No newline at end of file diff --git a/antlr4_postgresql/.antlr/PostgreSQLLexer.java b/antlr4_postgresql/.antlr/PostgreSQLLexer.java deleted file mode 100644 index 280fdf4..0000000 --- a/antlr4_postgresql/.antlr/PostgreSQLLexer.java +++ /dev/null @@ -1,5245 +0,0 @@ -// Generated from c:/Users/Hecko/Desktop/SQL-schemas/antlr4_postgresql/PostgreSQLLexer.g4 by ANTLR 4.13.1 - - -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class PostgreSQLLexer extends PostgreSQLLexerBase { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - Dollar=1, OPEN_PAREN=2, CLOSE_PAREN=3, OPEN_BRACKET=4, CLOSE_BRACKET=5, - COMMA=6, SEMI=7, COLON=8, STAR=9, EQUAL=10, DOT=11, PLUS=12, MINUS=13, - SLASH=14, CARET=15, LT=16, GT=17, LESS_LESS=18, GREATER_GREATER=19, COLON_EQUALS=20, - LESS_EQUALS=21, EQUALS_GREATER=22, GREATER_EQUALS=23, DOT_DOT=24, NOT_EQUALS=25, - TYPECAST=26, PERCENT=27, PARAM=28, Operator=29, ALL=30, ANALYSE=31, ANALYZE=32, - AND=33, ANY=34, ARRAY=35, AS=36, ASC=37, ASYMMETRIC=38, BOTH=39, CASE=40, - CAST=41, CHECK=42, COLLATE=43, COLUMN=44, CONSTRAINT=45, CREATE=46, CURRENT_CATALOG=47, - CURRENT_DATE=48, CURRENT_ROLE=49, CURRENT_TIME=50, CURRENT_TIMESTAMP=51, - CURRENT_USER=52, DEFAULT=53, DEFERRABLE=54, DESC=55, DISTINCT=56, DO=57, - ELSE=58, EXCEPT=59, FALSE_P=60, FETCH=61, FOR=62, FOREIGN=63, FROM=64, - GRANT=65, GROUP_P=66, HAVING=67, IN_P=68, INITIALLY=69, INTERSECT=70, - INTO=71, LATERAL_P=72, LEADING=73, LIMIT=74, LOCALTIME=75, LOCALTIMESTAMP=76, - NOT=77, NULL_P=78, OFFSET=79, ON=80, ONLY=81, OR=82, ORDER=83, PLACING=84, - PRIMARY=85, REFERENCES=86, RETURNING=87, SELECT=88, SESSION_USER=89, SOME=90, - SYMMETRIC=91, TABLE=92, THEN=93, TO=94, TRAILING=95, TRUE_P=96, UNION=97, - UNIQUE=98, USER=99, USING=100, VARIADIC=101, WHEN=102, WHERE=103, WINDOW=104, - WITH=105, AUTHORIZATION=106, BINARY=107, COLLATION=108, CONCURRENTLY=109, - CROSS=110, CURRENT_SCHEMA=111, FREEZE=112, FULL=113, ILIKE=114, INNER_P=115, - IS=116, ISNULL=117, JOIN=118, LEFT=119, LIKE=120, NATURAL=121, NOTNULL=122, - OUTER_P=123, OVER=124, OVERLAPS=125, RIGHT=126, SIMILAR=127, VERBOSE=128, - ABORT_P=129, ABSOLUTE_P=130, ACCESS=131, ACTION=132, ADD_P=133, ADMIN=134, - AFTER=135, AGGREGATE=136, ALSO=137, ALTER=138, ALWAYS=139, ASSERTION=140, - ASSIGNMENT=141, AT=142, ATTRIBUTE=143, BACKWARD=144, BEFORE=145, BEGIN_P=146, - BY=147, CACHE=148, CALLED=149, CASCADE=150, CASCADED=151, CATALOG=152, - CHAIN=153, CHARACTERISTICS=154, CHECKPOINT=155, CLASS=156, CLOSE=157, - CLUSTER=158, COMMENT=159, COMMENTS=160, COMMIT=161, COMMITTED=162, CONFIGURATION=163, - CONNECTION=164, CONSTRAINTS=165, CONTENT_P=166, CONTINUE_P=167, CONVERSION_P=168, - COPY=169, COST=170, CSV=171, CURSOR=172, CYCLE=173, DATA_P=174, DATABASE=175, - DAY_P=176, DEALLOCATE=177, DECLARE=178, DEFAULTS=179, DEFERRED=180, DEFINER=181, - DELETE_P=182, DELIMITER=183, DELIMITERS=184, DICTIONARY=185, DISABLE_P=186, - DISCARD=187, DOCUMENT_P=188, DOMAIN_P=189, DOUBLE_P=190, DROP=191, EACH=192, - ENABLE_P=193, ENCODING=194, ENCRYPTED=195, ENUM_P=196, ESCAPE=197, EVENT=198, - EXCLUDE=199, EXCLUDING=200, EXCLUSIVE=201, EXECUTE=202, EXPLAIN=203, EXTENSION=204, - EXTERNAL=205, FAMILY=206, FIRST_P=207, FOLLOWING=208, FORCE=209, FORWARD=210, - FUNCTION=211, FUNCTIONS=212, GLOBAL=213, GRANTED=214, HANDLER=215, HEADER_P=216, - HOLD=217, HOUR_P=218, IDENTITY_P=219, IF_P=220, IMMEDIATE=221, IMMUTABLE=222, - IMPLICIT_P=223, INCLUDING=224, INCREMENT=225, INDEX=226, INDEXES=227, - INHERIT=228, INHERITS=229, INLINE_P=230, INSENSITIVE=231, INSERT=232, - INSTEAD=233, INVOKER=234, ISOLATION=235, KEY=236, LABEL=237, LANGUAGE=238, - LARGE_P=239, LAST_P=240, LEAKPROOF=241, LEVEL=242, LISTEN=243, LOAD=244, - LOCAL=245, LOCATION=246, LOCK_P=247, MAPPING=248, MATCH=249, MATCHED=250, - MATERIALIZED=251, MAXVALUE=252, MERGE=253, MINUTE_P=254, MINVALUE=255, - MODE=256, MONTH_P=257, MOVE=258, NAME_P=259, NAMES=260, NEXT=261, NO=262, - NOTHING=263, NOTIFY=264, NOWAIT=265, NULLS_P=266, OBJECT_P=267, OF=268, - OFF=269, OIDS=270, OPERATOR=271, OPTION=272, OPTIONS=273, OWNED=274, OWNER=275, - PARSER=276, PARTIAL=277, PARTITION=278, PASSING=279, PASSWORD=280, PLANS=281, - PRECEDING=282, PREPARE=283, PREPARED=284, PRESERVE=285, PRIOR=286, PRIVILEGES=287, - PROCEDURAL=288, PROCEDURE=289, PROGRAM=290, QUOTE=291, RANGE=292, READ=293, - REASSIGN=294, RECHECK=295, RECURSIVE=296, REF=297, REFRESH=298, REINDEX=299, - RELATIVE_P=300, RELEASE=301, RENAME=302, REPEATABLE=303, REPLACE=304, - REPLICA=305, RESET=306, RESTART=307, RESTRICT=308, RETURNS=309, REVOKE=310, - ROLE=311, ROLLBACK=312, ROWS=313, RULE=314, SAVEPOINT=315, SCHEMA=316, - SCROLL=317, SEARCH=318, SECOND_P=319, SECURITY=320, SEQUENCE=321, SEQUENCES=322, - SERIALIZABLE=323, SERVER=324, SESSION=325, SET=326, SHARE=327, SHOW=328, - SIMPLE=329, SNAPSHOT=330, STABLE=331, STANDALONE_P=332, START=333, STATEMENT=334, - STATISTICS=335, STDIN=336, STDOUT=337, STORAGE=338, STRICT_P=339, STRIP_P=340, - SYSID=341, SYSTEM_P=342, TABLES=343, TABLESPACE=344, TEMP=345, TEMPLATE=346, - TEMPORARY=347, TEXT_P=348, TRANSACTION=349, TRIGGER=350, TRUNCATE=351, - TRUSTED=352, TYPE_P=353, TYPES_P=354, UNBOUNDED=355, UNCOMMITTED=356, - UNENCRYPTED=357, UNKNOWN=358, UNLISTEN=359, UNLOGGED=360, UNTIL=361, UPDATE=362, - VACUUM=363, VALID=364, VALIDATE=365, VALIDATOR=366, VARYING=367, VERSION_P=368, - VIEW=369, VOLATILE=370, WHITESPACE_P=371, WITHOUT=372, WORK=373, WRAPPER=374, - WRITE=375, XML_P=376, YEAR_P=377, YES_P=378, ZONE=379, BETWEEN=380, BIGINT=381, - BIT=382, BOOLEAN_P=383, CHAR_P=384, CHARACTER=385, COALESCE=386, DEC=387, - DECIMAL_P=388, EXISTS=389, EXTRACT=390, FLOAT_P=391, GREATEST=392, INOUT=393, - INT_P=394, INTEGER=395, INTERVAL=396, LEAST=397, NATIONAL=398, NCHAR=399, - NONE=400, NULLIF=401, NUMERIC=402, OVERLAY=403, POSITION=404, PRECISION=405, - REAL=406, ROW=407, SETOF=408, SMALLINT=409, SUBSTRING=410, TIME=411, TIMESTAMP=412, - TREAT=413, TRIM=414, VALUES=415, VARCHAR=416, XMLATTRIBUTES=417, XMLCOMMENT=418, - XMLAGG=419, XML_IS_WELL_FORMED=420, XML_IS_WELL_FORMED_DOCUMENT=421, XML_IS_WELL_FORMED_CONTENT=422, - XPATH=423, XPATH_EXISTS=424, XMLCONCAT=425, XMLELEMENT=426, XMLEXISTS=427, - XMLFOREST=428, XMLPARSE=429, XMLPI=430, XMLROOT=431, XMLSERIALIZE=432, - CALL=433, CURRENT_P=434, ATTACH=435, DETACH=436, EXPRESSION=437, GENERATED=438, - LOGGED=439, STORED=440, INCLUDE=441, ROUTINE=442, TRANSFORM=443, IMPORT_P=444, - POLICY=445, METHOD=446, REFERENCING=447, NEW=448, OLD=449, VALUE_P=450, - SUBSCRIPTION=451, PUBLICATION=452, OUT_P=453, END_P=454, ROUTINES=455, - SCHEMAS=456, PROCEDURES=457, INPUT_P=458, SUPPORT=459, PARALLEL=460, SQL_P=461, - DEPENDS=462, OVERRIDING=463, CONFLICT=464, SKIP_P=465, LOCKED=466, TIES=467, - ROLLUP=468, CUBE=469, GROUPING=470, SETS=471, TABLESAMPLE=472, ORDINALITY=473, - XMLTABLE=474, COLUMNS=475, XMLNAMESPACES=476, ROWTYPE=477, NORMALIZED=478, - WITHIN=479, FILTER=480, GROUPS=481, OTHERS=482, NFC=483, NFD=484, NFKC=485, - NFKD=486, UESCAPE=487, VIEWS=488, NORMALIZE=489, DUMP=490, PRINT_STRICT_PARAMS=491, - VARIABLE_CONFLICT=492, ERROR=493, USE_VARIABLE=494, USE_COLUMN=495, ALIAS=496, - CONSTANT=497, PERFORM=498, GET=499, DIAGNOSTICS=500, STACKED=501, ELSIF=502, - WHILE=503, REVERSE=504, FOREACH=505, SLICE=506, EXIT=507, RETURN=508, - QUERY=509, RAISE=510, SQLSTATE=511, DEBUG=512, LOG=513, INFO=514, NOTICE=515, - WARNING=516, EXCEPTION=517, ASSERT=518, LOOP=519, OPEN=520, ABS=521, CBRT=522, - CEIL=523, CEILING=524, DEGREES=525, DIV=526, EXP=527, FACTORIAL=528, FLOOR=529, - GCD=530, LCM=531, LN=532, LOG10=533, MIN_SCALE=534, MOD=535, PI=536, POWER=537, - RADIANS=538, ROUND=539, SCALE=540, SIGN=541, SQRT=542, TRIM_SCALE=543, - TRUNC=544, WIDTH_BUCKET=545, RANDOM=546, SETSEED=547, ACOS=548, ACOSD=549, - ASIN=550, ASIND=551, ATAN=552, ATAND=553, ATAN2=554, ATAN2D=555, COS=556, - COSD=557, COT=558, COTD=559, SIN=560, SIND=561, TAN=562, TAND=563, SINH=564, - COSH=565, TANH=566, ASINH=567, ACOSH=568, ATANH=569, BIT_LENGTH=570, CHAR_LENGTH=571, - CHARACTER_LENGTH=572, LOWER=573, OCTET_LENGTH=574, UPPER=575, ASCII=576, - BTRIM=577, CHR=578, CONCAT=579, CONCAT_WS=580, FORMAT=581, INITCAP=582, - LENGTH=583, LPAD=584, LTRIM=585, MD5=586, PARSE_IDENT=587, PG_CLIENT_ENCODING=588, - QUOTE_IDENT=589, QUOTE_LITERAL=590, QUOTE_NULLABLE=591, REGEXP_COUNT=592, - REGEXP_INSTR=593, REGEXP_LIKE=594, REGEXP_MATCH=595, REGEXP_MATCHES=596, - REGEXP_REPLACE=597, REGEXP_SPLIT_TO_ARRAY=598, REGEXP_SPLIT_TO_TABLE=599, - REGEXP_SUBSTR=600, REPEAT=601, RPAD=602, RTRIM=603, SPLIT_PART=604, STARTS_WITH=605, - STRING_TO_ARRAY=606, STRING_TO_TABLE=607, STRPOS=608, SUBSTR=609, TO_ASCII=610, - TO_HEX=611, TRANSLATE=612, UNISTR=613, AGE=614, CLOCK_TIMESTAMP=615, DATE_BIN=616, - DATE_PART=617, DATE_TRUNC=618, ISFINITE=619, JUSTIFY_DAYS=620, JUSTIFY_HOURS=621, - JUSTIFY_INTERVAL=622, MAKE_DATE=623, MAKE_INTERVAL=624, MAKE_TIME=625, - MAKE_TIMESTAMP=626, MAKE_TIMESTAMPTZ=627, NOW=628, STATEMENT_TIMESTAMP=629, - TIMEOFDAY=630, TRANSACTION_TIMESTAMP=631, TO_TIMESTAMP=632, TO_CHAR=633, - TO_DATE=634, TO_NUMBER=635, Identifier=636, QuotedIdentifier=637, UnterminatedQuotedIdentifier=638, - InvalidQuotedIdentifier=639, InvalidUnterminatedQuotedIdentifier=640, - UnicodeQuotedIdentifier=641, UnterminatedUnicodeQuotedIdentifier=642, - InvalidUnicodeQuotedIdentifier=643, InvalidUnterminatedUnicodeQuotedIdentifier=644, - StringConstant=645, UnterminatedStringConstant=646, UnicodeEscapeStringConstant=647, - UnterminatedUnicodeEscapeStringConstant=648, BeginDollarStringConstant=649, - BinaryStringConstant=650, UnterminatedBinaryStringConstant=651, InvalidBinaryStringConstant=652, - InvalidUnterminatedBinaryStringConstant=653, HexadecimalStringConstant=654, - UnterminatedHexadecimalStringConstant=655, InvalidHexadecimalStringConstant=656, - InvalidUnterminatedHexadecimalStringConstant=657, Integral=658, NumericFail=659, - Numeric=660, PLSQLVARIABLENAME=661, PLSQLIDENTIFIER=662, Whitespace=663, - Newline=664, LineComment=665, BlockComment=666, UnterminatedBlockComment=667, - MetaCommand=668, EndMetaCommand=669, ErrorCharacter=670, EscapeStringConstant=671, - UnterminatedEscapeStringConstant=672, InvalidEscapeStringConstant=673, - InvalidUnterminatedEscapeStringConstant=674, AfterEscapeStringConstantMode_NotContinued=675, - AfterEscapeStringConstantWithNewlineMode_NotContinued=676, DollarText=677, - EndDollarStringConstant=678, AfterEscapeStringConstantWithNewlineMode_Continued=679; - public static final int - EscapeStringConstantMode=1, AfterEscapeStringConstantMode=2, AfterEscapeStringConstantWithNewlineMode=3, - DollarQuotedStringMode=4; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE", "EscapeStringConstantMode", "AfterEscapeStringConstantMode", - "AfterEscapeStringConstantWithNewlineMode", "DollarQuotedStringMode" - }; - - private static String[] makeRuleNames() { - return new String[] { - "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", - "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", - "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", - "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", - "TYPECAST", "PERCENT", "PARAM", "Operator", "OperatorEndingWithPlusMinus", - "OperatorCharacter", "OperatorCharacterNotAllowPlusMinusAtEnd", "OperatorCharacterAllowPlusMinusAtEnd", - "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", - "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", - "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", - "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", - "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", - "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", - "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", - "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", - "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", - "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", - "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", - "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", - "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", - "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", - "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", - "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", - "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", - "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", - "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", - "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", - "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", - "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", - "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", - "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", - "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", - "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", - "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", - "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", - "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", - "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", - "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", - "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", - "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", - "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", - "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", - "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", - "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", - "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", - "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", - "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", - "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", - "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", - "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", - "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", - "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", - "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", - "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", - "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", - "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", - "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", - "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", - "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", - "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", - "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", - "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", - "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", - "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", - "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", - "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", - "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", - "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", - "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", - "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", - "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", - "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", - "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", - "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", - "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", - "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", - "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", - "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", - "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", - "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "IdentifierStartChar", - "IdentifierChar", "StrictIdentifierChar", "QuotedIdentifier", "UnterminatedQuotedIdentifier", - "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", "UnicodeQuotedIdentifier", - "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", - "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", - "BeginEscapeStringConstant", "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", - "BeginDollarStringConstant", "Tag", "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "Digits", "PLSQLVARIABLENAME", - "PLSQLIDENTIFIER", "Whitespace", "Newline", "LineComment", "BlockComment", - "UnterminatedBlockComment", "MetaCommand", "EndMetaCommand", "ErrorCharacter", - "EscapeStringConstant", "UnterminatedEscapeStringConstant", "EscapeStringText", - "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", - "InvalidEscapeStringText", "AfterEscapeStringConstantMode_Whitespace", - "AfterEscapeStringConstantMode_Newline", "AfterEscapeStringConstantMode_NotContinued", - "AfterEscapeStringConstantWithNewlineMode_Whitespace", "AfterEscapeStringConstantWithNewlineMode_Newline", - "AfterEscapeStringConstantWithNewlineMode_Continued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", - "'='", "'.'", "'+'", "'-'", "'/'", "'^'", "'<'", "'>'", "'<<'", "'>>'", - "':='", "'<='", "'=>'", "'>='", "'..'", "'<>'", "'::'", "'%'", null, - null, "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", - "'AS'", "'ASC'", "'ASYMMETRIC'", "'BOTH'", "'CASE'", "'CAST'", "'CHECK'", - "'COLLATE'", "'COLUMN'", "'CONSTRAINT'", "'CREATE'", "'CURRENT_CATALOG'", - "'CURRENT_DATE'", "'CURRENT_ROLE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DEFAULT'", "'DEFERRABLE'", "'DESC'", "'DISTINCT'", - "'DO'", "'ELSE'", "'EXCEPT'", "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", - "'FROM'", "'GRANT'", "'GROUP'", "'HAVING'", "'IN'", "'INITIALLY'", "'INTERSECT'", - "'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", - "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", "'ORDER'", "'PLACING'", - "'PRIMARY'", "'REFERENCES'", "'RETURNING'", "'SELECT'", "'SESSION_USER'", - "'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", "'TRUE'", - "'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", "'WHEN'", "'WHERE'", - "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", "'CONCURRENTLY'", - "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", "'FULL'", "'ILIKE'", "'INNER'", - "'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", - "'OUTER'", "'OVER'", "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", - "'ABORT'", "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", "'ADMIN'", - "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", "'ALWAYS'", "'ASSERTION'", - "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", "'BEGIN'", - "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", "'CATALOG'", - "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", "'CLASS'", "'CLOSE'", - "'CLUSTER'", "'COMMENT'", "'COMMENTS'", "'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", - "'CONNECTION'", "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", "'CONVERSION'", - "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", "'DATABASE'", - "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", "'DEFERRED'", "'DEFINER'", - "'DELETE'", "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", "'DISABLE'", - "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", "'DROP'", "'EACH'", - "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", "'ENUM'", "'ESCAPE'", "'EVENT'", - "'EXCLUDE'", "'EXCLUDING'", "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", - "'EXTENSION'", "'EXTERNAL'", "'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", - "'FORWARD'", "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", - "'HEADER'", "'HOLD'", "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", - "'IMMUTABLE'", "'IMPLICIT'", "'INCLUDING'", "'INCREMENT'", "'INDEX'", - "'INDEXES'", "'INHERIT'", "'INHERITS'", "'INLINE'", "'INSENSITIVE'", - "'INSERT'", "'INSTEAD'", "'INVOKER'", "'ISOLATION'", "'KEY'", "'LABEL'", - "'LANGUAGE'", "'LARGE'", "'LAST'", "'LEAKPROOF'", "'LEVEL'", "'LISTEN'", - "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'MAPPING'", "'MATCH'", - "'MATCHED'", "'MATERIALIZED'", "'MAXVALUE'", "'MERGE'", "'MINUTE'", "'MINVALUE'", - "'MODE'", "'MONTH'", "'MOVE'", "'NAME'", "'NAMES'", "'NEXT'", "'NO'", - "'NOTHING'", "'NOTIFY'", "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", "'OFF'", - "'OIDS'", "'OPERATOR'", "'OPTION'", "'OPTIONS'", "'OWNED'", "'OWNER'", - "'PARSER'", "'PARTIAL'", "'PARTITION'", "'PASSING'", "'PASSWORD'", "'PLANS'", - "'PRECEDING'", "'PREPARE'", "'PREPARED'", "'PRESERVE'", "'PRIOR'", "'PRIVILEGES'", - "'PROCEDURAL'", "'PROCEDURE'", "'PROGRAM'", "'QUOTE'", "'RANGE'", "'READ'", - "'REASSIGN'", "'RECHECK'", "'RECURSIVE'", "'REF'", "'REFRESH'", "'REINDEX'", - "'RELATIVE'", "'RELEASE'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", "'REPLICA'", - "'RESET'", "'RESTART'", "'RESTRICT'", "'RETURNS'", "'REVOKE'", "'ROLE'", - "'ROLLBACK'", "'ROWS'", "'RULE'", "'SAVEPOINT'", "'SCHEMA'", "'SCROLL'", - "'SEARCH'", "'SECOND'", "'SECURITY'", "'SEQUENCE'", "'SEQUENCES'", "'SERIALIZABLE'", - "'SERVER'", "'SESSION'", "'SET'", "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", - "'STABLE'", "'STANDALONE'", "'START'", "'STATEMENT'", "'STATISTICS'", - "'STDIN'", "'STDOUT'", "'STORAGE'", "'STRICT'", "'STRIP'", "'SYSID'", - "'SYSTEM'", "'TABLES'", "'TABLESPACE'", "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", - "'TEXT'", "'TRANSACTION'", "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", - "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", "'UNKNOWN'", - "'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", "'VACUUM'", "'VALID'", - "'VALIDATE'", "'VALIDATOR'", "'VARYING'", "'VERSION'", "'VIEW'", "'VOLATILE'", - "'WHITESPACE'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", - "'YEAR'", "'YES'", "'ZONE'", "'BETWEEN'", "'BIGINT'", "'BIT'", "'BOOLEAN'", - "'CHAR'", "'CHARACTER'", "'COALESCE'", "'DEC'", "'DECIMAL'", "'EXISTS'", - "'EXTRACT'", "'FLOAT'", "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", - "'INTERVAL'", "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", "'NULLIF'", - "'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", "'REAL'", "'ROW'", - "'SETOF'", "'SMALLINT'", "'SUBSTRING'", "'TIME'", "'TIMESTAMP'", "'TREAT'", - "'TRIM'", "'VALUES'", "'VARCHAR'", "'XMLATTRIBUTES'", "'XMLCOMMENT'", - "'XMLAGG'", "'XML_IS_WELL_FORMED'", "'XML_IS_WELL_FORMED_DOCUMENT'", - "'XML_IS_WELL_FORMED_CONTENT'", "'XPATH'", "'XPATH_EXISTS'", "'XMLCONCAT'", - "'XMLELEMENT'", "'XMLEXISTS'", "'XMLFOREST'", "'XMLPARSE'", "'XMLPI'", - "'XMLROOT'", "'XMLSERIALIZE'", "'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", - "'EXPRESSION'", "'GENERATED'", "'LOGGED'", "'STORED'", "'INCLUDE'", "'ROUTINE'", - "'TRANSFORM'", "'IMPORT'", "'POLICY'", "'METHOD'", "'REFERENCING'", "'NEW'", - "'OLD'", "'VALUE'", "'SUBSCRIPTION'", "'PUBLICATION'", "'OUT'", "'END'", - "'ROUTINES'", "'SCHEMAS'", "'PROCEDURES'", "'INPUT'", "'SUPPORT'", "'PARALLEL'", - "'SQL'", "'DEPENDS'", "'OVERRIDING'", "'CONFLICT'", "'SKIP'", "'LOCKED'", - "'TIES'", "'ROLLUP'", "'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", - "'ORDINALITY'", "'XMLTABLE'", "'COLUMNS'", "'XMLNAMESPACES'", "'ROWTYPE'", - "'NORMALIZED'", "'WITHIN'", "'FILTER'", "'GROUPS'", "'OTHERS'", "'NFC'", - "'NFD'", "'NFKC'", "'NFKD'", "'UESCAPE'", "'VIEWS'", "'NORMALIZE'", "'DUMP'", - "'PRINT_STRICT_PARAMS'", "'VARIABLE_CONFLICT'", "'ERROR'", "'USE_VARIABLE'", - "'USE_COLUMN'", "'ALIAS'", "'CONSTANT'", "'PERFORM'", "'GET'", "'DIAGNOSTICS'", - "'STACKED'", "'ELSIF'", "'WHILE'", "'REVERSE'", "'FOREACH'", "'SLICE'", - "'EXIT'", "'RETURN'", "'QUERY'", "'RAISE'", "'SQLSTATE'", "'DEBUG'", - "'LOG'", "'INFO'", "'NOTICE'", "'WARNING'", "'EXCEPTION'", "'ASSERT'", - "'LOOP'", "'OPEN'", "'ABS'", "'CBRT'", "'CEIL'", "'CEILING'", "'DEGREES'", - "'DIV'", "'EXP'", "'FACTORIAL'", "'FLOOR'", "'GCD'", "'LCM'", "'LN'", - "'LOG10'", "'MIN_SCALE'", "'MOD'", "'PI'", "'POWER'", "'RADIANS'", "'ROUND'", - "'SCALE'", "'SIGN'", "'SQRT'", "'TRIM_SCALE'", "'TRUNC'", "'WIDTH_BUCKET'", - "'RANDOM'", "'SETSEED'", "'ACOS'", "'ACOSD'", "'ASIN'", "'ASIND'", "'ATAN'", - "'ATAND'", "'ATAN2'", "'ATAN2D'", "'COS'", "'COSD'", "'COT'", "'COTD'", - "'SIN'", "'SIND'", "'TAN'", "'TAND'", "'SINH'", "'COSH'", "'TANH'", "'ASINH'", - "'ACOSH'", "'ATANH'", "'BIT_LENGTH'", "'CHAR_LENGTH'", "'CHARACTER_LENGTH'", - "'LOWER'", "'OCTET_LENGTH'", "'UPPER'", "'ASCII'", "'BTRIM'", "'CHR'", - "'CONCAT'", "'CONCAT_WS'", "'FORMAT'", "'INITCAP'", "'LENGTH'", "'LPAD'", - "'LTRIM'", "'MD5'", "'PARSE_IDENT'", "'PG_CLIENT_ENCODING'", "'QUOTE_IDENT'", - "'QUOTE_LITERAL'", "'QUOTE_NULLABLE'", "'REGEXP_COUNT'", "'REGEXP_INSTR'", - "'REGEXP_LIKE'", "'REGEXP_MATCH'", "'REGEXP_MATCHES'", "'REGEXP_REPLACE'", - "'REGEXP_SPLIT_TO_ARRAY'", "'REGEXP_SPLIT_TO_TABLE'", "'REGEXP_SUBSTR'", - "'REPEAT'", "'RPAD'", "'RTRIM'", "'SPLIT_PART'", "'STARTS_WITH'", "'STRING_TO_ARRAY'", - "'STRING_TO_TABLE'", "'STRPOS'", "'SUBSTR'", "'TO_ASCII'", "'TO_HEX'", - "'TRANSLATE'", "'UNISTR'", "'AGE'", "'CLOCK_TIMESTAMP'", "'DATE_BIN'", - "'DATE_PART'", "'DATE_TRUNC'", "'ISFINITE'", "'JUSTIFY_DAYS'", "'JUSTIFY_HOURS'", - "'JUSTIFY_INTERVAL'", "'MAKE_DATE'", "'MAKE_INTERVAL'", "'MAKE_TIME'", - "'MAKE_TIMESTAMP'", "'MAKE_TIMESTAMPTZ'", "'NOW'", "'STATEMENT_TIMESTAMP'", - "'TIMEOFDAY'", "'TRANSACTION_TIMESTAMP'", "'TO_TIMESTAMP'", "'TO_CHAR'", - "'TO_DATE'", "'TO_NUMBER'", 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, "'''" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", - "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", - "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", - "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", - "TYPECAST", "PERCENT", "PARAM", "Operator", "ALL", "ANALYSE", "ANALYZE", - "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", "BOTH", "CASE", "CAST", - "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", "CREATE", "CURRENT_CATALOG", - "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", - "CURRENT_USER", "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", - "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", - "HAVING", "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", - "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", - "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", - "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", - "TRAILING", "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", - "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", "BINARY", "COLLATION", - "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", - "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", - "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", - "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", - "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", - "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", "CHECKPOINT", "CLASS", - "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", - "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", - "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", - "DELIMITER", "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", - "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", "FOLLOWING", - "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", - "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", - "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", - "ISOLATION", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", - "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", - "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", "NO", - "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", "OIDS", - "OPERATOR", "OPTION", "OPTIONS", "OWNED", "OWNER", "PARSER", "PARTIAL", - "PARTITION", "PASSING", "PASSWORD", "PLANS", "PRECEDING", "PREPARE", - "PREPARED", "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", - "REF", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", - "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", - "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", - "SERVER", "SESSION", "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", - "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", - "STORAGE", "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", - "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", - "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", "VIEW", - "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", - "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", - "GREATEST", "INOUT", "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", - "NCHAR", "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", - "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", - "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", - "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", - "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", - "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", - "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", - "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", - "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", - "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", "TIES", - "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", "ORDINALITY", "XMLTABLE", - "COLUMNS", "XMLNAMESPACES", "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", - "GROUPS", "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", - "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", - "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", - "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", - "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", - "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", - "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", - "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", "RADIANS", "ROUND", - "SCALE", "SIGN", "SQRT", "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", - "SETSEED", "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", "TAND", - "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", "CHAR_LENGTH", - "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", - "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", "LPAD", - "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", - "QUOTE_NULLABLE", "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", - "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", - "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", - "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", - "DATE_PART", "DATE_TRUNC", "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", - "JUSTIFY_INTERVAL", "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", "TRANSACTION_TIMESTAMP", - "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "QuotedIdentifier", - "UnterminatedQuotedIdentifier", "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", - "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", - "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", "UnterminatedStringConstant", - "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", - "BeginDollarStringConstant", "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "PLSQLVARIABLENAME", "PLSQLIDENTIFIER", - "Whitespace", "Newline", "LineComment", "BlockComment", "UnterminatedBlockComment", - "MetaCommand", "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", - "UnterminatedEscapeStringConstant", "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", - "AfterEscapeStringConstantMode_NotContinued", "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = "<INVALID>"; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - /* This field stores the tags which are used to detect the end of a dollar-quoted string literal. - */ - - - public PostgreSQLLexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "PostgreSQLLexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - @Override - public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { - switch (ruleIndex) { - case 28: - Operator_action((RuleContext)_localctx, actionIndex); - break; - case 656: - BeginDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - case 667: - NumericFail_action((RuleContext)_localctx, actionIndex); - break; - case 676: - UnterminatedBlockComment_action((RuleContext)_localctx, actionIndex); - break; - case 688: - AfterEscapeStringConstantMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 692: - AfterEscapeStringConstantWithNewlineMode_NotContinued_action((RuleContext)_localctx, actionIndex); - break; - case 694: - EndDollarStringConstant_action((RuleContext)_localctx, actionIndex); - break; - } - } - private void Operator_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 0: - - HandleLessLessGreaterGreater(); - - break; - } - } - private void BeginDollarStringConstant_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 1: - pushTag(); - break; - } - } - private void NumericFail_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 2: - HandleNumericFail(); - break; - } - } - private void UnterminatedBlockComment_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 3: - - UnterminatedBlockCommentDebugAssert(); - - break; - } - } - private void AfterEscapeStringConstantMode_NotContinued_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 4: - break; - } - } - private void AfterEscapeStringConstantWithNewlineMode_NotContinued_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 5: - break; - } - } - private void EndDollarStringConstant_action(RuleContext _localctx, int actionIndex) { - switch (actionIndex) { - case 6: - popTag(); - break; - } - } - @Override - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 28: - return Operator_sempred((RuleContext)_localctx, predIndex); - case 29: - return OperatorEndingWithPlusMinus_sempred((RuleContext)_localctx, predIndex); - case 640: - return IdentifierStartChar_sempred((RuleContext)_localctx, predIndex); - case 694: - return EndDollarStringConstant_sempred((RuleContext)_localctx, predIndex); - } - return true; - } - private boolean Operator_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return checkLA('-'); - case 1: - return checkLA('*'); - case 2: - return checkLA('*'); - } - return true; - } - private boolean OperatorEndingWithPlusMinus_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return checkLA('-'); - case 4: - return checkLA('*'); - case 5: - return checkLA('-'); - } - return true; - } - private boolean IdentifierStartChar_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 6: - return charIsLetter(); - case 7: - return - CheckIfUtf32Letter() - ; - } - return true; - } - private boolean EndDollarStringConstant_sempred(RuleContext _localctx, int predIndex) { - switch (predIndex) { - case 8: - return isTag(); - } - return true; - } - - private static final String _serializedATNSegment0 = - "\u0004\u0000\u02a7\u1a87\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff"+ - "\uffff\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ - "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ - "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ - "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ - "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ - "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ - "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ - "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ - "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ - "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ - "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ - "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+ - "&\u0007&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002"+ - "+\u0007+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u0002"+ - "0\u00070\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0002"+ - "5\u00075\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002"+ - ":\u0007:\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002"+ - "?\u0007?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002"+ - "D\u0007D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002"+ - "I\u0007I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002"+ - "N\u0007N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002"+ - "S\u0007S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002"+ - "X\u0007X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002"+ - "]\u0007]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002"+ - "b\u0007b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002"+ - "g\u0007g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002"+ - "l\u0007l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002"+ - "q\u0007q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002"+ - "v\u0007v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002"+ - "{\u0007{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f"+ - "\u0002\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082"+ - "\u0002\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085"+ - "\u0002\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088"+ - "\u0002\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b"+ - "\u0002\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e"+ - "\u0002\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091"+ - "\u0002\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094"+ - "\u0002\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097"+ - "\u0002\u0098\u0007\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a"+ - "\u0002\u009b\u0007\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d"+ - "\u0002\u009e\u0007\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0"+ - "\u0002\u00a1\u0007\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3"+ - "\u0002\u00a4\u0007\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6"+ - "\u0002\u00a7\u0007\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9"+ - "\u0002\u00aa\u0007\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac"+ - "\u0002\u00ad\u0007\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af"+ - "\u0002\u00b0\u0007\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2"+ - "\u0002\u00b3\u0007\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5"+ - "\u0002\u00b6\u0007\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8"+ - "\u0002\u00b9\u0007\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb"+ - "\u0002\u00bc\u0007\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be"+ - "\u0002\u00bf\u0007\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1"+ - "\u0002\u00c2\u0007\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4"+ - "\u0002\u00c5\u0007\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7"+ - "\u0002\u00c8\u0007\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca"+ - "\u0002\u00cb\u0007\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd"+ - "\u0002\u00ce\u0007\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0"+ - "\u0002\u00d1\u0007\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3"+ - "\u0002\u00d4\u0007\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6"+ - "\u0002\u00d7\u0007\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9"+ - "\u0002\u00da\u0007\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc"+ - "\u0002\u00dd\u0007\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df"+ - "\u0002\u00e0\u0007\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2"+ - "\u0002\u00e3\u0007\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5"+ - "\u0002\u00e6\u0007\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8"+ - "\u0002\u00e9\u0007\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb"+ - "\u0002\u00ec\u0007\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee"+ - "\u0002\u00ef\u0007\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1"+ - "\u0002\u00f2\u0007\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4"+ - "\u0002\u00f5\u0007\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7"+ - "\u0002\u00f8\u0007\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa"+ - "\u0002\u00fb\u0007\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd"+ - "\u0002\u00fe\u0007\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100"+ - "\u0002\u0101\u0007\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103"+ - "\u0002\u0104\u0007\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106"+ - "\u0002\u0107\u0007\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109"+ - "\u0002\u010a\u0007\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c"+ - "\u0002\u010d\u0007\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f"+ - "\u0002\u0110\u0007\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112"+ - "\u0002\u0113\u0007\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115"+ - "\u0002\u0116\u0007\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118"+ - "\u0002\u0119\u0007\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b"+ - "\u0002\u011c\u0007\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e"+ - "\u0002\u011f\u0007\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121"+ - "\u0002\u0122\u0007\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124"+ - "\u0002\u0125\u0007\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127"+ - "\u0002\u0128\u0007\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a"+ - "\u0002\u012b\u0007\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d"+ - "\u0002\u012e\u0007\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130"+ - "\u0002\u0131\u0007\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133"+ - "\u0002\u0134\u0007\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136"+ - "\u0002\u0137\u0007\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139"+ - "\u0002\u013a\u0007\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c"+ - "\u0002\u013d\u0007\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f"+ - "\u0002\u0140\u0007\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142"+ - "\u0002\u0143\u0007\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145"+ - "\u0002\u0146\u0007\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148"+ - "\u0002\u0149\u0007\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b"+ - "\u0002\u014c\u0007\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e"+ - "\u0002\u014f\u0007\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151"+ - "\u0002\u0152\u0007\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154"+ - "\u0002\u0155\u0007\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157"+ - "\u0002\u0158\u0007\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a"+ - "\u0002\u015b\u0007\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d"+ - "\u0002\u015e\u0007\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160"+ - "\u0002\u0161\u0007\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163"+ - "\u0002\u0164\u0007\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166"+ - "\u0002\u0167\u0007\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169"+ - "\u0002\u016a\u0007\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c"+ - "\u0002\u016d\u0007\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f"+ - "\u0002\u0170\u0007\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172"+ - "\u0002\u0173\u0007\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175"+ - "\u0002\u0176\u0007\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178"+ - "\u0002\u0179\u0007\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b"+ - "\u0002\u017c\u0007\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e"+ - "\u0002\u017f\u0007\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181"+ - "\u0002\u0182\u0007\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184"+ - "\u0002\u0185\u0007\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187"+ - "\u0002\u0188\u0007\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a"+ - "\u0002\u018b\u0007\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d"+ - "\u0002\u018e\u0007\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190"+ - "\u0002\u0191\u0007\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193"+ - "\u0002\u0194\u0007\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196"+ - "\u0002\u0197\u0007\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199"+ - "\u0002\u019a\u0007\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c"+ - "\u0002\u019d\u0007\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f"+ - "\u0002\u01a0\u0007\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2"+ - "\u0002\u01a3\u0007\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5"+ - "\u0002\u01a6\u0007\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8"+ - "\u0002\u01a9\u0007\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab"+ - "\u0002\u01ac\u0007\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae"+ - "\u0002\u01af\u0007\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1"+ - "\u0002\u01b2\u0007\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4"+ - "\u0002\u01b5\u0007\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7"+ - "\u0002\u01b8\u0007\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba"+ - "\u0002\u01bb\u0007\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd"+ - "\u0002\u01be\u0007\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0"+ - "\u0002\u01c1\u0007\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3"+ - "\u0002\u01c4\u0007\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6"+ - "\u0002\u01c7\u0007\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9"+ - "\u0002\u01ca\u0007\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc"+ - "\u0002\u01cd\u0007\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf"+ - "\u0002\u01d0\u0007\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2"+ - "\u0002\u01d3\u0007\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5"+ - "\u0002\u01d6\u0007\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8"+ - "\u0002\u01d9\u0007\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db"+ - "\u0002\u01dc\u0007\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de"+ - "\u0002\u01df\u0007\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1"+ - "\u0002\u01e2\u0007\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4"+ - "\u0002\u01e5\u0007\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7"+ - "\u0002\u01e8\u0007\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea"+ - "\u0002\u01eb\u0007\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed"+ - "\u0002\u01ee\u0007\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0"+ - "\u0002\u01f1\u0007\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3"+ - "\u0002\u01f4\u0007\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6"+ - "\u0002\u01f7\u0007\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9"+ - "\u0002\u01fa\u0007\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc"+ - "\u0002\u01fd\u0007\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff"+ - "\u0002\u0200\u0007\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202"+ - "\u0002\u0203\u0007\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205"+ - "\u0002\u0206\u0007\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208"+ - "\u0002\u0209\u0007\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b"+ - "\u0002\u020c\u0007\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e"+ - "\u0002\u020f\u0007\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211"+ - "\u0002\u0212\u0007\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214"+ - "\u0002\u0215\u0007\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217"+ - "\u0002\u0218\u0007\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a"+ - "\u0002\u021b\u0007\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d"+ - "\u0002\u021e\u0007\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220"+ - "\u0002\u0221\u0007\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223"+ - "\u0002\u0224\u0007\u0224\u0002\u0225\u0007\u0225\u0002\u0226\u0007\u0226"+ - "\u0002\u0227\u0007\u0227\u0002\u0228\u0007\u0228\u0002\u0229\u0007\u0229"+ - "\u0002\u022a\u0007\u022a\u0002\u022b\u0007\u022b\u0002\u022c\u0007\u022c"+ - "\u0002\u022d\u0007\u022d\u0002\u022e\u0007\u022e\u0002\u022f\u0007\u022f"+ - "\u0002\u0230\u0007\u0230\u0002\u0231\u0007\u0231\u0002\u0232\u0007\u0232"+ - "\u0002\u0233\u0007\u0233\u0002\u0234\u0007\u0234\u0002\u0235\u0007\u0235"+ - "\u0002\u0236\u0007\u0236\u0002\u0237\u0007\u0237\u0002\u0238\u0007\u0238"+ - "\u0002\u0239\u0007\u0239\u0002\u023a\u0007\u023a\u0002\u023b\u0007\u023b"+ - "\u0002\u023c\u0007\u023c\u0002\u023d\u0007\u023d\u0002\u023e\u0007\u023e"+ - "\u0002\u023f\u0007\u023f\u0002\u0240\u0007\u0240\u0002\u0241\u0007\u0241"+ - "\u0002\u0242\u0007\u0242\u0002\u0243\u0007\u0243\u0002\u0244\u0007\u0244"+ - "\u0002\u0245\u0007\u0245\u0002\u0246\u0007\u0246\u0002\u0247\u0007\u0247"+ - "\u0002\u0248\u0007\u0248\u0002\u0249\u0007\u0249\u0002\u024a\u0007\u024a"+ - "\u0002\u024b\u0007\u024b\u0002\u024c\u0007\u024c\u0002\u024d\u0007\u024d"+ - "\u0002\u024e\u0007\u024e\u0002\u024f\u0007\u024f\u0002\u0250\u0007\u0250"+ - "\u0002\u0251\u0007\u0251\u0002\u0252\u0007\u0252\u0002\u0253\u0007\u0253"+ - "\u0002\u0254\u0007\u0254\u0002\u0255\u0007\u0255\u0002\u0256\u0007\u0256"+ - "\u0002\u0257\u0007\u0257\u0002\u0258\u0007\u0258\u0002\u0259\u0007\u0259"+ - "\u0002\u025a\u0007\u025a\u0002\u025b\u0007\u025b\u0002\u025c\u0007\u025c"+ - "\u0002\u025d\u0007\u025d\u0002\u025e\u0007\u025e\u0002\u025f\u0007\u025f"+ - "\u0002\u0260\u0007\u0260\u0002\u0261\u0007\u0261\u0002\u0262\u0007\u0262"+ - "\u0002\u0263\u0007\u0263\u0002\u0264\u0007\u0264\u0002\u0265\u0007\u0265"+ - "\u0002\u0266\u0007\u0266\u0002\u0267\u0007\u0267\u0002\u0268\u0007\u0268"+ - "\u0002\u0269\u0007\u0269\u0002\u026a\u0007\u026a\u0002\u026b\u0007\u026b"+ - "\u0002\u026c\u0007\u026c\u0002\u026d\u0007\u026d\u0002\u026e\u0007\u026e"+ - "\u0002\u026f\u0007\u026f\u0002\u0270\u0007\u0270\u0002\u0271\u0007\u0271"+ - "\u0002\u0272\u0007\u0272\u0002\u0273\u0007\u0273\u0002\u0274\u0007\u0274"+ - "\u0002\u0275\u0007\u0275\u0002\u0276\u0007\u0276\u0002\u0277\u0007\u0277"+ - "\u0002\u0278\u0007\u0278\u0002\u0279\u0007\u0279\u0002\u027a\u0007\u027a"+ - "\u0002\u027b\u0007\u027b\u0002\u027c\u0007\u027c\u0002\u027d\u0007\u027d"+ - "\u0002\u027e\u0007\u027e\u0002\u027f\u0007\u027f\u0002\u0280\u0007\u0280"+ - "\u0002\u0281\u0007\u0281\u0002\u0282\u0007\u0282\u0002\u0283\u0007\u0283"+ - "\u0002\u0284\u0007\u0284\u0002\u0285\u0007\u0285\u0002\u0286\u0007\u0286"+ - "\u0002\u0287\u0007\u0287\u0002\u0288\u0007\u0288\u0002\u0289\u0007\u0289"+ - "\u0002\u028a\u0007\u028a\u0002\u028b\u0007\u028b\u0002\u028c\u0007\u028c"+ - "\u0002\u028d\u0007\u028d\u0002\u028e\u0007\u028e\u0002\u028f\u0007\u028f"+ - "\u0002\u0290\u0007\u0290\u0002\u0291\u0007\u0291\u0002\u0292\u0007\u0292"+ - "\u0002\u0293\u0007\u0293\u0002\u0294\u0007\u0294\u0002\u0295\u0007\u0295"+ - "\u0002\u0296\u0007\u0296\u0002\u0297\u0007\u0297\u0002\u0298\u0007\u0298"+ - "\u0002\u0299\u0007\u0299\u0002\u029a\u0007\u029a\u0002\u029b\u0007\u029b"+ - "\u0002\u029c\u0007\u029c\u0002\u029d\u0007\u029d\u0002\u029e\u0007\u029e"+ - "\u0002\u029f\u0007\u029f\u0002\u02a0\u0007\u02a0\u0002\u02a1\u0007\u02a1"+ - "\u0002\u02a2\u0007\u02a2\u0002\u02a3\u0007\u02a3\u0002\u02a4\u0007\u02a4"+ - "\u0002\u02a5\u0007\u02a5\u0002\u02a6\u0007\u02a6\u0002\u02a7\u0007\u02a7"+ - "\u0002\u02a8\u0007\u02a8\u0002\u02a9\u0007\u02a9\u0002\u02aa\u0007\u02aa"+ - "\u0002\u02ab\u0007\u02ab\u0002\u02ac\u0007\u02ac\u0002\u02ad\u0007\u02ad"+ - "\u0002\u02ae\u0007\u02ae\u0002\u02af\u0007\u02af\u0002\u02b0\u0007\u02b0"+ - "\u0002\u02b1\u0007\u02b1\u0002\u02b2\u0007\u02b2\u0002\u02b3\u0007\u02b3"+ - "\u0002\u02b4\u0007\u02b4\u0002\u02b5\u0007\u02b5\u0002\u02b6\u0007\u02b6"+ - "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+ - "\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+ - "\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u0010"+ - "\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ - "\u0001\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018"+ - "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a"+ - "\u0001\u001b\u0001\u001b\u0004\u001b\u05b5\b\u001b\u000b\u001b\f\u001b"+ - "\u05b6\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05bd"+ - "\b\u001c\u000b\u001c\f\u001c\u05be\u0001\u001c\u0001\u001c\u0001\u001c"+ - "\u0003\u001c\u05c4\b\u001c\u0001\u001c\u0001\u001c\u0004\u001c\u05c8\b"+ - "\u001c\u000b\u001c\f\u001c\u05c9\u0001\u001c\u0003\u001c\u05cd\b\u001c"+ - "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+ - "\u0001\u001d\u0005\u001d\u05d6\b\u001d\n\u001d\f\u001d\u05d9\t\u001d\u0001"+ - "\u001d\u0001\u001d\u0003\u001d\u05dd\b\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0004\u001d\u05e2\b\u001d\u000b\u001d\f\u001d\u05e3\u0001\u001d"+ - "\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001 \u0001"+ - " \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001\"\u0001\"\u0001\""+ - "\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001"+ - "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001"+ - "(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+ - ")\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001"+ - "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001-\u0001"+ - "-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+ - ".\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+ - "0\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u0001"+ - "0\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00012\u00012\u0001"+ - "2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u0001"+ - "2\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+ - "3\u00013\u00013\u00013\u00013\u00013\u00013\u00014\u00014\u00014\u0001"+ - "4\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u0001"+ - "5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+ - "5\u00015\u00015\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0001"+ - "7\u00017\u00017\u00017\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+ - "8\u00018\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+ - "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001"+ - ";\u0001;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001<\u0001<\u0001<\u0001"+ - "=\u0001=\u0001=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001>\u0001"+ - ">\u0001>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001"+ - "@\u0001@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+ - "E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0001"+ - "G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+ - "H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+ - "I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001K\u0001"+ - "K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001"+ - "L\u0001L\u0001L\u0001L\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+ - "N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0001P\u0001Q\u0001"+ - "Q\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0001R\u0001R\u0001"+ - "R\u0001S\u0001S\u0001S\u0001T\u0001T\u0001T\u0001T\u0001T\u0001U\u0001"+ - "U\u0001U\u0001V\u0001V\u0001V\u0001V\u0001V\u0001V\u0001W\u0001W\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001"+ - "X\u0001X\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ - "Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0001[\u0001[\u0001"+ - "[\u0001[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+ - "\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001"+ - "]\u0001]\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001"+ - "^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001"+ - "`\u0001`\u0001`\u0001a\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001"+ - "b\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001"+ - "d\u0001d\u0001d\u0001d\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001"+ - "e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0001f\u0001g\u0001g\u0001"+ - "g\u0001g\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+ - "h\u0001h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001j\u0001j\u0001"+ - "j\u0001j\u0001j\u0001j\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+ - "k\u0001l\u0001l\u0001l\u0001l\u0001l\u0001m\u0001m\u0001m\u0001m\u0001"+ - "m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001m\u0001"+ - "n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001n\u0001o\u0001o\u0001o\u0001"+ - "o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001o\u0001p\u0001p\u0001p\u0001"+ - "p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001p\u0001"+ - "q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001r\u0001"+ - "r\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0001t\u0001t\u0001"+ - "t\u0001t\u0001t\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001"+ - "v\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001x\u0001x\u0001"+ - "x\u0001x\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001y\u0001y\u0001"+ - "z\u0001z\u0001z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001"+ - "|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001|\u0001}\u0001}\u0001"+ - "}\u0001}\u0001}\u0001}\u0001}\u0001}\u0001~\u0001~\u0001~\u0001~\u0001"+ - "~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001"+ - "\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001"+ - "\u0080\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+ - "\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+ - "\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001"+ - "\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+ - "\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+ - "\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+ - "\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001"+ - "\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001"+ - "\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001"+ - "\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001"+ - "\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001"+ - "\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008b\u0001\u008b\u0001"+ - "\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+ - "\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001"+ - "\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001"+ - "\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+ - "\u008e\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ - "\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001"+ - "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001"+ - "\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001"+ - "\u0091\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ - "\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+ - "\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+ - "\u0093\u0001\u0093\u0001\u0093\u0001\u0094\u0001\u0094\u0001\u0094\u0001"+ - "\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001"+ - "\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001"+ - "\u0096\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001"+ - "\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001"+ - "\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001"+ - "\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a\u0001\u009a\u0001"+ - "\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+ - "\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+ - "\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001"+ - "\u009c\u0001\u009c\u0001\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+ - "\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ - "\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+ - "\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+ - "\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001"+ - "\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+ - "\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001"+ - "\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0001"+ - "\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001"+ - "\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+ - "\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ - "\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+ - "\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+ - "\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ - "\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001"+ - "\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001"+ - "\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ - "\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001"+ - "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+ - "\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001"+ - "\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ad\u0001\u00ad\u0001"+ - "\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+ - "\u00ae\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001"+ - "\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001"+ - "\u00b0\u0001\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+ - "\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001"+ - "\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+ - "\u00b3\u0001\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ - "\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001"+ - "\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001"+ - "\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ - "\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+ - "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+ - "\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+ - "\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001"+ - "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+ - "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+ - "\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001"+ - "\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ - "\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+ - "\u00bc\u0001\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001"+ - "\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be\u0001\u00be\u0001"+ - "\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+ - "\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001"+ - "\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001"+ - "\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001"+ - "\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c3\u0001\u00c3\u0001"+ - "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+ - "\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001"+ - "\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+ - "\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001"+ - "\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001"+ - "\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0001"+ - "\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c9\u0001"+ - "\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00ca\u0001"+ - "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+ - "\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+ - "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+ - "\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+ - "\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001"+ - "\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+ - "\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001"+ - "\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001"+ - "\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001"+ - "\u00d0\u0001\u00d0\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001"+ - "\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+ - "\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ - "\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+ - "\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001"+ - "\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+ - "\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ - "\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+ - "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001"+ - "\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001"+ - "\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001"+ - "\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001"+ - "\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+ - "\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001"+ - "\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001"+ - "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001"+ - "\u00dd\u0001\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+ - "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0001"+ - "\u00df\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ - "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+ - "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001"+ - "\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+ - "\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+ - "\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4\u0001"+ - "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001"+ - "\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+ - "\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+ - "\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001"+ - "\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001"+ - "\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001"+ - "\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001"+ - "\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001"+ - "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001"+ - "\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb\u0001"+ - "\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001"+ - "\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001"+ - "\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+ - "\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ee\u0001\u00ee\u0001"+ - "\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+ - "\u00ee\u0001\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001"+ - "\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001"+ - "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+ - "\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+ - "\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001"+ - "\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ - "\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+ - "\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001"+ - "\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001"+ - "\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+ - "\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001"+ - "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001"+ - "\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+ - "\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001"+ - "\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001"+ - "\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd\u0001"+ - "\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001"+ - "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+ - "\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001"+ - "\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001\u0100\u0001\u0100\u0001"+ - "\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0001"+ - "\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0102\u0001"+ - "\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+ - "\u0102\u0001\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001"+ - "\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+ - "\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+ - "\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001"+ - "\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0108\u0001"+ - "\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001"+ - "\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+ - "\u010a\u0001\u010a\u0001\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0001"+ - "\u010b\u0001\u010b\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0001"+ - "\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010d\u0001"+ - "\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001"+ - "\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001"+ - "\u010f\u0001\u010f\u0001\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+ - "\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001"+ - "\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001"+ - "\u0112\u0001\u0112\u0001\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0001"+ - "\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001"+ - "\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+ - "\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+ - "\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001"+ - "\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+ - "\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+ - "\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ - "\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+ - "\u0119\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0001"+ - "\u011a\u0001\u011a\u0001\u011a\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ - "\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001"+ - "\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0001"+ - "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+ - "\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e\u0001\u011e\u0001"+ - "\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001"+ - "\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001\u011f\u0001"+ - "\u011f\u0001\u011f\u0001\u011f\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ - "\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+ - "\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001"+ - "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+ - "\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0123\u0001"+ - "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001"+ - "\u0123\u0001\u0123\u0001\u0123\u0001\u0123\u0001\u0124\u0001\u0124\u0001"+ - "\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001"+ - "\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001"+ - "\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001"+ - "\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001"+ - "\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0128\u0001\u0128\u0001"+ - "\u0128\u0001\u0128\u0001\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ - "\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+ - "\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001"+ - "\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ - "\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001"+ - "\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012d\u0001\u012d\u0001"+ - "\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001"+ - "\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001"+ - "\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+ - "\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u0130\u0001"+ - "\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+ - "\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+ - "\u0131\u0001\u0131\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ - "\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+ - "\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0001"+ - "\u0133\u0001\u0133\u0001\u0133\u0001\u0134\u0001\u0134\u0001\u0134\u0001"+ - "\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0135\u0001"+ - "\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0136\u0001"+ - "\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001"+ - "\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001"+ - "\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001\u0138\u0001"+ - "\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+ - "\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001"+ - "\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001"+ - "\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+ - "\u013b\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001"+ - "\u013c\u0001\u013c\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001"+ - "\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+ - "\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013f\u0001"+ - "\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+ - "\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001"+ - "\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+ - "\u0141\u0001\u0141\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0001"+ - "\u0142\u0001\u0142\u0001\u0142\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ - "\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+ - "\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001"+ - "\u0144\u0001\u0144\u0001\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ - "\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001"+ - "\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ - "\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+ - "\u0146\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001"+ - "\u0147\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+ - "\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0149\u0001"+ - "\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+ - "\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+ - "\u014b\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001"+ - "\u014c\u0001\u014c\u0001\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+ - "\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001"+ - "\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ - "\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+ - "\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+ - "\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001"+ - "\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001"+ - "\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001"+ - "\u0153\u0001\u0153\u0001\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001"+ - "\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0155\u0001\u0155\u0001"+ - "\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+ - "\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001"+ - "\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001"+ - "\u0157\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001\u0158\u0001"+ - "\u0158\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001"+ - "\u0159\u0001\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+ - "\u015a\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ - "\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+ - "\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001"+ - "\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+ - "\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015e\u0001\u015e\u0001"+ - "\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001"+ - "\u015e\u0001\u015e\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001"+ - "\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ - "\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001"+ - "\u0160\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001"+ - "\u0161\u0001\u0161\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ - "\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001"+ - "\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+ - "\u0163\u0001\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001"+ - "\u0164\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001"+ - "\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001"+ - "\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001"+ - "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+ - "\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0168\u0001"+ - "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001"+ - "\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0169\u0001"+ - "\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001"+ - "\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001"+ - "\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001"+ - "\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+ - "\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+ - "\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+ - "\u016d\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016e\u0001\u016e\u0001"+ - "\u016e\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u016f\u0001"+ - "\u016f\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ - "\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0001"+ - "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001"+ - "\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172\u0001\u0172\u0001"+ - "\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001\u0172\u0001"+ - "\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+ - "\u0173\u0001\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+ - "\u0174\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001"+ - "\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176\u0001"+ - "\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001"+ - "\u0176\u0001\u0176\u0001\u0176\u0001\u0177\u0001\u0177\u0001\u0177\u0001"+ - "\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0178\u0001"+ - "\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0179\u0001\u0179\u0001"+ - "\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179\u0001"+ - "\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+ - "\u017b\u0001\u017b\u0001\u017b\u0001\u017b\u0001\u017c\u0001\u017c\u0001"+ - "\u017c\u0001\u017c\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017d\u0001"+ - "\u017d\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001"+ - "\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001"+ - "\u017f\u0001\u017f\u0001\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0001"+ - "\u0180\u0001\u0180\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181\u0001"+ - "\u0181\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0001"+ - "\u0182\u0001\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001"+ - "\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+ - "\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001\u0185\u0001"+ - "\u0185\u0001\u0185\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0001"+ - "\u0186\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0187\u0001"+ - "\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188\u0001"+ - "\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0001\u0189\u0001\u0189\u0001"+ - "\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0001"+ - "\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001"+ - "\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0001"+ - "\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c\u0001\u018c\u0001"+ - "\u018c\u0001\u018c\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018d\u0001"+ - "\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+ - "\u018e\u0001\u018e\u0001\u018e\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ - "\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001"+ - "\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001"+ - "\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001"+ - "\u0191\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192\u0001\u0192\u0001"+ - "\u0192\u0001\u0192\u0001\u0192\u0001\u0193\u0001\u0193\u0001\u0193\u0001"+ - "\u0193\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0001\u0194\u0001"+ - "\u0194\u0001\u0194\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+ - "\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0196\u0001"+ - "\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001"+ - "\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001"+ - "\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198\u0001\u0198\u0001"+ - "\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001"+ - "\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+ - "\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019b\u0001"+ - "\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001"+ - "\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+ - "\u019c\u0001\u019c\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ - "\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+ - "\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019f\u0001"+ - "\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001"+ - "\u019f\u0001\u019f\u0001\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+ - "\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0001"+ - "\u01a1\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001"+ - "\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001"+ - "\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+ - "\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ - "\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+ - "\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001"+ - "\u01a6\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7\u0001"+ - "\u01a7\u0001\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+ - "\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+ - "\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ - "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+ - "\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+ - "\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ - "\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+ - "\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+ - "\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+ - "\u01af\u0001\u01af\u0001\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ - "\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+ - "\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+ - "\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+ - "\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ - "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+ - "\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+ - "\u01b4\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+ - "\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001"+ - "\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b7\u0001"+ - "\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+ - "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001"+ - "\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001"+ - "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001"+ - "\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001"+ - "\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01bb\u0001\u01bb\u0001"+ - "\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bc\u0001"+ - "\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001"+ - "\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+ - "\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ - "\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+ - "\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001"+ - "\u01bf\u0001\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+ - "\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+ - "\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c2\u0001\u01c2\u0001"+ - "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001"+ - "\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3\u0001\u01c3\u0001"+ - "\u01c3\u0001\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+ - "\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001"+ - "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ - "\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+ - "\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ - "\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001"+ - "\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001"+ - "\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ - "\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001\u01ca\u0001"+ - "\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001"+ - "\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ - "\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+ - "\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+ - "\u01cd\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001"+ - "\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ - "\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+ - "\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001"+ - "\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001"+ - "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001"+ - "\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001"+ - "\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+ - "\u01d3\u0001\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+ - "\u01d4\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001"+ - "\u01d5\u0001\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+ - "\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001"+ - "\u01d7\u0001\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001"+ - "\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001"+ - "\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da\u0001"+ - "\u01da\u0001\u01da\u0001\u01da\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ - "\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001\u01db\u0001"+ - "\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ - "\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001"+ - "\u01dc\u0001\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001"+ - "\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01de\u0001"+ - "\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001"+ - "\u01de\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ - "\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df\u0001"+ - "\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001"+ - "\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001"+ - "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+ - "\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e2\u0001\u01e2\u0001"+ - "\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e3\u0001"+ - "\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001"+ - "\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+ - "\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001"+ - "\u01e5\u0001\u01e5\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001"+ - "\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e8\u0001\u01e8\u0001"+ - "\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001"+ - "\u01e9\u0001\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001"+ - "\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01eb\u0001\u01eb\u0001"+ - "\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01ec\u0001\u01ec\u0001"+ - "\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+ - "\u01ec\u0001\u01ec\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001"+ - "\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001"+ - "\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001"+ - "\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001"+ - "\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ - "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001"+ - "\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f2\u0001\u01f2\u0001"+ - "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001"+ - "\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001"+ - "\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ - "\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001\u01f4\u0001"+ - "\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001"+ - "\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001\u01f6\u0001"+ - "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ - "\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001"+ - "\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001"+ - "\u01f8\u0001\u01f8\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001\u01f9\u0001"+ - "\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001"+ - "\u01fa\u0001\u01fa\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001"+ - "\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fc\u0001\u01fc\u0001"+ - "\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001"+ - "\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001\u01fd\u0001"+ - "\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01ff\u0001"+ - "\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001\u01ff\u0001"+ - "\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001\u0200\u0001"+ - "\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0201\u0001"+ - "\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001\u0202\u0001"+ - "\u0202\u0001\u0202\u0001\u0202\u0001\u0203\u0001\u0203\u0001\u0203\u0001"+ - "\u0203\u0001\u0203\u0001\u0203\u0001\u0204\u0001\u0204\u0001\u0204\u0001"+ - "\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001"+ - "\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001"+ - "\u0206\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001\u0207\u0001"+ - "\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001\u0208\u0001"+ - "\u0208\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001\u0209\u0001"+ - "\u0209\u0001\u0209\u0001\u020a\u0001\u020a\u0001\u020a\u0001\u020a\u0001"+ - "\u020a\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001\u020b\u0001"+ - "\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020d\u0001\u020d\u0001"+ - "\u020d\u0001\u020d\u0001\u020d\u0001\u020e\u0001\u020e\u0001\u020e\u0001"+ - "\u020e\u0001\u020e\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001"+ - "\u020f\u0001\u020f\u0001\u020f\u0001\u020f\u0001\u0210\u0001\u0210\u0001"+ - "\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001"+ - "\u0211\u0001\u0211\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212\u0001"+ - "\u0212\u0001\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ - "\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001\u0213\u0001"+ - "\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001"+ - "\u0215\u0001\u0215\u0001\u0215\u0001\u0215\u0001\u0216\u0001\u0216\u0001"+ - "\u0216\u0001\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0218\u0001"+ - "\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0218\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001\u0219\u0001"+ - "\u0219\u0001\u0219\u0001\u0219\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+ - "\u021a\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021c\u0001\u021c\u0001"+ - "\u021c\u0001\u021c\u0001\u021c\u0001\u021c\u0001\u021d\u0001\u021d\u0001"+ - "\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001\u021d\u0001"+ - "\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0001"+ - "\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0001"+ - "\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0001\u0221\u0001"+ - "\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0222\u0001\u0222\u0001"+ - "\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001"+ - "\u0222\u0001\u0222\u0001\u0222\u0001\u0223\u0001\u0223\u0001\u0223\u0001"+ - "\u0223\u0001\u0223\u0001\u0223\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ - "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001"+ - "\u0224\u0001\u0224\u0001\u0224\u0001\u0224\u0001\u0225\u0001\u0225\u0001"+ - "\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0226\u0001"+ - "\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001\u0226\u0001"+ - "\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001\u0227\u0001"+ - "\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001\u0228\u0001"+ - "\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u0229\u0001\u022a\u0001"+ - "\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022b\u0001"+ - "\u022b\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022c\u0001\u022c\u0001"+ - "\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0001\u022d\u0001\u022d\u0001"+ - "\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022e\u0001\u022e\u0001"+ - "\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022f\u0001"+ - "\u022f\u0001\u022f\u0001\u022f\u0001\u0230\u0001\u0230\u0001\u0230\u0001"+ - "\u0230\u0001\u0230\u0001\u0231\u0001\u0231\u0001\u0231\u0001\u0231\u0001"+ - "\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0232\u0001\u0233\u0001"+ - "\u0233\u0001\u0233\u0001\u0233\u0001\u0234\u0001\u0234\u0001\u0234\u0001"+ - "\u0234\u0001\u0234\u0001\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0001"+ - "\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0236\u0001\u0237\u0001"+ - "\u0237\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238\u0001"+ - "\u0238\u0001\u0238\u0001\u0238\u0001\u0239\u0001\u0239\u0001\u0239\u0001"+ - "\u0239\u0001\u0239\u0001\u023a\u0001\u023a\u0001\u023a\u0001\u023a\u0001"+ - "\u023a\u0001\u023a\u0001\u023b\u0001\u023b\u0001\u023b\u0001\u023b\u0001"+ - "\u023b\u0001\u023b\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001"+ - "\u023c\u0001\u023c\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ - "\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0001"+ - "\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001\u023e\u0001"+ - "\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+ - "\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+ - "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ - "\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001\u0241\u0001"+ - "\u0241\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001\u0242\u0001"+ - "\u0242\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001"+ - "\u0243\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001\u0244\u0001"+ - "\u0244\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0245\u0001\u0246\u0001"+ - "\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001\u0246\u0001"+ - "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001"+ - "\u0247\u0001\u0247\u0001\u0247\u0001\u0247\u0001\u0248\u0001\u0248\u0001"+ - "\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0248\u0001\u0249\u0001"+ - "\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001\u0249\u0001"+ - "\u0249\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001\u024a\u0001"+ - "\u024a\u0001\u024a\u0001\u024b\u0001\u024b\u0001\u024b\u0001\u024b\u0001"+ - "\u024b\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001\u024c\u0001"+ - "\u024c\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024d\u0001\u024e\u0001"+ - "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001"+ - "\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024e\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001\u024f\u0001"+ - "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ - "\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001\u0250\u0001"+ - "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ - "\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001\u0251\u0001"+ - "\u0251\u0001\u0251\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ - "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001"+ - "\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0252\u0001\u0253\u0001"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ - "\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001\u0253\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ - "\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001\u0254\u0001"+ - "\u0254\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ - "\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001\u0255\u0001"+ - "\u0255\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ - "\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001\u0256\u0001"+ - "\u0256\u0001\u0256\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ - "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001"+ - "\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0257\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001\u0258\u0001"+ - "\u0258\u0001\u0258\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001\u0259\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001"+ - "\u025a\u0001\u025a\u0001\u025a\u0001\u025a\u0001\u025b\u0001\u025b\u0001"+ - "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ - "\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001\u025b\u0001"+ - "\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001\u025c\u0001"+ - "\u025c\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001\u025d\u0001"+ - "\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001\u025e\u0001"+ - "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001"+ - "\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u025f\u0001\u0260\u0001"+ - "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001"+ - "\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0260\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001\u0261\u0001"+ - "\u0261\u0001\u0261\u0001\u0261\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001\u0262\u0001"+ - "\u0262\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001\u0263\u0001"+ - "\u0263\u0001\u0263\u0001\u0264\u0001\u0264\u0001\u0264\u0001\u0264\u0001"+ - "\u0264\u0001\u0264\u0001\u0264\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ - "\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001\u0265\u0001"+ - "\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001\u0266\u0001"+ - "\u0266\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001"+ - "\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0267\u0001\u0268\u0001"+ - "\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001\u0268\u0001"+ - "\u0269\u0001\u0269\u0001\u0269\u0001\u0269\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001\u026a\u0001"+ - "\u026a\u0001\u026a\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001"+ - "\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026b\u0001\u026c\u0001"+ - "\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001\u026c\u0001"+ - "\u026c\u0001\u026c\u0001\u026c\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ - "\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001\u026d\u0001"+ - "\u026d\u0001\u026d\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001"+ - "\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026e\u0001\u026f\u0001"+ - "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ - "\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001\u026f\u0001"+ - "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ - "\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001\u0270\u0001"+ - "\u0270\u0001\u0270\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001\u0271\u0001"+ - "\u0271\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001"+ - "\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0272\u0001\u0273\u0001"+ - "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ - "\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001\u0273\u0001"+ - "\u0273\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001"+ - "\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0274\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001\u0275\u0001"+ - "\u0275\u0001\u0275\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001\u0276\u0001"+ - "\u0276\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0277\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001\u0278\u0001"+ - "\u0278\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001"+ - "\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u0279\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001\u027a\u0001"+ - "\u027a\u0001\u027a\u0001\u027a\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ - "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001"+ - "\u027b\u0001\u027b\u0001\u027b\u0001\u027b\u0001\u027c\u0001\u027c\u0001"+ - "\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001\u027c\u0001"+ - "\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001\u027d\u0001"+ - "\u027d\u0001\u027d\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001\u027e\u0001"+ - "\u027f\u0001\u027f\u0005\u027f\u18b3\b\u027f\n\u027f\f\u027f\u18b6\t\u027f"+ - "\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280\u0001\u0280"+ - "\u0003\u0280\u18be\b\u0280\u0001\u0281\u0001\u0281\u0003\u0281\u18c2\b"+ - "\u0281\u0001\u0282\u0001\u0282\u0003\u0282\u18c6\b\u0282\u0001\u0283\u0001"+ - "\u0283\u0001\u0283\u0001\u0284\u0001\u0284\u0001\u0284\u0001\u0284\u0005"+ - "\u0284\u18cf\b\u0284\n\u0284\f\u0284\u18d2\t\u0284\u0001\u0285\u0001\u0285"+ - "\u0001\u0285\u0001\u0286\u0001\u0286\u0001\u0286\u0001\u0286\u0005\u0286"+ - "\u18db\b\u0286\n\u0286\f\u0286\u18de\t\u0286\u0001\u0287\u0001\u0287\u0001"+ - "\u0287\u0001\u0287\u0001\u0288\u0001\u0288\u0001\u0288\u0001\u0288\u0001"+ - "\u0289\u0001\u0289\u0001\u0289\u0001\u0289\u0001\u028a\u0001\u028a\u0001"+ - "\u028a\u0001\u028a\u0001\u028b\u0001\u028b\u0001\u028b\u0001\u028c\u0001"+ - "\u028c\u0001\u028c\u0001\u028c\u0005\u028c\u18f7\b\u028c\n\u028c\f\u028c"+ - "\u18fa\t\u028c\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d\u0001\u028d"+ - "\u0001\u028d\u0001\u028e\u0001\u028e\u0001\u028e\u0001\u028f\u0001\u028f"+ - "\u0001\u028f\u0001\u028f\u0001\u0290\u0001\u0290\u0003\u0290\u190b\b\u0290"+ - "\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0290\u0001\u0291"+ - "\u0001\u0291\u0005\u0291\u1914\b\u0291\n\u0291\f\u0291\u1917\t\u0291\u0001"+ - "\u0292\u0001\u0292\u0001\u0292\u0001\u0293\u0001\u0293\u0001\u0293\u0005"+ - "\u0293\u191f\b\u0293\n\u0293\f\u0293\u1922\t\u0293\u0001\u0294\u0001\u0294"+ - "\u0001\u0294\u0001\u0295\u0001\u0295\u0001\u0295\u0001\u0296\u0001\u0296"+ - "\u0001\u0296\u0001\u0297\u0001\u0297\u0001\u0297\u0005\u0297\u1930\b\u0297"+ - "\n\u0297\f\u0297\u1933\t\u0297\u0001\u0298\u0001\u0298\u0001\u0298\u0001"+ - "\u0299\u0001\u0299\u0001\u0299\u0001\u029a\u0001\u029a\u0001\u029b\u0001"+ - "\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029b\u0001\u029c\u0001"+ - "\u029c\u0001\u029c\u0003\u029c\u1946\b\u029c\u0001\u029c\u0001\u029c\u0003"+ - "\u029c\u194a\b\u029c\u0001\u029c\u0003\u029c\u194d\b\u029c\u0001\u029c"+ - "\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u1953\b\u029c\u0001\u029c"+ - "\u0003\u029c\u1956\b\u029c\u0001\u029c\u0001\u029c\u0001\u029c\u0003\u029c"+ - "\u195b\b\u029c\u0001\u029c\u0001\u029c\u0003\u029c\u195f\b\u029c\u0001"+ - "\u029d\u0004\u029d\u1962\b\u029d\u000b\u029d\f\u029d\u1963\u0001\u029e"+ - "\u0001\u029e\u0001\u029e\u0005\u029e\u1969\b\u029e\n\u029e\f\u029e\u196c"+ - "\t\u029e\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001\u029f\u0001"+ - "\u029f\u0001\u029f\u0001\u029f\u0005\u029f\u1976\b\u029f\n\u029f\f\u029f"+ - "\u1979\t\u029f\u0001\u029f\u0001\u029f\u0001\u02a0\u0004\u02a0\u197e\b"+ - "\u02a0\u000b\u02a0\f\u02a0\u197f\u0001\u02a0\u0001\u02a0\u0001\u02a1\u0001"+ - "\u02a1\u0003\u02a1\u1986\b\u02a1\u0001\u02a1\u0003\u02a1\u1989\b\u02a1"+ - "\u0001\u02a1\u0001\u02a1\u0001\u02a2\u0001\u02a2\u0001\u02a2\u0001\u02a2"+ - "\u0005\u02a2\u1991\b\u02a2\n\u02a2\f\u02a2\u1994\t\u02a2\u0001\u02a2\u0001"+ - "\u02a2\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0005\u02a3\u199c"+ - "\b\u02a3\n\u02a3\f\u02a3\u199f\t\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0004\u02a3\u19a4\b\u02a3\u000b\u02a3\f\u02a3\u19a5\u0001\u02a3\u0001"+ - "\u02a3\u0004\u02a3\u19aa\b\u02a3\u000b\u02a3\f\u02a3\u19ab\u0001\u02a3"+ - "\u0005\u02a3\u19af\b\u02a3\n\u02a3\f\u02a3\u19b2\t\u02a3\u0001\u02a3\u0005"+ - "\u02a3\u19b5\b\u02a3\n\u02a3\f\u02a3\u19b8\t\u02a3\u0001\u02a3\u0001\u02a3"+ - "\u0001\u02a3\u0001\u02a3\u0001\u02a3\u0001\u02a4\u0001\u02a4\u0001\u02a4"+ - "\u0001\u02a4\u0005\u02a4\u19c3\b\u02a4\n\u02a4\f\u02a4\u19c6\t\u02a4\u0001"+ - "\u02a4\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19cb\b\u02a4\u000b\u02a4\f"+ - "\u02a4\u19cc\u0001\u02a4\u0001\u02a4\u0004\u02a4\u19d1\b\u02a4\u000b\u02a4"+ - "\f\u02a4\u19d2\u0001\u02a4\u0003\u02a4\u19d6\b\u02a4\u0005\u02a4\u19d8"+ - "\b\u02a4\n\u02a4\f\u02a4\u19db\t\u02a4\u0001\u02a4\u0004\u02a4\u19de\b"+ - "\u02a4\u000b\u02a4\f\u02a4\u19df\u0001\u02a4\u0004\u02a4\u19e3\b\u02a4"+ - "\u000b\u02a4\f\u02a4\u19e4\u0001\u02a4\u0005\u02a4\u19e8\b\u02a4\n\u02a4"+ - "\f\u02a4\u19eb\t\u02a4\u0001\u02a4\u0003\u02a4\u19ee\b\u02a4\u0001\u02a4"+ - "\u0001\u02a4\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ - "\u19f6\b\u02a5\n\u02a5\f\u02a5\u19f9\t\u02a5\u0001\u02a5\u0005\u02a5\u19fc"+ - "\b\u02a5\n\u02a5\f\u02a5\u19ff\t\u02a5\u0001\u02a5\u0001\u02a5\u0005\u02a5"+ - "\u1a03\b\u02a5\n\u02a5\f\u02a5\u1a06\t\u02a5\u0003\u02a5\u1a08\b\u02a5"+ - "\u0001\u02a6\u0001\u02a6\u0001\u02a6\u0001\u02a7\u0001\u02a7\u0001\u02a8"+ - "\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a8\u0001\u02a9\u0001\u02a9"+ - "\u0003\u02a9\u1a16\b\u02a9\u0001\u02a9\u0001\u02a9\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa\u0001\u02aa"+ - "\u0003\u02aa\u1a2e\b\u02aa\u0001\u02aa\u0005\u02aa\u1a31\b\u02aa\n\u02aa"+ - "\f\u02aa\u1a34\t\u02aa\u0001\u02ab\u0001\u02ab\u0001\u02ab\u0001\u02ab"+ - "\u0001\u02ab\u0001\u02ac\u0001\u02ac\u0003\u02ac\u1a3d\b\u02ac\u0001\u02ac"+ - "\u0001\u02ac\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad\u0001\u02ad"+ - "\u0005\u02ad\u1a46\b\u02ad\n\u02ad\f\u02ad\u1a49\t\u02ad\u0001\u02ae\u0001"+ - "\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02ae\u0001\u02af\u0001\u02af\u0001"+ - "\u02af\u0001\u02af\u0001\u02af\u0001\u02af\u0001\u02b0\u0001\u02b0\u0001"+ - "\u02b0\u0001\u02b0\u0001\u02b0\u0001\u02b1\u0001\u02b1\u0001\u02b1\u0001"+ - "\u02b1\u0001\u02b1\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001\u02b2\u0001"+ - "\u02b2\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001\u02b3\u0001"+ - "\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b4\u0001\u02b5\u0004"+ - "\u02b5\u1a70\b\u02b5\u000b\u02b5\f\u02b5\u1a71\u0001\u02b5\u0001\u02b5"+ - "\u0005\u02b5\u1a76\b\u02b5\n\u02b5\f\u02b5\u1a79\t\u02b5\u0003\u02b5\u1a7b"+ - "\b\u02b5\u0001\u02b6\u0001\u02b6\u0003\u02b6\u1a7f\b\u02b6\u0001\u02b6"+ - "\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6\u0001\u02b6"+ - "\u0000\u0000\u02b7\u0005\u0001\u0007\u0002\t\u0003\u000b\u0004\r\u0005"+ - "\u000f\u0006\u0011\u0007\u0013\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d"+ - "\r\u001f\u000e!\u000f#\u0010%\u0011\'\u0012)\u0013+\u0014-\u0015/\u0016"+ - "1\u00173\u00185\u00197\u001a9\u001b;\u001c=\u001d?\u0000A\u0000C\u0000"+ - "E\u0000G\u001eI\u001fK M!O\"Q#S$U%W&Y\'[(])_*a+c,e-g.i/k0m1o2q3s4u5w6"+ - "y7{8}9\u007f:\u0081;\u0083<\u0085=\u0087>\u0089?\u008b@\u008dA\u008fB"+ - "\u0091C\u0093D\u0095E\u0097F\u0099G\u009bH\u009dI\u009fJ\u00a1K\u00a3"+ - "L\u00a5M\u00a7N\u00a9O\u00abP\u00adQ\u00afR\u00b1S\u00b3T\u00b5U\u00b7"+ - "V\u00b9W\u00bbX\u00bdY\u00bfZ\u00c1[\u00c3\\\u00c5]\u00c7^\u00c9_\u00cb"+ - "`\u00cda\u00cfb\u00d1c\u00d3d\u00d5e\u00d7f\u00d9g\u00dbh\u00ddi\u00df"+ - "j\u00e1k\u00e3l\u00e5m\u00e7n\u00e9o\u00ebp\u00edq\u00efr\u00f1s\u00f3"+ - "t\u00f5u\u00f7v\u00f9w\u00fbx\u00fdy\u00ffz\u0101{\u0103|\u0105}\u0107"+ - "~\u0109\u007f\u010b\u0080\u010d\u0081\u010f\u0082\u0111\u0083\u0113\u0084"+ - "\u0115\u0085\u0117\u0086\u0119\u0087\u011b\u0088\u011d\u0089\u011f\u008a"+ - "\u0121\u008b\u0123\u008c\u0125\u008d\u0127\u008e\u0129\u008f\u012b\u0090"+ - "\u012d\u0091\u012f\u0092\u0131\u0093\u0133\u0094\u0135\u0095\u0137\u0096"+ - "\u0139\u0097\u013b\u0098\u013d\u0099\u013f\u009a\u0141\u009b\u0143\u009c"+ - "\u0145\u009d\u0147\u009e\u0149\u009f\u014b\u00a0\u014d\u00a1\u014f\u00a2"+ - "\u0151\u00a3\u0153\u00a4\u0155\u00a5\u0157\u00a6\u0159\u00a7\u015b\u00a8"+ - "\u015d\u00a9\u015f\u00aa\u0161\u00ab\u0163\u00ac\u0165\u00ad\u0167\u00ae"+ - "\u0169\u00af\u016b\u00b0\u016d\u00b1\u016f\u00b2\u0171\u00b3\u0173\u00b4"+ - "\u0175\u00b5\u0177\u00b6\u0179\u00b7\u017b\u00b8\u017d\u00b9\u017f\u00ba"+ - "\u0181\u00bb\u0183\u00bc\u0185\u00bd\u0187\u00be\u0189\u00bf\u018b\u00c0"+ - "\u018d\u00c1\u018f\u00c2\u0191\u00c3\u0193\u00c4\u0195\u00c5\u0197\u00c6"+ - "\u0199\u00c7\u019b\u00c8\u019d\u00c9\u019f\u00ca\u01a1\u00cb\u01a3\u00cc"+ - "\u01a5\u00cd\u01a7\u00ce\u01a9\u00cf\u01ab\u00d0\u01ad\u00d1\u01af\u00d2"+ - "\u01b1\u00d3\u01b3\u00d4\u01b5\u00d5\u01b7\u00d6\u01b9\u00d7\u01bb\u00d8"+ - "\u01bd\u00d9\u01bf\u00da\u01c1\u00db\u01c3\u00dc\u01c5\u00dd\u01c7\u00de"+ - "\u01c9\u00df\u01cb\u00e0\u01cd\u00e1\u01cf\u00e2\u01d1\u00e3\u01d3\u00e4"+ - "\u01d5\u00e5\u01d7\u00e6\u01d9\u00e7\u01db\u00e8\u01dd\u00e9\u01df\u00ea"+ - "\u01e1\u00eb\u01e3\u00ec\u01e5\u00ed\u01e7\u00ee\u01e9\u00ef\u01eb\u00f0"+ - "\u01ed\u00f1\u01ef\u00f2\u01f1\u00f3\u01f3\u00f4\u01f5\u00f5\u01f7\u00f6"+ - "\u01f9\u00f7\u01fb\u00f8\u01fd\u00f9\u01ff\u00fa\u0201\u00fb\u0203\u00fc"+ - "\u0205\u00fd\u0207\u00fe\u0209\u00ff\u020b\u0100\u020d\u0101\u020f\u0102"+ - "\u0211\u0103\u0213\u0104\u0215\u0105\u0217\u0106\u0219\u0107\u021b\u0108"+ - "\u021d\u0109\u021f\u010a\u0221\u010b\u0223\u010c\u0225\u010d\u0227\u010e"+ - "\u0229\u010f\u022b\u0110\u022d\u0111\u022f\u0112\u0231\u0113\u0233\u0114"+ - "\u0235\u0115\u0237\u0116\u0239\u0117\u023b\u0118\u023d\u0119\u023f\u011a"+ - "\u0241\u011b\u0243\u011c\u0245\u011d\u0247\u011e\u0249\u011f\u024b\u0120"+ - "\u024d\u0121\u024f\u0122\u0251\u0123\u0253\u0124\u0255\u0125\u0257\u0126"+ - "\u0259\u0127\u025b\u0128\u025d\u0129\u025f\u012a\u0261\u012b\u0263\u012c"+ - "\u0265\u012d\u0267\u012e\u0269\u012f\u026b\u0130\u026d\u0131\u026f\u0132"+ - "\u0271\u0133\u0273\u0134\u0275\u0135\u0277\u0136\u0279\u0137\u027b\u0138"+ - "\u027d\u0139\u027f\u013a\u0281\u013b\u0283\u013c\u0285\u013d\u0287\u013e"+ - "\u0289\u013f\u028b\u0140\u028d\u0141\u028f\u0142\u0291\u0143\u0293\u0144"+ - "\u0295\u0145\u0297\u0146\u0299\u0147\u029b\u0148\u029d\u0149\u029f\u014a"+ - "\u02a1\u014b\u02a3\u014c\u02a5\u014d\u02a7\u014e\u02a9\u014f\u02ab\u0150"+ - "\u02ad\u0151\u02af\u0152\u02b1\u0153\u02b3\u0154\u02b5\u0155\u02b7\u0156"+ - "\u02b9\u0157\u02bb\u0158\u02bd\u0159\u02bf\u015a\u02c1\u015b\u02c3\u015c"+ - "\u02c5\u015d\u02c7\u015e\u02c9\u015f\u02cb\u0160\u02cd\u0161\u02cf\u0162"+ - "\u02d1\u0163\u02d3\u0164\u02d5\u0165\u02d7\u0166\u02d9\u0167\u02db\u0168"+ - "\u02dd\u0169\u02df\u016a\u02e1\u016b\u02e3\u016c\u02e5\u016d\u02e7\u016e"+ - "\u02e9\u016f\u02eb\u0170\u02ed\u0171\u02ef\u0172\u02f1\u0173\u02f3\u0174"+ - "\u02f5\u0175\u02f7\u0176\u02f9\u0177\u02fb\u0178\u02fd\u0179\u02ff\u017a"+ - "\u0301\u017b\u0303\u017c\u0305\u017d\u0307\u017e\u0309\u017f\u030b\u0180"+ - "\u030d\u0181\u030f\u0182\u0311\u0183\u0313\u0184\u0315\u0185\u0317\u0186"+ - "\u0319\u0187\u031b\u0188\u031d\u0189\u031f\u018a\u0321\u018b\u0323\u018c"+ - "\u0325\u018d\u0327\u018e\u0329\u018f\u032b\u0190\u032d\u0191\u032f\u0192"+ - "\u0331\u0193\u0333\u0194\u0335\u0195\u0337\u0196\u0339\u0197\u033b\u0198"+ - "\u033d\u0199\u033f\u019a\u0341\u019b\u0343\u019c\u0345\u019d\u0347\u019e"+ - "\u0349\u019f\u034b\u01a0\u034d\u01a1\u034f\u01a2\u0351\u01a3\u0353\u01a4"+ - "\u0355\u01a5\u0357\u01a6\u0359\u01a7\u035b\u01a8\u035d\u01a9\u035f\u01aa"+ - "\u0361\u01ab\u0363\u01ac\u0365\u01ad\u0367\u01ae\u0369\u01af\u036b\u01b0"+ - "\u036d\u01b1\u036f\u01b2\u0371\u01b3\u0373\u01b4\u0375\u01b5\u0377\u01b6"+ - "\u0379\u01b7\u037b\u01b8\u037d\u01b9\u037f\u01ba\u0381\u01bb\u0383\u01bc"+ - "\u0385\u01bd\u0387\u01be\u0389\u01bf\u038b\u01c0\u038d\u01c1\u038f\u01c2"+ - "\u0391\u01c3\u0393\u01c4\u0395\u01c5\u0397\u01c6\u0399\u01c7\u039b\u01c8"+ - "\u039d\u01c9\u039f\u01ca\u03a1\u01cb\u03a3\u01cc\u03a5\u01cd\u03a7\u01ce"+ - "\u03a9\u01cf\u03ab\u01d0\u03ad\u01d1\u03af\u01d2\u03b1\u01d3\u03b3\u01d4"+ - "\u03b5\u01d5\u03b7\u01d6\u03b9\u01d7\u03bb\u01d8\u03bd\u01d9\u03bf\u01da"+ - "\u03c1\u01db\u03c3\u01dc\u03c5\u01dd\u03c7\u01de\u03c9\u01df\u03cb\u01e0"+ - "\u03cd\u01e1\u03cf\u01e2\u03d1\u01e3\u03d3\u01e4\u03d5\u01e5\u03d7\u01e6"+ - "\u03d9\u01e7\u03db\u01e8\u03dd\u01e9\u03df\u01ea\u03e1\u01eb\u03e3\u01ec"+ - "\u03e5\u01ed\u03e7\u01ee\u03e9\u01ef\u03eb\u01f0\u03ed\u01f1\u03ef\u01f2"+ - "\u03f1\u01f3\u03f3\u01f4\u03f5\u01f5\u03f7\u01f6\u03f9\u01f7\u03fb\u01f8"+ - "\u03fd\u01f9\u03ff\u01fa\u0401\u01fb\u0403\u01fc\u0405\u01fd\u0407\u01fe"+ - "\u0409\u01ff\u040b\u0200\u040d\u0201\u040f\u0202\u0411\u0203\u0413\u0204"+ - "\u0415\u0205\u0417\u0206\u0419\u0207\u041b\u0208\u041d\u0209\u041f\u020a"+ - "\u0421\u020b\u0423\u020c\u0425\u020d\u0427\u020e\u0429\u020f\u042b\u0210"+ - "\u042d\u0211\u042f\u0212\u0431\u0213\u0433\u0214\u0435\u0215\u0437\u0216"+ - "\u0439\u0217\u043b\u0218\u043d\u0219\u043f\u021a\u0441\u021b\u0443\u021c"+ - "\u0445\u021d\u0447\u021e\u0449\u021f\u044b\u0220\u044d\u0221\u044f\u0222"+ - "\u0451\u0223\u0453\u0224\u0455\u0225\u0457\u0226\u0459\u0227\u045b\u0228"+ - "\u045d\u0229\u045f\u022a\u0461\u022b\u0463\u022c\u0465\u022d\u0467\u022e"+ - "\u0469\u022f\u046b\u0230\u046d\u0231\u046f\u0232\u0471\u0233\u0473\u0234"+ - "\u0475\u0235\u0477\u0236\u0479\u0237\u047b\u0238\u047d\u0239\u047f\u023a"+ - "\u0481\u023b\u0483\u023c\u0485\u023d\u0487\u023e\u0489\u023f\u048b\u0240"+ - "\u048d\u0241\u048f\u0242\u0491\u0243\u0493\u0244\u0495\u0245\u0497\u0246"+ - "\u0499\u0247\u049b\u0248\u049d\u0249\u049f\u024a\u04a1\u024b\u04a3\u024c"+ - "\u04a5\u024d\u04a7\u024e\u04a9\u024f\u04ab\u0250\u04ad\u0251\u04af\u0252"+ - "\u04b1\u0253\u04b3\u0254\u04b5\u0255\u04b7\u0256\u04b9\u0257\u04bb\u0258"+ - "\u04bd\u0259\u04bf\u025a\u04c1\u025b\u04c3\u025c\u04c5\u025d\u04c7\u025e"+ - "\u04c9\u025f\u04cb\u0260\u04cd\u0261\u04cf\u0262\u04d1\u0263\u04d3\u0264"+ - "\u04d5\u0265\u04d7\u0266\u04d9\u0267\u04db\u0268\u04dd\u0269\u04df\u026a"+ - "\u04e1\u026b\u04e3\u026c\u04e5\u026d\u04e7\u026e\u04e9\u026f\u04eb\u0270"+ - "\u04ed\u0271\u04ef\u0272\u04f1\u0273\u04f3\u0274\u04f5\u0275\u04f7\u0276"+ - "\u04f9\u0277\u04fb\u0278\u04fd\u0279\u04ff\u027a\u0501\u027b\u0503\u027c"+ - "\u0505\u0000\u0507\u0000\u0509\u0000\u050b\u027d\u050d\u027e\u050f\u027f"+ - "\u0511\u0280\u0513\u0281\u0515\u0282\u0517\u0283\u0519\u0284\u051b\u0285"+ - "\u051d\u0286\u051f\u0000\u0521\u0287\u0523\u0288\u0525\u0289\u0527\u0000"+ - "\u0529\u028a\u052b\u028b\u052d\u028c\u052f\u028d\u0531\u028e\u0533\u028f"+ - "\u0535\u0290\u0537\u0291\u0539\u0292\u053b\u0293\u053d\u0294\u053f\u0000"+ - "\u0541\u0295\u0543\u0296\u0545\u0297\u0547\u0298\u0549\u0299\u054b\u029a"+ - "\u054d\u029b\u054f\u029c\u0551\u029d\u0553\u029e\u0555\u029f\u0557\u02a0"+ - "\u0559\u0000\u055b\u02a1\u055d\u02a2\u055f\u0000\u0561\u0000\u0563\u0000"+ - "\u0565\u02a3\u0567\u0000\u0569\u0000\u056b\u02a7\u056d\u02a4\u056f\u02a5"+ - "\u0571\u02a6\u0005\u0000\u0001\u0002\u0003\u00043\u0001\u000009\u0002"+ - "\u0000++--\t\u0000!!##%&**<@^^``||~~\u0002\u0000*+<>\b\u0000!!##%&?@^"+ - "^``||~~\u0002\u0000AAaa\u0002\u0000LLll\u0002\u0000NNnn\u0002\u0000YY"+ - "yy\u0002\u0000SSss\u0002\u0000EEee\u0002\u0000ZZzz\u0002\u0000DDdd\u0002"+ - "\u0000RRrr\u0002\u0000CCcc\u0002\u0000MMmm\u0002\u0000TTtt\u0002\u0000"+ - "IIii\u0002\u0000BBbb\u0002\u0000OOoo\u0002\u0000HHhh\u0002\u0000KKkk\u0002"+ - "\u0000UUuu\u0002\u0000GGgg\u0002\u0000PPpp\u0002\u0000FFff\u0002\u0000"+ - "XXxx\u0002\u0000VVvv\u0002\u0000QQqq\u0002\u0000WWww\u0002\u0000JJjj\t"+ - "\u0000AZ__az\u00aa\u00aa\u00b5\u00b5\u00ba\u00ba\u00c0\u00d6\u00d8\u00f6"+ - "\u00f8\u00ff\u0002\u0000\u0100\u8000\ud7ff\u8000\ue000\u8000\uffff\u0001"+ - "\u0000\u8000\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000\udfff\u0002"+ - "\u0000\u0000\u0000\"\"\u0001\u0000\"\"\u0001\u0000\'\'\u0001\u000001\u0003"+ - "\u000009AFaf\u0003\u0000AZ__az\u0005\u0000$$09AZ__az\u0002\u0000\"\"\\"+ - "\\\u0002\u0000\t\t \u0002\u0000\n\n\r\r\u0002\u0000**//\u0004\u0000\n"+ - "\n\r\r\"\"\\\\\u0003\u0000\n\n\r\r\"\"\u0003\u0000UUuuxx\u0002\u0000\'"+ - "\'\\\\\u0001\u0000$$\u1acf\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007"+ - "\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001"+ - "\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000"+ - "\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000"+ - "\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000"+ - "\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000"+ - "\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000"+ - "\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000"+ - "\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000"+ - ")\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001"+ - "\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000"+ - "\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u0000"+ - "7\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001"+ - "\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000"+ - "\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000"+ - "K\u0001\u0000\u0000\u0000\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001"+ - "\u0000\u0000\u0000\u0000Q\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000"+ - "\u0000\u0000U\u0001\u0000\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000"+ - "Y\u0001\u0000\u0000\u0000\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001"+ - "\u0000\u0000\u0000\u0000_\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000"+ - "\u0000\u0000c\u0001\u0000\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000"+ - "g\u0001\u0000\u0000\u0000\u0000i\u0001\u0000\u0000\u0000\u0000k\u0001"+ - "\u0000\u0000\u0000\u0000m\u0001\u0000\u0000\u0000\u0000o\u0001\u0000\u0000"+ - "\u0000\u0000q\u0001\u0000\u0000\u0000\u0000s\u0001\u0000\u0000\u0000\u0000"+ - "u\u0001\u0000\u0000\u0000\u0000w\u0001\u0000\u0000\u0000\u0000y\u0001"+ - "\u0000\u0000\u0000\u0000{\u0001\u0000\u0000\u0000\u0000}\u0001\u0000\u0000"+ - "\u0000\u0000\u007f\u0001\u0000\u0000\u0000\u0000\u0081\u0001\u0000\u0000"+ - "\u0000\u0000\u0083\u0001\u0000\u0000\u0000\u0000\u0085\u0001\u0000\u0000"+ - "\u0000\u0000\u0087\u0001\u0000\u0000\u0000\u0000\u0089\u0001\u0000\u0000"+ - "\u0000\u0000\u008b\u0001\u0000\u0000\u0000\u0000\u008d\u0001\u0000\u0000"+ - "\u0000\u0000\u008f\u0001\u0000\u0000\u0000\u0000\u0091\u0001\u0000\u0000"+ - "\u0000\u0000\u0093\u0001\u0000\u0000\u0000\u0000\u0095\u0001\u0000\u0000"+ - "\u0000\u0000\u0097\u0001\u0000\u0000\u0000\u0000\u0099\u0001\u0000\u0000"+ - "\u0000\u0000\u009b\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000"+ - "\u0000\u0000\u009f\u0001\u0000\u0000\u0000\u0000\u00a1\u0001\u0000\u0000"+ - "\u0000\u0000\u00a3\u0001\u0000\u0000\u0000\u0000\u00a5\u0001\u0000\u0000"+ - "\u0000\u0000\u00a7\u0001\u0000\u0000\u0000\u0000\u00a9\u0001\u0000\u0000"+ - "\u0000\u0000\u00ab\u0001\u0000\u0000\u0000\u0000\u00ad\u0001\u0000\u0000"+ - "\u0000\u0000\u00af\u0001\u0000\u0000\u0000\u0000\u00b1\u0001\u0000\u0000"+ - "\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000"+ - "\u0000\u0000\u00b7\u0001\u0000\u0000\u0000\u0000\u00b9\u0001\u0000\u0000"+ - "\u0000\u0000\u00bb\u0001\u0000\u0000\u0000\u0000\u00bd\u0001\u0000\u0000"+ - "\u0000\u0000\u00bf\u0001\u0000\u0000\u0000\u0000\u00c1\u0001\u0000\u0000"+ - "\u0000\u0000\u00c3\u0001\u0000\u0000\u0000\u0000\u00c5\u0001\u0000\u0000"+ - "\u0000\u0000\u00c7\u0001\u0000\u0000\u0000\u0000\u00c9\u0001\u0000\u0000"+ - "\u0000\u0000\u00cb\u0001\u0000\u0000\u0000\u0000\u00cd\u0001\u0000\u0000"+ - "\u0000\u0000\u00cf\u0001\u0000\u0000\u0000\u0000\u00d1\u0001\u0000\u0000"+ - "\u0000\u0000\u00d3\u0001\u0000\u0000\u0000\u0000\u00d5\u0001\u0000\u0000"+ - "\u0000\u0000\u00d7\u0001\u0000\u0000\u0000\u0000\u00d9\u0001\u0000\u0000"+ - "\u0000\u0000\u00db\u0001\u0000\u0000\u0000\u0000\u00dd\u0001\u0000\u0000"+ - "\u0000\u0000\u00df\u0001\u0000\u0000\u0000\u0000\u00e1\u0001\u0000\u0000"+ - "\u0000\u0000\u00e3\u0001\u0000\u0000\u0000\u0000\u00e5\u0001\u0000\u0000"+ - "\u0000\u0000\u00e7\u0001\u0000\u0000\u0000\u0000\u00e9\u0001\u0000\u0000"+ - "\u0000\u0000\u00eb\u0001\u0000\u0000\u0000\u0000\u00ed\u0001\u0000\u0000"+ - "\u0000\u0000\u00ef\u0001\u0000\u0000\u0000\u0000\u00f1\u0001\u0000\u0000"+ - "\u0000\u0000\u00f3\u0001\u0000\u0000\u0000\u0000\u00f5\u0001\u0000\u0000"+ - "\u0000\u0000\u00f7\u0001\u0000\u0000\u0000\u0000\u00f9\u0001\u0000\u0000"+ - "\u0000\u0000\u00fb\u0001\u0000\u0000\u0000\u0000\u00fd\u0001\u0000\u0000"+ - "\u0000\u0000\u00ff\u0001\u0000\u0000\u0000\u0000\u0101\u0001\u0000\u0000"+ - "\u0000\u0000\u0103\u0001\u0000\u0000\u0000\u0000\u0105\u0001\u0000\u0000"+ - "\u0000\u0000\u0107\u0001\u0000\u0000\u0000\u0000\u0109\u0001\u0000\u0000"+ - "\u0000\u0000\u010b\u0001\u0000\u0000\u0000\u0000\u010d\u0001\u0000\u0000"+ - "\u0000\u0000\u010f\u0001\u0000\u0000\u0000\u0000\u0111\u0001\u0000\u0000"+ - "\u0000\u0000\u0113\u0001\u0000\u0000\u0000\u0000\u0115\u0001\u0000\u0000"+ - "\u0000\u0000\u0117\u0001\u0000\u0000\u0000\u0000\u0119\u0001\u0000\u0000"+ - "\u0000\u0000\u011b\u0001\u0000\u0000\u0000\u0000\u011d\u0001\u0000\u0000"+ - "\u0000\u0000\u011f\u0001\u0000\u0000\u0000\u0000\u0121\u0001\u0000\u0000"+ - "\u0000\u0000\u0123\u0001\u0000\u0000\u0000\u0000\u0125\u0001\u0000\u0000"+ - "\u0000\u0000\u0127\u0001\u0000\u0000\u0000\u0000\u0129\u0001\u0000\u0000"+ - "\u0000\u0000\u012b\u0001\u0000\u0000\u0000\u0000\u012d\u0001\u0000\u0000"+ - "\u0000\u0000\u012f\u0001\u0000\u0000\u0000\u0000\u0131\u0001\u0000\u0000"+ - "\u0000\u0000\u0133\u0001\u0000\u0000\u0000\u0000\u0135\u0001\u0000\u0000"+ - "\u0000\u0000\u0137\u0001\u0000\u0000\u0000\u0000\u0139\u0001\u0000\u0000"+ - "\u0000\u0000\u013b\u0001\u0000\u0000\u0000\u0000\u013d\u0001\u0000\u0000"+ - "\u0000\u0000\u013f\u0001\u0000\u0000\u0000\u0000\u0141\u0001\u0000\u0000"+ - "\u0000\u0000\u0143\u0001\u0000\u0000\u0000\u0000\u0145\u0001\u0000\u0000"+ - "\u0000\u0000\u0147\u0001\u0000\u0000\u0000\u0000\u0149\u0001\u0000\u0000"+ - "\u0000\u0000\u014b\u0001\u0000\u0000\u0000\u0000\u014d\u0001\u0000\u0000"+ - "\u0000\u0000\u014f\u0001\u0000\u0000\u0000\u0000\u0151\u0001\u0000\u0000"+ - "\u0000\u0000\u0153\u0001\u0000\u0000\u0000\u0000\u0155\u0001\u0000\u0000"+ - "\u0000\u0000\u0157\u0001\u0000\u0000\u0000\u0000\u0159\u0001\u0000\u0000"+ - "\u0000\u0000\u015b\u0001\u0000\u0000\u0000\u0000\u015d\u0001\u0000\u0000"+ - "\u0000\u0000\u015f\u0001\u0000\u0000\u0000\u0000\u0161\u0001\u0000\u0000"+ - "\u0000\u0000\u0163\u0001\u0000\u0000\u0000\u0000\u0165\u0001\u0000\u0000"+ - "\u0000\u0000\u0167\u0001\u0000\u0000\u0000\u0000\u0169\u0001\u0000\u0000"+ - "\u0000\u0000\u016b\u0001\u0000\u0000\u0000\u0000\u016d\u0001\u0000\u0000"+ - "\u0000\u0000\u016f\u0001\u0000\u0000\u0000\u0000\u0171\u0001\u0000\u0000"+ - "\u0000\u0000\u0173\u0001\u0000\u0000\u0000\u0000\u0175\u0001\u0000\u0000"+ - "\u0000\u0000\u0177\u0001\u0000\u0000\u0000\u0000\u0179\u0001\u0000\u0000"+ - "\u0000\u0000\u017b\u0001\u0000\u0000\u0000\u0000\u017d\u0001\u0000\u0000"+ - "\u0000\u0000\u017f\u0001\u0000\u0000\u0000\u0000\u0181\u0001\u0000\u0000"+ - "\u0000\u0000\u0183\u0001\u0000\u0000\u0000\u0000\u0185\u0001\u0000\u0000"+ - "\u0000\u0000\u0187\u0001\u0000\u0000\u0000\u0000\u0189\u0001\u0000\u0000"+ - "\u0000\u0000\u018b\u0001\u0000\u0000\u0000\u0000\u018d\u0001\u0000\u0000"+ - "\u0000\u0000\u018f\u0001\u0000\u0000\u0000\u0000\u0191\u0001\u0000\u0000"+ - "\u0000\u0000\u0193\u0001\u0000\u0000\u0000\u0000\u0195\u0001\u0000\u0000"+ - "\u0000\u0000\u0197\u0001\u0000\u0000\u0000\u0000\u0199\u0001\u0000\u0000"+ - "\u0000\u0000\u019b\u0001\u0000\u0000\u0000\u0000\u019d\u0001\u0000\u0000"+ - "\u0000\u0000\u019f\u0001\u0000\u0000\u0000\u0000\u01a1\u0001\u0000\u0000"+ - "\u0000\u0000\u01a3\u0001\u0000\u0000\u0000\u0000\u01a5\u0001\u0000\u0000"+ - "\u0000\u0000\u01a7\u0001\u0000\u0000\u0000\u0000\u01a9\u0001\u0000\u0000"+ - "\u0000\u0000\u01ab\u0001\u0000\u0000\u0000\u0000\u01ad\u0001\u0000\u0000"+ - "\u0000\u0000\u01af\u0001\u0000\u0000\u0000\u0000\u01b1\u0001\u0000\u0000"+ - "\u0000\u0000\u01b3\u0001\u0000\u0000\u0000\u0000\u01b5\u0001\u0000\u0000"+ - "\u0000\u0000\u01b7\u0001\u0000\u0000\u0000\u0000\u01b9\u0001\u0000\u0000"+ - "\u0000\u0000\u01bb\u0001\u0000\u0000\u0000\u0000\u01bd\u0001\u0000\u0000"+ - "\u0000\u0000\u01bf\u0001\u0000\u0000\u0000\u0000\u01c1\u0001\u0000\u0000"+ - "\u0000\u0000\u01c3\u0001\u0000\u0000\u0000\u0000\u01c5\u0001\u0000\u0000"+ - "\u0000\u0000\u01c7\u0001\u0000\u0000\u0000\u0000\u01c9\u0001\u0000\u0000"+ - "\u0000\u0000\u01cb\u0001\u0000\u0000\u0000\u0000\u01cd\u0001\u0000\u0000"+ - "\u0000\u0000\u01cf\u0001\u0000\u0000\u0000\u0000\u01d1\u0001\u0000\u0000"+ - "\u0000\u0000\u01d3\u0001\u0000\u0000\u0000\u0000\u01d5\u0001\u0000\u0000"+ - "\u0000\u0000\u01d7\u0001\u0000\u0000\u0000\u0000\u01d9\u0001\u0000\u0000"+ - "\u0000\u0000\u01db\u0001\u0000\u0000\u0000\u0000\u01dd\u0001\u0000\u0000"+ - "\u0000\u0000\u01df\u0001\u0000\u0000\u0000\u0000\u01e1\u0001\u0000\u0000"+ - "\u0000\u0000\u01e3\u0001\u0000\u0000\u0000\u0000\u01e5\u0001\u0000\u0000"+ - "\u0000\u0000\u01e7\u0001\u0000\u0000\u0000\u0000\u01e9\u0001\u0000\u0000"+ - "\u0000\u0000\u01eb\u0001\u0000\u0000\u0000\u0000\u01ed\u0001\u0000\u0000"+ - "\u0000\u0000\u01ef\u0001\u0000\u0000\u0000\u0000\u01f1\u0001\u0000\u0000"+ - "\u0000\u0000\u01f3\u0001\u0000\u0000\u0000\u0000\u01f5\u0001\u0000\u0000"+ - "\u0000\u0000\u01f7\u0001\u0000\u0000\u0000\u0000\u01f9\u0001\u0000\u0000"+ - "\u0000\u0000\u01fb\u0001\u0000\u0000\u0000\u0000\u01fd\u0001\u0000\u0000"+ - "\u0000\u0000\u01ff\u0001\u0000\u0000\u0000\u0000\u0201\u0001\u0000\u0000"+ - "\u0000\u0000\u0203\u0001\u0000\u0000\u0000\u0000\u0205\u0001\u0000\u0000"+ - "\u0000\u0000\u0207\u0001\u0000\u0000\u0000\u0000\u0209\u0001\u0000\u0000"+ - "\u0000\u0000\u020b\u0001\u0000\u0000\u0000\u0000\u020d\u0001\u0000\u0000"+ - "\u0000\u0000\u020f\u0001\u0000\u0000\u0000\u0000\u0211\u0001\u0000\u0000"+ - "\u0000\u0000\u0213\u0001\u0000\u0000\u0000\u0000\u0215\u0001\u0000\u0000"+ - "\u0000\u0000\u0217\u0001\u0000\u0000\u0000\u0000\u0219\u0001\u0000\u0000"+ - "\u0000\u0000\u021b\u0001\u0000\u0000\u0000\u0000\u021d\u0001\u0000\u0000"+ - "\u0000\u0000\u021f\u0001\u0000\u0000\u0000\u0000\u0221\u0001\u0000\u0000"+ - "\u0000\u0000\u0223\u0001\u0000\u0000\u0000\u0000\u0225\u0001\u0000\u0000"+ - "\u0000\u0000\u0227\u0001\u0000\u0000\u0000\u0000\u0229\u0001\u0000\u0000"+ - "\u0000\u0000\u022b\u0001\u0000\u0000\u0000\u0000\u022d\u0001\u0000\u0000"+ - "\u0000\u0000\u022f\u0001\u0000\u0000\u0000\u0000\u0231\u0001\u0000\u0000"+ - "\u0000\u0000\u0233\u0001\u0000\u0000\u0000\u0000\u0235\u0001\u0000\u0000"+ - "\u0000\u0000\u0237\u0001\u0000\u0000\u0000\u0000\u0239\u0001\u0000\u0000"+ - "\u0000\u0000\u023b\u0001\u0000\u0000\u0000\u0000\u023d\u0001\u0000\u0000"+ - "\u0000\u0000\u023f\u0001\u0000\u0000\u0000\u0000\u0241\u0001\u0000\u0000"+ - "\u0000\u0000\u0243\u0001\u0000\u0000\u0000\u0000\u0245\u0001\u0000\u0000"+ - "\u0000\u0000\u0247\u0001\u0000\u0000\u0000\u0000\u0249\u0001\u0000\u0000"+ - "\u0000\u0000\u024b\u0001\u0000\u0000\u0000\u0000\u024d\u0001\u0000\u0000"+ - "\u0000\u0000\u024f\u0001\u0000\u0000\u0000\u0000\u0251\u0001\u0000\u0000"+ - "\u0000\u0000\u0253\u0001\u0000\u0000\u0000\u0000\u0255\u0001\u0000\u0000"+ - "\u0000\u0000\u0257\u0001\u0000\u0000\u0000\u0000\u0259\u0001\u0000\u0000"+ - "\u0000\u0000\u025b\u0001\u0000\u0000\u0000\u0000\u025d\u0001\u0000\u0000"+ - "\u0000\u0000\u025f\u0001\u0000\u0000\u0000\u0000\u0261\u0001\u0000\u0000"+ - "\u0000\u0000\u0263\u0001\u0000\u0000\u0000\u0000\u0265\u0001\u0000\u0000"+ - "\u0000\u0000\u0267\u0001\u0000\u0000\u0000\u0000\u0269\u0001\u0000\u0000"+ - "\u0000\u0000\u026b\u0001\u0000\u0000\u0000\u0000\u026d\u0001\u0000\u0000"+ - "\u0000\u0000\u026f\u0001\u0000\u0000\u0000\u0000\u0271\u0001\u0000\u0000"+ - "\u0000\u0000\u0273\u0001\u0000\u0000\u0000\u0000\u0275\u0001\u0000\u0000"+ - "\u0000\u0000\u0277\u0001\u0000\u0000\u0000\u0000\u0279\u0001\u0000\u0000"+ - "\u0000\u0000\u027b\u0001\u0000\u0000\u0000\u0000\u027d\u0001\u0000\u0000"+ - "\u0000\u0000\u027f\u0001\u0000\u0000\u0000\u0000\u0281\u0001\u0000\u0000"+ - "\u0000\u0000\u0283\u0001\u0000\u0000\u0000\u0000\u0285\u0001\u0000\u0000"+ - "\u0000\u0000\u0287\u0001\u0000\u0000\u0000\u0000\u0289\u0001\u0000\u0000"+ - "\u0000\u0000\u028b\u0001\u0000\u0000\u0000\u0000\u028d\u0001\u0000\u0000"+ - "\u0000\u0000\u028f\u0001\u0000\u0000\u0000\u0000\u0291\u0001\u0000\u0000"+ - "\u0000\u0000\u0293\u0001\u0000\u0000\u0000\u0000\u0295\u0001\u0000\u0000"+ - "\u0000\u0000\u0297\u0001\u0000\u0000\u0000\u0000\u0299\u0001\u0000\u0000"+ - "\u0000\u0000\u029b\u0001\u0000\u0000\u0000\u0000\u029d\u0001\u0000\u0000"+ - "\u0000\u0000\u029f\u0001\u0000\u0000\u0000\u0000\u02a1\u0001\u0000\u0000"+ - "\u0000\u0000\u02a3\u0001\u0000\u0000\u0000\u0000\u02a5\u0001\u0000\u0000"+ - "\u0000\u0000\u02a7\u0001\u0000\u0000\u0000\u0000\u02a9\u0001\u0000\u0000"+ - "\u0000\u0000\u02ab\u0001\u0000\u0000\u0000\u0000\u02ad\u0001\u0000\u0000"+ - "\u0000\u0000\u02af\u0001\u0000\u0000\u0000\u0000\u02b1\u0001\u0000\u0000"+ - "\u0000\u0000\u02b3\u0001\u0000\u0000\u0000\u0000\u02b5\u0001\u0000\u0000"+ - "\u0000\u0000\u02b7\u0001\u0000\u0000\u0000\u0000\u02b9\u0001\u0000\u0000"+ - "\u0000\u0000\u02bb\u0001\u0000\u0000\u0000\u0000\u02bd\u0001\u0000\u0000"+ - "\u0000\u0000\u02bf\u0001\u0000\u0000\u0000\u0000\u02c1\u0001\u0000\u0000"+ - "\u0000\u0000\u02c3\u0001\u0000\u0000\u0000\u0000\u02c5\u0001\u0000\u0000"+ - "\u0000\u0000\u02c7\u0001\u0000\u0000\u0000\u0000\u02c9\u0001\u0000\u0000"+ - "\u0000\u0000\u02cb\u0001\u0000\u0000\u0000\u0000\u02cd\u0001\u0000\u0000"+ - "\u0000\u0000\u02cf\u0001\u0000\u0000\u0000\u0000\u02d1\u0001\u0000\u0000"+ - "\u0000\u0000\u02d3\u0001\u0000\u0000\u0000\u0000\u02d5\u0001\u0000\u0000"+ - "\u0000\u0000\u02d7\u0001\u0000\u0000\u0000\u0000\u02d9\u0001\u0000\u0000"+ - "\u0000\u0000\u02db\u0001\u0000\u0000\u0000\u0000\u02dd\u0001\u0000\u0000"+ - "\u0000\u0000\u02df\u0001\u0000\u0000\u0000\u0000\u02e1\u0001\u0000\u0000"+ - "\u0000\u0000\u02e3\u0001\u0000\u0000\u0000\u0000\u02e5\u0001\u0000\u0000"+ - "\u0000\u0000\u02e7\u0001\u0000\u0000\u0000\u0000\u02e9\u0001\u0000\u0000"+ - "\u0000\u0000\u02eb\u0001\u0000\u0000\u0000\u0000\u02ed\u0001\u0000\u0000"+ - "\u0000\u0000\u02ef\u0001\u0000\u0000\u0000\u0000\u02f1\u0001\u0000\u0000"+ - "\u0000\u0000\u02f3\u0001\u0000\u0000\u0000\u0000\u02f5\u0001\u0000\u0000"+ - "\u0000\u0000\u02f7\u0001\u0000\u0000\u0000\u0000\u02f9\u0001\u0000\u0000"+ - "\u0000\u0000\u02fb\u0001\u0000\u0000\u0000\u0000\u02fd\u0001\u0000\u0000"+ - "\u0000\u0000\u02ff\u0001\u0000\u0000\u0000\u0000\u0301\u0001\u0000\u0000"+ - "\u0000\u0000\u0303\u0001\u0000\u0000\u0000\u0000\u0305\u0001\u0000\u0000"+ - "\u0000\u0000\u0307\u0001\u0000\u0000\u0000\u0000\u0309\u0001\u0000\u0000"+ - "\u0000\u0000\u030b\u0001\u0000\u0000\u0000\u0000\u030d\u0001\u0000\u0000"+ - "\u0000\u0000\u030f\u0001\u0000\u0000\u0000\u0000\u0311\u0001\u0000\u0000"+ - "\u0000\u0000\u0313\u0001\u0000\u0000\u0000\u0000\u0315\u0001\u0000\u0000"+ - "\u0000\u0000\u0317\u0001\u0000\u0000\u0000\u0000\u0319\u0001\u0000\u0000"+ - "\u0000\u0000\u031b\u0001\u0000\u0000\u0000\u0000\u031d\u0001\u0000\u0000"+ - "\u0000\u0000\u031f\u0001\u0000\u0000\u0000\u0000\u0321\u0001\u0000\u0000"+ - "\u0000\u0000\u0323\u0001\u0000\u0000\u0000\u0000\u0325\u0001\u0000\u0000"+ - "\u0000\u0000\u0327\u0001\u0000\u0000\u0000\u0000\u0329\u0001\u0000\u0000"+ - "\u0000\u0000\u032b\u0001\u0000\u0000\u0000\u0000\u032d\u0001\u0000\u0000"+ - "\u0000\u0000\u032f\u0001\u0000\u0000\u0000\u0000\u0331\u0001\u0000\u0000"+ - "\u0000\u0000\u0333\u0001\u0000\u0000\u0000\u0000\u0335\u0001\u0000\u0000"+ - "\u0000\u0000\u0337\u0001\u0000\u0000\u0000\u0000\u0339\u0001\u0000\u0000"+ - "\u0000\u0000\u033b\u0001\u0000\u0000\u0000\u0000\u033d\u0001\u0000\u0000"+ - "\u0000\u0000\u033f\u0001\u0000\u0000\u0000\u0000\u0341\u0001\u0000\u0000"+ - "\u0000\u0000\u0343\u0001\u0000\u0000\u0000\u0000\u0345\u0001\u0000\u0000"+ - "\u0000\u0000\u0347\u0001\u0000\u0000\u0000\u0000\u0349\u0001\u0000\u0000"+ - "\u0000\u0000\u034b\u0001\u0000\u0000\u0000\u0000\u034d\u0001\u0000\u0000"+ - "\u0000\u0000\u034f\u0001\u0000\u0000\u0000\u0000\u0351\u0001\u0000\u0000"+ - "\u0000\u0000\u0353\u0001\u0000\u0000\u0000\u0000\u0355\u0001\u0000\u0000"+ - "\u0000\u0000\u0357\u0001\u0000\u0000\u0000\u0000\u0359\u0001\u0000\u0000"+ - "\u0000\u0000\u035b\u0001\u0000\u0000\u0000\u0000\u035d\u0001\u0000\u0000"+ - "\u0000\u0000\u035f\u0001\u0000\u0000\u0000\u0000\u0361\u0001\u0000\u0000"+ - "\u0000\u0000\u0363\u0001\u0000\u0000\u0000\u0000\u0365\u0001\u0000\u0000"+ - "\u0000\u0000\u0367\u0001\u0000\u0000\u0000\u0000\u0369\u0001\u0000\u0000"+ - "\u0000\u0000\u036b\u0001\u0000\u0000\u0000\u0000\u036d\u0001\u0000\u0000"+ - "\u0000\u0000\u036f\u0001\u0000\u0000\u0000\u0000\u0371\u0001\u0000\u0000"+ - "\u0000\u0000\u0373\u0001\u0000\u0000\u0000\u0000\u0375\u0001\u0000\u0000"+ - "\u0000\u0000\u0377\u0001\u0000\u0000\u0000\u0000\u0379\u0001\u0000\u0000"+ - "\u0000\u0000\u037b\u0001\u0000\u0000\u0000\u0000\u037d\u0001\u0000\u0000"+ - "\u0000\u0000\u037f\u0001\u0000\u0000\u0000\u0000\u0381\u0001\u0000\u0000"+ - "\u0000\u0000\u0383\u0001\u0000\u0000\u0000\u0000\u0385\u0001\u0000\u0000"+ - "\u0000\u0000\u0387\u0001\u0000\u0000\u0000\u0000\u0389\u0001\u0000\u0000"+ - "\u0000\u0000\u038b\u0001\u0000\u0000\u0000\u0000\u038d\u0001\u0000\u0000"+ - "\u0000\u0000\u038f\u0001\u0000\u0000\u0000\u0000\u0391\u0001\u0000\u0000"+ - "\u0000\u0000\u0393\u0001\u0000\u0000\u0000\u0000\u0395\u0001\u0000\u0000"+ - "\u0000\u0000\u0397\u0001\u0000\u0000\u0000\u0000\u0399\u0001\u0000\u0000"+ - "\u0000\u0000\u039b\u0001\u0000\u0000\u0000\u0000\u039d\u0001\u0000\u0000"+ - "\u0000\u0000\u039f\u0001\u0000\u0000\u0000\u0000\u03a1\u0001\u0000\u0000"+ - "\u0000\u0000\u03a3\u0001\u0000\u0000\u0000\u0000\u03a5\u0001\u0000\u0000"+ - "\u0000\u0000\u03a7\u0001\u0000\u0000\u0000\u0000\u03a9\u0001\u0000\u0000"+ - "\u0000\u0000\u03ab\u0001\u0000\u0000\u0000\u0000\u03ad\u0001\u0000\u0000"+ - "\u0000\u0000\u03af\u0001\u0000\u0000\u0000\u0000\u03b1\u0001\u0000\u0000"+ - "\u0000\u0000\u03b3\u0001\u0000\u0000\u0000\u0000\u03b5\u0001\u0000\u0000"+ - "\u0000\u0000\u03b7\u0001\u0000\u0000\u0000\u0000\u03b9\u0001\u0000\u0000"+ - "\u0000\u0000\u03bb\u0001\u0000\u0000\u0000\u0000\u03bd\u0001\u0000\u0000"+ - "\u0000\u0000\u03bf\u0001\u0000\u0000\u0000\u0000\u03c1\u0001\u0000\u0000"+ - "\u0000\u0000\u03c3\u0001\u0000\u0000\u0000\u0000\u03c5\u0001\u0000\u0000"+ - "\u0000\u0000\u03c7\u0001\u0000\u0000\u0000\u0000\u03c9\u0001\u0000\u0000"+ - "\u0000\u0000\u03cb\u0001\u0000\u0000\u0000\u0000\u03cd\u0001\u0000\u0000"+ - "\u0000\u0000\u03cf\u0001\u0000\u0000\u0000\u0000\u03d1\u0001\u0000\u0000"+ - "\u0000\u0000\u03d3\u0001\u0000\u0000\u0000\u0000\u03d5\u0001\u0000\u0000"+ - "\u0000\u0000\u03d7\u0001\u0000\u0000\u0000\u0000\u03d9\u0001\u0000\u0000"+ - "\u0000\u0000\u03db\u0001\u0000\u0000\u0000\u0000\u03dd\u0001\u0000\u0000"+ - "\u0000\u0000\u03df\u0001\u0000\u0000\u0000\u0000\u03e1\u0001\u0000\u0000"+ - "\u0000\u0000\u03e3\u0001\u0000\u0000\u0000\u0000\u03e5\u0001\u0000\u0000"+ - "\u0000\u0000\u03e7\u0001\u0000\u0000\u0000\u0000\u03e9\u0001\u0000\u0000"+ - "\u0000\u0000\u03eb\u0001\u0000\u0000\u0000\u0000\u03ed\u0001\u0000\u0000"+ - "\u0000\u0000\u03ef\u0001\u0000\u0000\u0000\u0000\u03f1\u0001\u0000\u0000"+ - "\u0000\u0000\u03f3\u0001\u0000\u0000\u0000\u0000\u03f5\u0001\u0000\u0000"+ - "\u0000\u0000\u03f7\u0001\u0000\u0000\u0000\u0000\u03f9\u0001\u0000\u0000"+ - "\u0000\u0000\u03fb\u0001\u0000\u0000\u0000\u0000\u03fd\u0001\u0000\u0000"+ - "\u0000\u0000\u03ff\u0001\u0000\u0000\u0000\u0000\u0401\u0001\u0000\u0000"+ - "\u0000\u0000\u0403\u0001\u0000\u0000\u0000\u0000\u0405\u0001\u0000\u0000"+ - "\u0000\u0000\u0407\u0001\u0000\u0000\u0000\u0000\u0409\u0001\u0000\u0000"+ - "\u0000\u0000\u040b\u0001\u0000\u0000\u0000\u0000\u040d\u0001\u0000\u0000"+ - "\u0000\u0000\u040f\u0001\u0000\u0000\u0000\u0000\u0411\u0001\u0000\u0000"+ - "\u0000\u0000\u0413\u0001\u0000\u0000\u0000\u0000\u0415\u0001\u0000\u0000"+ - "\u0000\u0000\u0417\u0001\u0000\u0000\u0000\u0000\u0419\u0001\u0000\u0000"+ - "\u0000\u0000\u041b\u0001\u0000\u0000\u0000\u0000\u041d\u0001\u0000\u0000"+ - "\u0000\u0000\u041f\u0001\u0000\u0000\u0000\u0000\u0421\u0001\u0000\u0000"+ - "\u0000\u0000\u0423\u0001\u0000\u0000\u0000\u0000\u0425\u0001\u0000\u0000"+ - "\u0000\u0000\u0427\u0001\u0000\u0000\u0000\u0000\u0429\u0001\u0000\u0000"+ - "\u0000\u0000\u042b\u0001\u0000\u0000\u0000\u0000\u042d\u0001\u0000\u0000"+ - "\u0000\u0000\u042f\u0001\u0000\u0000\u0000\u0000\u0431\u0001\u0000\u0000"+ - "\u0000\u0000\u0433\u0001\u0000\u0000\u0000\u0000\u0435\u0001\u0000\u0000"+ - "\u0000\u0000\u0437\u0001\u0000\u0000\u0000\u0000\u0439\u0001\u0000\u0000"+ - "\u0000\u0000\u043b\u0001\u0000\u0000\u0000\u0000\u043d\u0001\u0000\u0000"+ - "\u0000\u0000\u043f\u0001\u0000\u0000\u0000\u0000\u0441\u0001\u0000\u0000"+ - "\u0000\u0000\u0443\u0001\u0000\u0000\u0000\u0000\u0445\u0001\u0000\u0000"+ - "\u0000\u0000\u0447\u0001\u0000\u0000\u0000\u0000\u0449\u0001\u0000\u0000"+ - "\u0000\u0000\u044b\u0001\u0000\u0000\u0000\u0000\u044d\u0001\u0000\u0000"+ - "\u0000\u0000\u044f\u0001\u0000\u0000\u0000\u0000\u0451\u0001\u0000\u0000"+ - "\u0000\u0000\u0453\u0001\u0000\u0000\u0000\u0000\u0455\u0001\u0000\u0000"+ - "\u0000\u0000\u0457\u0001\u0000\u0000\u0000\u0000\u0459\u0001\u0000\u0000"+ - "\u0000\u0000\u045b\u0001\u0000\u0000\u0000\u0000\u045d\u0001\u0000\u0000"+ - "\u0000\u0000\u045f\u0001\u0000\u0000\u0000\u0000\u0461\u0001\u0000\u0000"+ - "\u0000\u0000\u0463\u0001\u0000\u0000\u0000\u0000\u0465\u0001\u0000\u0000"+ - "\u0000\u0000\u0467\u0001\u0000\u0000\u0000\u0000\u0469\u0001\u0000\u0000"+ - "\u0000\u0000\u046b\u0001\u0000\u0000\u0000\u0000\u046d\u0001\u0000\u0000"+ - "\u0000\u0000\u046f\u0001\u0000\u0000\u0000\u0000\u0471\u0001\u0000\u0000"+ - "\u0000\u0000\u0473\u0001\u0000\u0000\u0000\u0000\u0475\u0001\u0000\u0000"+ - "\u0000\u0000\u0477\u0001\u0000\u0000\u0000\u0000\u0479\u0001\u0000\u0000"+ - "\u0000\u0000\u047b\u0001\u0000\u0000\u0000\u0000\u047d\u0001\u0000\u0000"+ - "\u0000\u0000\u047f\u0001\u0000\u0000\u0000\u0000\u0481\u0001\u0000\u0000"+ - "\u0000\u0000\u0483\u0001\u0000\u0000\u0000\u0000\u0485\u0001\u0000\u0000"+ - "\u0000\u0000\u0487\u0001\u0000\u0000\u0000\u0000\u0489\u0001\u0000\u0000"+ - "\u0000\u0000\u048b\u0001\u0000\u0000\u0000\u0000\u048d\u0001\u0000\u0000"+ - "\u0000\u0000\u048f\u0001\u0000\u0000\u0000\u0000\u0491\u0001\u0000\u0000"+ - "\u0000\u0000\u0493\u0001\u0000\u0000\u0000\u0000\u0495\u0001\u0000\u0000"+ - "\u0000\u0000\u0497\u0001\u0000\u0000\u0000\u0000\u0499\u0001\u0000\u0000"+ - "\u0000\u0000\u049b\u0001\u0000\u0000\u0000\u0000\u049d\u0001\u0000\u0000"+ - "\u0000\u0000\u049f\u0001\u0000\u0000\u0000\u0000\u04a1\u0001\u0000\u0000"+ - "\u0000\u0000\u04a3\u0001\u0000\u0000\u0000\u0000\u04a5\u0001\u0000\u0000"+ - "\u0000\u0000\u04a7\u0001\u0000\u0000\u0000\u0000\u04a9\u0001\u0000\u0000"+ - "\u0000\u0000\u04ab\u0001\u0000\u0000\u0000\u0000\u04ad\u0001\u0000\u0000"+ - "\u0000\u0000\u04af\u0001\u0000\u0000\u0000\u0000\u04b1\u0001\u0000\u0000"+ - "\u0000\u0000\u04b3\u0001\u0000\u0000\u0000\u0000\u04b5\u0001\u0000\u0000"+ - "\u0000\u0000\u04b7\u0001\u0000\u0000\u0000\u0000\u04b9\u0001\u0000\u0000"+ - "\u0000\u0000\u04bb\u0001\u0000\u0000\u0000\u0000\u04bd\u0001\u0000\u0000"+ - "\u0000\u0000\u04bf\u0001\u0000\u0000\u0000\u0000\u04c1\u0001\u0000\u0000"+ - "\u0000\u0000\u04c3\u0001\u0000\u0000\u0000\u0000\u04c5\u0001\u0000\u0000"+ - "\u0000\u0000\u04c7\u0001\u0000\u0000\u0000\u0000\u04c9\u0001\u0000\u0000"+ - "\u0000\u0000\u04cb\u0001\u0000\u0000\u0000\u0000\u04cd\u0001\u0000\u0000"+ - "\u0000\u0000\u04cf\u0001\u0000\u0000\u0000\u0000\u04d1\u0001\u0000\u0000"+ - "\u0000\u0000\u04d3\u0001\u0000\u0000\u0000\u0000\u04d5\u0001\u0000\u0000"+ - "\u0000\u0000\u04d7\u0001\u0000\u0000\u0000\u0000\u04d9\u0001\u0000\u0000"+ - "\u0000\u0000\u04db\u0001\u0000\u0000\u0000\u0000\u04dd\u0001\u0000\u0000"+ - "\u0000\u0000\u04df\u0001\u0000\u0000\u0000\u0000\u04e1\u0001\u0000\u0000"+ - "\u0000\u0000\u04e3\u0001\u0000\u0000\u0000\u0000\u04e5\u0001\u0000\u0000"+ - "\u0000\u0000\u04e7\u0001\u0000\u0000\u0000\u0000\u04e9\u0001\u0000\u0000"+ - "\u0000\u0000\u04eb\u0001\u0000\u0000\u0000\u0000\u04ed\u0001\u0000\u0000"+ - "\u0000\u0000\u04ef\u0001\u0000\u0000\u0000\u0000\u04f1\u0001\u0000\u0000"+ - "\u0000\u0000\u04f3\u0001\u0000\u0000\u0000\u0000\u04f5\u0001\u0000\u0000"+ - "\u0000\u0000\u04f7\u0001\u0000\u0000\u0000\u0000\u04f9\u0001\u0000\u0000"+ - "\u0000\u0000\u04fb\u0001\u0000\u0000\u0000\u0000\u04fd\u0001\u0000\u0000"+ - "\u0000\u0000\u04ff\u0001\u0000\u0000\u0000\u0000\u0501\u0001\u0000\u0000"+ - "\u0000\u0000\u0503\u0001\u0000\u0000\u0000\u0000\u050b\u0001\u0000\u0000"+ - "\u0000\u0000\u050d\u0001\u0000\u0000\u0000\u0000\u050f\u0001\u0000\u0000"+ - "\u0000\u0000\u0511\u0001\u0000\u0000\u0000\u0000\u0513\u0001\u0000\u0000"+ - "\u0000\u0000\u0515\u0001\u0000\u0000\u0000\u0000\u0517\u0001\u0000\u0000"+ - "\u0000\u0000\u0519\u0001\u0000\u0000\u0000\u0000\u051b\u0001\u0000\u0000"+ - "\u0000\u0000\u051d\u0001\u0000\u0000\u0000\u0000\u051f\u0001\u0000\u0000"+ - "\u0000\u0000\u0521\u0001\u0000\u0000\u0000\u0000\u0523\u0001\u0000\u0000"+ - "\u0000\u0000\u0525\u0001\u0000\u0000\u0000\u0000\u0529\u0001\u0000\u0000"+ - "\u0000\u0000\u052b\u0001\u0000\u0000\u0000\u0000\u052d\u0001\u0000\u0000"+ - "\u0000\u0000\u052f\u0001\u0000\u0000\u0000\u0000\u0531\u0001\u0000\u0000"+ - "\u0000\u0000\u0533\u0001\u0000\u0000\u0000\u0000\u0535\u0001\u0000\u0000"+ - "\u0000\u0000\u0537\u0001\u0000\u0000\u0000\u0000\u0539\u0001\u0000\u0000"+ - "\u0000\u0000\u053b\u0001\u0000\u0000\u0000\u0000\u053d\u0001\u0000\u0000"+ - "\u0000\u0000\u0541\u0001\u0000\u0000\u0000\u0000\u0543\u0001\u0000\u0000"+ - "\u0000\u0000\u0545\u0001\u0000\u0000\u0000\u0000\u0547\u0001\u0000\u0000"+ - "\u0000\u0000\u0549\u0001\u0000\u0000\u0000\u0000\u054b\u0001\u0000\u0000"+ - "\u0000\u0000\u054d\u0001\u0000\u0000\u0000\u0000\u054f\u0001\u0000\u0000"+ - "\u0000\u0000\u0551\u0001\u0000\u0000\u0000\u0000\u0553\u0001\u0000\u0000"+ - "\u0000\u0001\u0555\u0001\u0000\u0000\u0000\u0001\u0557\u0001\u0000\u0000"+ - "\u0000\u0001\u055b\u0001\u0000\u0000\u0000\u0001\u055d\u0001\u0000\u0000"+ - "\u0000\u0002\u0561\u0001\u0000\u0000\u0000\u0002\u0563\u0001\u0000\u0000"+ - "\u0000\u0002\u0565\u0001\u0000\u0000\u0000\u0003\u0567\u0001\u0000\u0000"+ - "\u0000\u0003\u0569\u0001\u0000\u0000\u0000\u0003\u056b\u0001\u0000\u0000"+ - "\u0000\u0003\u056d\u0001\u0000\u0000\u0000\u0004\u056f\u0001\u0000\u0000"+ - "\u0000\u0004\u0571\u0001\u0000\u0000\u0000\u0005\u0573\u0001\u0000\u0000"+ - "\u0000\u0007\u0575\u0001\u0000\u0000\u0000\t\u0577\u0001\u0000\u0000\u0000"+ - "\u000b\u0579\u0001\u0000\u0000\u0000\r\u057b\u0001\u0000\u0000\u0000\u000f"+ - "\u057d\u0001\u0000\u0000\u0000\u0011\u057f\u0001\u0000\u0000\u0000\u0013"+ - "\u0581\u0001\u0000\u0000\u0000\u0015\u0583\u0001\u0000\u0000\u0000\u0017"+ - "\u0585\u0001\u0000\u0000\u0000\u0019\u0587\u0001\u0000\u0000\u0000\u001b"+ - "\u0589\u0001\u0000\u0000\u0000\u001d\u058b\u0001\u0000\u0000\u0000\u001f"+ - "\u058d\u0001\u0000\u0000\u0000!\u058f\u0001\u0000\u0000\u0000#\u0591\u0001"+ - "\u0000\u0000\u0000%\u0593\u0001\u0000\u0000\u0000\'\u0595\u0001\u0000"+ - "\u0000\u0000)\u0598\u0001\u0000\u0000\u0000+\u059b\u0001\u0000\u0000\u0000"+ - "-\u059e\u0001\u0000\u0000\u0000/\u05a1\u0001\u0000\u0000\u00001\u05a4"+ - "\u0001\u0000\u0000\u00003\u05a7\u0001\u0000\u0000\u00005\u05aa\u0001\u0000"+ - "\u0000\u00007\u05ad\u0001\u0000\u0000\u00009\u05b0\u0001\u0000\u0000\u0000"+ - ";\u05b2\u0001\u0000\u0000\u0000=\u05cc\u0001\u0000\u0000\u0000?\u05d7"+ - "\u0001\u0000\u0000\u0000A\u05e7\u0001\u0000\u0000\u0000C\u05e9\u0001\u0000"+ - "\u0000\u0000E\u05eb\u0001\u0000\u0000\u0000G\u05ed\u0001\u0000\u0000\u0000"+ - "I\u05f1\u0001\u0000\u0000\u0000K\u05f9\u0001\u0000\u0000\u0000M\u0601"+ - "\u0001\u0000\u0000\u0000O\u0605\u0001\u0000\u0000\u0000Q\u0609\u0001\u0000"+ - "\u0000\u0000S\u060f\u0001\u0000\u0000\u0000U\u0612\u0001\u0000\u0000\u0000"+ - "W\u0616\u0001\u0000\u0000\u0000Y\u0621\u0001\u0000\u0000\u0000[\u0626"+ - "\u0001\u0000\u0000\u0000]\u062b\u0001\u0000\u0000\u0000_\u0630\u0001\u0000"+ - "\u0000\u0000a\u0636\u0001\u0000\u0000\u0000c\u063e\u0001\u0000\u0000\u0000"+ - "e\u0645\u0001\u0000\u0000\u0000g\u0650\u0001\u0000\u0000\u0000i\u0657"+ - "\u0001\u0000\u0000\u0000k\u0667\u0001\u0000\u0000\u0000m\u0674\u0001\u0000"+ - "\u0000\u0000o\u0681\u0001\u0000\u0000\u0000q\u068e\u0001\u0000\u0000\u0000"+ - "s\u06a0\u0001\u0000\u0000\u0000u\u06ad\u0001\u0000\u0000\u0000w\u06b5"+ - "\u0001\u0000\u0000\u0000y\u06c0\u0001\u0000\u0000\u0000{\u06c5\u0001\u0000"+ - "\u0000\u0000}\u06ce\u0001\u0000\u0000\u0000\u007f\u06d1\u0001\u0000\u0000"+ - "\u0000\u0081\u06d6\u0001\u0000\u0000\u0000\u0083\u06dd\u0001\u0000\u0000"+ - "\u0000\u0085\u06e3\u0001\u0000\u0000\u0000\u0087\u06e9\u0001\u0000\u0000"+ - "\u0000\u0089\u06ed\u0001\u0000\u0000\u0000\u008b\u06f5\u0001\u0000\u0000"+ - "\u0000\u008d\u06fa\u0001\u0000\u0000\u0000\u008f\u0700\u0001\u0000\u0000"+ - "\u0000\u0091\u0706\u0001\u0000\u0000\u0000\u0093\u070d\u0001\u0000\u0000"+ - "\u0000\u0095\u0710\u0001\u0000\u0000\u0000\u0097\u071a\u0001\u0000\u0000"+ - "\u0000\u0099\u0724\u0001\u0000\u0000\u0000\u009b\u0729\u0001\u0000\u0000"+ - "\u0000\u009d\u0731\u0001\u0000\u0000\u0000\u009f\u0739\u0001\u0000\u0000"+ - "\u0000\u00a1\u073f\u0001\u0000\u0000\u0000\u00a3\u0749\u0001\u0000\u0000"+ - "\u0000\u00a5\u0758\u0001\u0000\u0000\u0000\u00a7\u075c\u0001\u0000\u0000"+ - "\u0000\u00a9\u0761\u0001\u0000\u0000\u0000\u00ab\u0768\u0001\u0000\u0000"+ - "\u0000\u00ad\u076b\u0001\u0000\u0000\u0000\u00af\u0770\u0001\u0000\u0000"+ - "\u0000\u00b1\u0773\u0001\u0000\u0000\u0000\u00b3\u0779\u0001\u0000\u0000"+ - "\u0000\u00b5\u0781\u0001\u0000\u0000\u0000\u00b7\u0789\u0001\u0000\u0000"+ - "\u0000\u00b9\u0794\u0001\u0000\u0000\u0000\u00bb\u079e\u0001\u0000\u0000"+ - "\u0000\u00bd\u07a5\u0001\u0000\u0000\u0000\u00bf\u07b2\u0001\u0000\u0000"+ - "\u0000\u00c1\u07b7\u0001\u0000\u0000\u0000\u00c3\u07c1\u0001\u0000\u0000"+ - "\u0000\u00c5\u07c7\u0001\u0000\u0000\u0000\u00c7\u07cc\u0001\u0000\u0000"+ - "\u0000\u00c9\u07cf\u0001\u0000\u0000\u0000\u00cb\u07d8\u0001\u0000\u0000"+ - "\u0000\u00cd\u07dd\u0001\u0000\u0000\u0000\u00cf\u07e3\u0001\u0000\u0000"+ - "\u0000\u00d1\u07ea\u0001\u0000\u0000\u0000\u00d3\u07ef\u0001\u0000\u0000"+ - "\u0000\u00d5\u07f5\u0001\u0000\u0000\u0000\u00d7\u07fe\u0001\u0000\u0000"+ - "\u0000\u00d9\u0803\u0001\u0000\u0000\u0000\u00db\u0809\u0001\u0000\u0000"+ - "\u0000\u00dd\u0810\u0001\u0000\u0000\u0000\u00df\u0815\u0001\u0000\u0000"+ - "\u0000\u00e1\u0823\u0001\u0000\u0000\u0000\u00e3\u082a\u0001\u0000\u0000"+ - "\u0000\u00e5\u0834\u0001\u0000\u0000\u0000\u00e7\u0841\u0001\u0000\u0000"+ - "\u0000\u00e9\u0847\u0001\u0000\u0000\u0000\u00eb\u0856\u0001\u0000\u0000"+ - "\u0000\u00ed\u085d\u0001\u0000\u0000\u0000\u00ef\u0862\u0001\u0000\u0000"+ - "\u0000\u00f1\u0868\u0001\u0000\u0000\u0000\u00f3\u086e\u0001\u0000\u0000"+ - "\u0000\u00f5\u0871\u0001\u0000\u0000\u0000\u00f7\u0878\u0001\u0000\u0000"+ - "\u0000\u00f9\u087d\u0001\u0000\u0000\u0000\u00fb\u0882\u0001\u0000\u0000"+ - "\u0000\u00fd\u0887\u0001\u0000\u0000\u0000\u00ff\u088f\u0001\u0000\u0000"+ - "\u0000\u0101\u0897\u0001\u0000\u0000\u0000\u0103\u089d\u0001\u0000\u0000"+ - "\u0000\u0105\u08a2\u0001\u0000\u0000\u0000\u0107\u08ab\u0001\u0000\u0000"+ - "\u0000\u0109\u08b1\u0001\u0000\u0000\u0000\u010b\u08b9\u0001\u0000\u0000"+ - "\u0000\u010d\u08c1\u0001\u0000\u0000\u0000\u010f\u08c7\u0001\u0000\u0000"+ - "\u0000\u0111\u08d0\u0001\u0000\u0000\u0000\u0113\u08d7\u0001\u0000\u0000"+ - "\u0000\u0115\u08de\u0001\u0000\u0000\u0000\u0117\u08e2\u0001\u0000\u0000"+ - "\u0000\u0119\u08e8\u0001\u0000\u0000\u0000\u011b\u08ee\u0001\u0000\u0000"+ - "\u0000\u011d\u08f8\u0001\u0000\u0000\u0000\u011f\u08fd\u0001\u0000\u0000"+ - "\u0000\u0121\u0903\u0001\u0000\u0000\u0000\u0123\u090a\u0001\u0000\u0000"+ - "\u0000\u0125\u0914\u0001\u0000\u0000\u0000\u0127\u091f\u0001\u0000\u0000"+ - "\u0000\u0129\u0922\u0001\u0000\u0000\u0000\u012b\u092c\u0001\u0000\u0000"+ - "\u0000\u012d\u0935\u0001\u0000\u0000\u0000\u012f\u093c\u0001\u0000\u0000"+ - "\u0000\u0131\u0942\u0001\u0000\u0000\u0000\u0133\u0945\u0001\u0000\u0000"+ - "\u0000\u0135\u094b\u0001\u0000\u0000\u0000\u0137\u0952\u0001\u0000\u0000"+ - "\u0000\u0139\u095a\u0001\u0000\u0000\u0000\u013b\u0963\u0001\u0000\u0000"+ - "\u0000\u013d\u096b\u0001\u0000\u0000\u0000\u013f\u0971\u0001\u0000\u0000"+ - "\u0000\u0141\u0981\u0001\u0000\u0000\u0000\u0143\u098c\u0001\u0000\u0000"+ - "\u0000\u0145\u0992\u0001\u0000\u0000\u0000\u0147\u0998\u0001\u0000\u0000"+ - "\u0000\u0149\u09a0\u0001\u0000\u0000\u0000\u014b\u09a8\u0001\u0000\u0000"+ - "\u0000\u014d\u09b1\u0001\u0000\u0000\u0000\u014f\u09b8\u0001\u0000\u0000"+ - "\u0000\u0151\u09c2\u0001\u0000\u0000\u0000\u0153\u09d0\u0001\u0000\u0000"+ - "\u0000\u0155\u09db\u0001\u0000\u0000\u0000\u0157\u09e7\u0001\u0000\u0000"+ - "\u0000\u0159\u09ef\u0001\u0000\u0000\u0000\u015b\u09f8\u0001\u0000\u0000"+ - "\u0000\u015d\u0a03\u0001\u0000\u0000\u0000\u015f\u0a08\u0001\u0000\u0000"+ - "\u0000\u0161\u0a0d\u0001\u0000\u0000\u0000\u0163\u0a11\u0001\u0000\u0000"+ - "\u0000\u0165\u0a18\u0001\u0000\u0000\u0000\u0167\u0a1e\u0001\u0000\u0000"+ - "\u0000\u0169\u0a23\u0001\u0000\u0000\u0000\u016b\u0a2c\u0001\u0000\u0000"+ - "\u0000\u016d\u0a30\u0001\u0000\u0000\u0000\u016f\u0a3b\u0001\u0000\u0000"+ - "\u0000\u0171\u0a43\u0001\u0000\u0000\u0000\u0173\u0a4c\u0001\u0000\u0000"+ - "\u0000\u0175\u0a55\u0001\u0000\u0000\u0000\u0177\u0a5d\u0001\u0000\u0000"+ - "\u0000\u0179\u0a64\u0001\u0000\u0000\u0000\u017b\u0a6e\u0001\u0000\u0000"+ - "\u0000\u017d\u0a79\u0001\u0000\u0000\u0000\u017f\u0a84\u0001\u0000\u0000"+ - "\u0000\u0181\u0a8c\u0001\u0000\u0000\u0000\u0183\u0a94\u0001\u0000\u0000"+ - "\u0000\u0185\u0a9d\u0001\u0000\u0000\u0000\u0187\u0aa4\u0001\u0000\u0000"+ - "\u0000\u0189\u0aab\u0001\u0000\u0000\u0000\u018b\u0ab0\u0001\u0000\u0000"+ - "\u0000\u018d\u0ab5\u0001\u0000\u0000\u0000\u018f\u0abc\u0001\u0000\u0000"+ - "\u0000\u0191\u0ac5\u0001\u0000\u0000\u0000\u0193\u0acf\u0001\u0000\u0000"+ - "\u0000\u0195\u0ad4\u0001\u0000\u0000\u0000\u0197\u0adb\u0001\u0000\u0000"+ - "\u0000\u0199\u0ae1\u0001\u0000\u0000\u0000\u019b\u0ae9\u0001\u0000\u0000"+ - "\u0000\u019d\u0af3\u0001\u0000\u0000\u0000\u019f\u0afd\u0001\u0000\u0000"+ - "\u0000\u01a1\u0b05\u0001\u0000\u0000\u0000\u01a3\u0b0d\u0001\u0000\u0000"+ - "\u0000\u01a5\u0b17\u0001\u0000\u0000\u0000\u01a7\u0b20\u0001\u0000\u0000"+ - "\u0000\u01a9\u0b27\u0001\u0000\u0000\u0000\u01ab\u0b2d\u0001\u0000\u0000"+ - "\u0000\u01ad\u0b37\u0001\u0000\u0000\u0000\u01af\u0b3d\u0001\u0000\u0000"+ - "\u0000\u01b1\u0b45\u0001\u0000\u0000\u0000\u01b3\u0b4e\u0001\u0000\u0000"+ - "\u0000\u01b5\u0b58\u0001\u0000\u0000\u0000\u01b7\u0b5f\u0001\u0000\u0000"+ - "\u0000\u01b9\u0b67\u0001\u0000\u0000\u0000\u01bb\u0b6f\u0001\u0000\u0000"+ - "\u0000\u01bd\u0b76\u0001\u0000\u0000\u0000\u01bf\u0b7b\u0001\u0000\u0000"+ - "\u0000\u01c1\u0b80\u0001\u0000\u0000\u0000\u01c3\u0b89\u0001\u0000\u0000"+ - "\u0000\u01c5\u0b8c\u0001\u0000\u0000\u0000\u01c7\u0b96\u0001\u0000\u0000"+ - "\u0000\u01c9\u0ba0\u0001\u0000\u0000\u0000\u01cb\u0ba9\u0001\u0000\u0000"+ - "\u0000\u01cd\u0bb3\u0001\u0000\u0000\u0000\u01cf\u0bbd\u0001\u0000\u0000"+ - "\u0000\u01d1\u0bc3\u0001\u0000\u0000\u0000\u01d3\u0bcb\u0001\u0000\u0000"+ - "\u0000\u01d5\u0bd3\u0001\u0000\u0000\u0000\u01d7\u0bdc\u0001\u0000\u0000"+ - "\u0000\u01d9\u0be3\u0001\u0000\u0000\u0000\u01db\u0bef\u0001\u0000\u0000"+ - "\u0000\u01dd\u0bf6\u0001\u0000\u0000\u0000\u01df\u0bfe\u0001\u0000\u0000"+ - "\u0000\u01e1\u0c06\u0001\u0000\u0000\u0000\u01e3\u0c10\u0001\u0000\u0000"+ - "\u0000\u01e5\u0c14\u0001\u0000\u0000\u0000\u01e7\u0c1a\u0001\u0000\u0000"+ - "\u0000\u01e9\u0c23\u0001\u0000\u0000\u0000\u01eb\u0c29\u0001\u0000\u0000"+ - "\u0000\u01ed\u0c2e\u0001\u0000\u0000\u0000\u01ef\u0c38\u0001\u0000\u0000"+ - "\u0000\u01f1\u0c3e\u0001\u0000\u0000\u0000\u01f3\u0c45\u0001\u0000\u0000"+ - "\u0000\u01f5\u0c4a\u0001\u0000\u0000\u0000\u01f7\u0c50\u0001\u0000\u0000"+ - "\u0000\u01f9\u0c59\u0001\u0000\u0000\u0000\u01fb\u0c5e\u0001\u0000\u0000"+ - "\u0000\u01fd\u0c66\u0001\u0000\u0000\u0000\u01ff\u0c6c\u0001\u0000\u0000"+ - "\u0000\u0201\u0c74\u0001\u0000\u0000\u0000\u0203\u0c81\u0001\u0000\u0000"+ - "\u0000\u0205\u0c8a\u0001\u0000\u0000\u0000\u0207\u0c90\u0001\u0000\u0000"+ - "\u0000\u0209\u0c97\u0001\u0000\u0000\u0000\u020b\u0ca0\u0001\u0000\u0000"+ - "\u0000\u020d\u0ca5\u0001\u0000\u0000\u0000\u020f\u0cab\u0001\u0000\u0000"+ - "\u0000\u0211\u0cb0\u0001\u0000\u0000\u0000\u0213\u0cb5\u0001\u0000\u0000"+ - "\u0000\u0215\u0cbb\u0001\u0000\u0000\u0000\u0217\u0cc0\u0001\u0000\u0000"+ - "\u0000\u0219\u0cc3\u0001\u0000\u0000\u0000\u021b\u0ccb\u0001\u0000\u0000"+ - "\u0000\u021d\u0cd2\u0001\u0000\u0000\u0000\u021f\u0cd9\u0001\u0000\u0000"+ - "\u0000\u0221\u0cdf\u0001\u0000\u0000\u0000\u0223\u0ce6\u0001\u0000\u0000"+ - "\u0000\u0225\u0ce9\u0001\u0000\u0000\u0000\u0227\u0ced\u0001\u0000\u0000"+ - "\u0000\u0229\u0cf2\u0001\u0000\u0000\u0000\u022b\u0cfb\u0001\u0000\u0000"+ - "\u0000\u022d\u0d02\u0001\u0000\u0000\u0000\u022f\u0d0a\u0001\u0000\u0000"+ - "\u0000\u0231\u0d10\u0001\u0000\u0000\u0000\u0233\u0d16\u0001\u0000\u0000"+ - "\u0000\u0235\u0d1d\u0001\u0000\u0000\u0000\u0237\u0d25\u0001\u0000\u0000"+ - "\u0000\u0239\u0d2f\u0001\u0000\u0000\u0000\u023b\u0d37\u0001\u0000\u0000"+ - "\u0000\u023d\u0d40\u0001\u0000\u0000\u0000\u023f\u0d46\u0001\u0000\u0000"+ - "\u0000\u0241\u0d50\u0001\u0000\u0000\u0000\u0243\u0d58\u0001\u0000\u0000"+ - "\u0000\u0245\u0d61\u0001\u0000\u0000\u0000\u0247\u0d6a\u0001\u0000\u0000"+ - "\u0000\u0249\u0d70\u0001\u0000\u0000\u0000\u024b\u0d7b\u0001\u0000\u0000"+ - "\u0000\u024d\u0d86\u0001\u0000\u0000\u0000\u024f\u0d90\u0001\u0000\u0000"+ - "\u0000\u0251\u0d98\u0001\u0000\u0000\u0000\u0253\u0d9e\u0001\u0000\u0000"+ - "\u0000\u0255\u0da4\u0001\u0000\u0000\u0000\u0257\u0da9\u0001\u0000\u0000"+ - "\u0000\u0259\u0db2\u0001\u0000\u0000\u0000\u025b\u0dba\u0001\u0000\u0000"+ - "\u0000\u025d\u0dc4\u0001\u0000\u0000\u0000\u025f\u0dc8\u0001\u0000\u0000"+ - "\u0000\u0261\u0dd0\u0001\u0000\u0000\u0000\u0263\u0dd8\u0001\u0000\u0000"+ - "\u0000\u0265\u0de1\u0001\u0000\u0000\u0000\u0267\u0de9\u0001\u0000\u0000"+ - "\u0000\u0269\u0df0\u0001\u0000\u0000\u0000\u026b\u0dfb\u0001\u0000\u0000"+ - "\u0000\u026d\u0e03\u0001\u0000\u0000\u0000\u026f\u0e0b\u0001\u0000\u0000"+ - "\u0000\u0271\u0e11\u0001\u0000\u0000\u0000\u0273\u0e19\u0001\u0000\u0000"+ - "\u0000\u0275\u0e22\u0001\u0000\u0000\u0000\u0277\u0e2a\u0001\u0000\u0000"+ - "\u0000\u0279\u0e31\u0001\u0000\u0000\u0000\u027b\u0e36\u0001\u0000\u0000"+ - "\u0000\u027d\u0e3f\u0001\u0000\u0000\u0000\u027f\u0e44\u0001\u0000\u0000"+ - "\u0000\u0281\u0e49\u0001\u0000\u0000\u0000\u0283\u0e53\u0001\u0000\u0000"+ - "\u0000\u0285\u0e5a\u0001\u0000\u0000\u0000\u0287\u0e61\u0001\u0000\u0000"+ - "\u0000\u0289\u0e68\u0001\u0000\u0000\u0000\u028b\u0e6f\u0001\u0000\u0000"+ - "\u0000\u028d\u0e78\u0001\u0000\u0000\u0000\u028f\u0e81\u0001\u0000\u0000"+ - "\u0000\u0291\u0e8b\u0001\u0000\u0000\u0000\u0293\u0e98\u0001\u0000\u0000"+ - "\u0000\u0295\u0e9f\u0001\u0000\u0000\u0000\u0297\u0ea7\u0001\u0000\u0000"+ - "\u0000\u0299\u0eab\u0001\u0000\u0000\u0000\u029b\u0eb1\u0001\u0000\u0000"+ - "\u0000\u029d\u0eb6\u0001\u0000\u0000\u0000\u029f\u0ebd\u0001\u0000\u0000"+ - "\u0000\u02a1\u0ec6\u0001\u0000\u0000\u0000\u02a3\u0ecd\u0001\u0000\u0000"+ - "\u0000\u02a5\u0ed8\u0001\u0000\u0000\u0000\u02a7\u0ede\u0001\u0000\u0000"+ - "\u0000\u02a9\u0ee8\u0001\u0000\u0000\u0000\u02ab\u0ef3\u0001\u0000\u0000"+ - "\u0000\u02ad\u0ef9\u0001\u0000\u0000\u0000\u02af\u0f00\u0001\u0000\u0000"+ - "\u0000\u02b1\u0f08\u0001\u0000\u0000\u0000\u02b3\u0f0f\u0001\u0000\u0000"+ - "\u0000\u02b5\u0f15\u0001\u0000\u0000\u0000\u02b7\u0f1b\u0001\u0000\u0000"+ - "\u0000\u02b9\u0f22\u0001\u0000\u0000\u0000\u02bb\u0f29\u0001\u0000\u0000"+ - "\u0000\u02bd\u0f34\u0001\u0000\u0000\u0000\u02bf\u0f39\u0001\u0000\u0000"+ - "\u0000\u02c1\u0f42\u0001\u0000\u0000\u0000\u02c3\u0f4c\u0001\u0000\u0000"+ - "\u0000\u02c5\u0f51\u0001\u0000\u0000\u0000\u02c7\u0f5d\u0001\u0000\u0000"+ - "\u0000\u02c9\u0f65\u0001\u0000\u0000\u0000\u02cb\u0f6e\u0001\u0000\u0000"+ - "\u0000\u02cd\u0f76\u0001\u0000\u0000\u0000\u02cf\u0f7b\u0001\u0000\u0000"+ - "\u0000\u02d1\u0f81\u0001\u0000\u0000\u0000\u02d3\u0f8b\u0001\u0000\u0000"+ - "\u0000\u02d5\u0f97\u0001\u0000\u0000\u0000\u02d7\u0fa3\u0001\u0000\u0000"+ - "\u0000\u02d9\u0fab\u0001\u0000\u0000\u0000\u02db\u0fb4\u0001\u0000\u0000"+ - "\u0000\u02dd\u0fbd\u0001\u0000\u0000\u0000\u02df\u0fc3\u0001\u0000\u0000"+ - "\u0000\u02e1\u0fca\u0001\u0000\u0000\u0000\u02e3\u0fd1\u0001\u0000\u0000"+ - "\u0000\u02e5\u0fd7\u0001\u0000\u0000\u0000\u02e7\u0fe0\u0001\u0000\u0000"+ - "\u0000\u02e9\u0fea\u0001\u0000\u0000\u0000\u02eb\u0ff2\u0001\u0000\u0000"+ - "\u0000\u02ed\u0ffa\u0001\u0000\u0000\u0000\u02ef\u0fff\u0001\u0000\u0000"+ - "\u0000\u02f1\u1008\u0001\u0000\u0000\u0000\u02f3\u1013\u0001\u0000\u0000"+ - "\u0000\u02f5\u101b\u0001\u0000\u0000\u0000\u02f7\u1020\u0001\u0000\u0000"+ - "\u0000\u02f9\u1028\u0001\u0000\u0000\u0000\u02fb\u102e\u0001\u0000\u0000"+ - "\u0000\u02fd\u1032\u0001\u0000\u0000\u0000\u02ff\u1037\u0001\u0000"; - private static final String _serializedATNSegment1 = - "\u0000\u0000\u0301\u103b\u0001\u0000\u0000\u0000\u0303\u1040\u0001\u0000"+ - "\u0000\u0000\u0305\u1048\u0001\u0000\u0000\u0000\u0307\u104f\u0001\u0000"+ - "\u0000\u0000\u0309\u1053\u0001\u0000\u0000\u0000\u030b\u105b\u0001\u0000"+ - "\u0000\u0000\u030d\u1060\u0001\u0000\u0000\u0000\u030f\u106a\u0001\u0000"+ - "\u0000\u0000\u0311\u1073\u0001\u0000\u0000\u0000\u0313\u1077\u0001\u0000"+ - "\u0000\u0000\u0315\u107f\u0001\u0000\u0000\u0000\u0317\u1086\u0001\u0000"+ - "\u0000\u0000\u0319\u108e\u0001\u0000\u0000\u0000\u031b\u1094\u0001\u0000"+ - "\u0000\u0000\u031d\u109d\u0001\u0000\u0000\u0000\u031f\u10a3\u0001\u0000"+ - "\u0000\u0000\u0321\u10a7\u0001\u0000\u0000\u0000\u0323\u10af\u0001\u0000"+ - "\u0000\u0000\u0325\u10b8\u0001\u0000\u0000\u0000\u0327\u10be\u0001\u0000"+ - "\u0000\u0000\u0329\u10c7\u0001\u0000\u0000\u0000\u032b\u10cd\u0001\u0000"+ - "\u0000\u0000\u032d\u10d2\u0001\u0000\u0000\u0000\u032f\u10d9\u0001\u0000"+ - "\u0000\u0000\u0331\u10e1\u0001\u0000\u0000\u0000\u0333\u10e9\u0001\u0000"+ - "\u0000\u0000\u0335\u10f2\u0001\u0000\u0000\u0000\u0337\u10fc\u0001\u0000"+ - "\u0000\u0000\u0339\u1101\u0001\u0000\u0000\u0000\u033b\u1105\u0001\u0000"+ - "\u0000\u0000\u033d\u110b\u0001\u0000\u0000\u0000\u033f\u1114\u0001\u0000"+ - "\u0000\u0000\u0341\u111e\u0001\u0000\u0000\u0000\u0343\u1123\u0001\u0000"+ - "\u0000\u0000\u0345\u112d\u0001\u0000\u0000\u0000\u0347\u1133\u0001\u0000"+ - "\u0000\u0000\u0349\u1138\u0001\u0000\u0000\u0000\u034b\u113f\u0001\u0000"+ - "\u0000\u0000\u034d\u1147\u0001\u0000\u0000\u0000\u034f\u1155\u0001\u0000"+ - "\u0000\u0000\u0351\u1160\u0001\u0000\u0000\u0000\u0353\u1167\u0001\u0000"+ - "\u0000\u0000\u0355\u117a\u0001\u0000\u0000\u0000\u0357\u1196\u0001\u0000"+ - "\u0000\u0000\u0359\u11b1\u0001\u0000\u0000\u0000\u035b\u11b7\u0001\u0000"+ - "\u0000\u0000\u035d\u11c4\u0001\u0000\u0000\u0000\u035f\u11ce\u0001\u0000"+ - "\u0000\u0000\u0361\u11d9\u0001\u0000\u0000\u0000\u0363\u11e3\u0001\u0000"+ - "\u0000\u0000\u0365\u11ed\u0001\u0000\u0000\u0000\u0367\u11f6\u0001\u0000"+ - "\u0000\u0000\u0369\u11fc\u0001\u0000\u0000\u0000\u036b\u1204\u0001\u0000"+ - "\u0000\u0000\u036d\u1211\u0001\u0000\u0000\u0000\u036f\u1216\u0001\u0000"+ - "\u0000\u0000\u0371\u121e\u0001\u0000\u0000\u0000\u0373\u1225\u0001\u0000"+ - "\u0000\u0000\u0375\u122c\u0001\u0000\u0000\u0000\u0377\u1237\u0001\u0000"+ - "\u0000\u0000\u0379\u1241\u0001\u0000\u0000\u0000\u037b\u1248\u0001\u0000"+ - "\u0000\u0000\u037d\u124f\u0001\u0000\u0000\u0000\u037f\u1257\u0001\u0000"+ - "\u0000\u0000\u0381\u125f\u0001\u0000\u0000\u0000\u0383\u1269\u0001\u0000"+ - "\u0000\u0000\u0385\u1270\u0001\u0000\u0000\u0000\u0387\u1277\u0001\u0000"+ - "\u0000\u0000\u0389\u127e\u0001\u0000\u0000\u0000\u038b\u128a\u0001\u0000"+ - "\u0000\u0000\u038d\u128e\u0001\u0000\u0000\u0000\u038f\u1292\u0001\u0000"+ - "\u0000\u0000\u0391\u1298\u0001\u0000\u0000\u0000\u0393\u12a5\u0001\u0000"+ - "\u0000\u0000\u0395\u12b1\u0001\u0000\u0000\u0000\u0397\u12b5\u0001\u0000"+ - "\u0000\u0000\u0399\u12b9\u0001\u0000\u0000\u0000\u039b\u12c2\u0001\u0000"+ - "\u0000\u0000\u039d\u12ca\u0001\u0000\u0000\u0000\u039f\u12d5\u0001\u0000"+ - "\u0000\u0000\u03a1\u12db\u0001\u0000\u0000\u0000\u03a3\u12e3\u0001\u0000"+ - "\u0000\u0000\u03a5\u12ec\u0001\u0000\u0000\u0000\u03a7\u12f0\u0001\u0000"+ - "\u0000\u0000\u03a9\u12f8\u0001\u0000\u0000\u0000\u03ab\u1303\u0001\u0000"+ - "\u0000\u0000\u03ad\u130c\u0001\u0000\u0000\u0000\u03af\u1311\u0001\u0000"+ - "\u0000\u0000\u03b1\u1318\u0001\u0000\u0000\u0000\u03b3\u131d\u0001\u0000"+ - "\u0000\u0000\u03b5\u1324\u0001\u0000\u0000\u0000\u03b7\u1329\u0001\u0000"+ - "\u0000\u0000\u03b9\u1332\u0001\u0000\u0000\u0000\u03bb\u1337\u0001\u0000"+ - "\u0000\u0000\u03bd\u1343\u0001\u0000\u0000\u0000\u03bf\u134e\u0001\u0000"+ - "\u0000\u0000\u03c1\u1357\u0001\u0000\u0000\u0000\u03c3\u135f\u0001\u0000"+ - "\u0000\u0000\u03c5\u136d\u0001\u0000\u0000\u0000\u03c7\u1375\u0001\u0000"+ - "\u0000\u0000\u03c9\u1380\u0001\u0000\u0000\u0000\u03cb\u1387\u0001\u0000"+ - "\u0000\u0000\u03cd\u138e\u0001\u0000\u0000\u0000\u03cf\u1395\u0001\u0000"+ - "\u0000\u0000\u03d1\u139c\u0001\u0000\u0000\u0000\u03d3\u13a0\u0001\u0000"+ - "\u0000\u0000\u03d5\u13a4\u0001\u0000\u0000\u0000\u03d7\u13a9\u0001\u0000"+ - "\u0000\u0000\u03d9\u13ae\u0001\u0000\u0000\u0000\u03db\u13b6\u0001\u0000"+ - "\u0000\u0000\u03dd\u13bc\u0001\u0000\u0000\u0000\u03df\u13c6\u0001\u0000"+ - "\u0000\u0000\u03e1\u13cb\u0001\u0000\u0000\u0000\u03e3\u13df\u0001\u0000"+ - "\u0000\u0000\u03e5\u13f1\u0001\u0000\u0000\u0000\u03e7\u13f7\u0001\u0000"+ - "\u0000\u0000\u03e9\u1404\u0001\u0000\u0000\u0000\u03eb\u140f\u0001\u0000"+ - "\u0000\u0000\u03ed\u1415\u0001\u0000\u0000\u0000\u03ef\u141e\u0001\u0000"+ - "\u0000\u0000\u03f1\u1426\u0001\u0000\u0000\u0000\u03f3\u142a\u0001\u0000"+ - "\u0000\u0000\u03f5\u1436\u0001\u0000\u0000\u0000\u03f7\u143e\u0001\u0000"+ - "\u0000\u0000\u03f9\u1444\u0001\u0000\u0000\u0000\u03fb\u144a\u0001\u0000"+ - "\u0000\u0000\u03fd\u1452\u0001\u0000\u0000\u0000\u03ff\u145a\u0001\u0000"+ - "\u0000\u0000\u0401\u1460\u0001\u0000\u0000\u0000\u0403\u1465\u0001\u0000"+ - "\u0000\u0000\u0405\u146c\u0001\u0000\u0000\u0000\u0407\u1472\u0001\u0000"+ - "\u0000\u0000\u0409\u1478\u0001\u0000\u0000\u0000\u040b\u1481\u0001\u0000"+ - "\u0000\u0000\u040d\u1487\u0001\u0000\u0000\u0000\u040f\u148b\u0001\u0000"+ - "\u0000\u0000\u0411\u1490\u0001\u0000\u0000\u0000\u0413\u1497\u0001\u0000"+ - "\u0000\u0000\u0415\u149f\u0001\u0000\u0000\u0000\u0417\u14a9\u0001\u0000"+ - "\u0000\u0000\u0419\u14b0\u0001\u0000\u0000\u0000\u041b\u14b5\u0001\u0000"+ - "\u0000\u0000\u041d\u14ba\u0001\u0000\u0000\u0000\u041f\u14be\u0001\u0000"+ - "\u0000\u0000\u0421\u14c3\u0001\u0000\u0000\u0000\u0423\u14c8\u0001\u0000"+ - "\u0000\u0000\u0425\u14d0\u0001\u0000\u0000\u0000\u0427\u14d8\u0001\u0000"+ - "\u0000\u0000\u0429\u14dc\u0001\u0000\u0000\u0000\u042b\u14e0\u0001\u0000"+ - "\u0000\u0000\u042d\u14ea\u0001\u0000\u0000\u0000\u042f\u14f0\u0001\u0000"+ - "\u0000\u0000\u0431\u14f4\u0001\u0000\u0000\u0000\u0433\u14f8\u0001\u0000"+ - "\u0000\u0000\u0435\u14fb\u0001\u0000\u0000\u0000\u0437\u1501\u0001\u0000"+ - "\u0000\u0000\u0439\u150b\u0001\u0000\u0000\u0000\u043b\u150f\u0001\u0000"+ - "\u0000\u0000\u043d\u1512\u0001\u0000\u0000\u0000\u043f\u1518\u0001\u0000"+ - "\u0000\u0000\u0441\u1520\u0001\u0000\u0000\u0000\u0443\u1526\u0001\u0000"+ - "\u0000\u0000\u0445\u152c\u0001\u0000\u0000\u0000\u0447\u1531\u0001\u0000"+ - "\u0000\u0000\u0449\u1536\u0001\u0000\u0000\u0000\u044b\u1541\u0001\u0000"+ - "\u0000\u0000\u044d\u1547\u0001\u0000\u0000\u0000\u044f\u1554\u0001\u0000"+ - "\u0000\u0000\u0451\u155b\u0001\u0000\u0000\u0000\u0453\u1563\u0001\u0000"+ - "\u0000\u0000\u0455\u1568\u0001\u0000\u0000\u0000\u0457\u156e\u0001\u0000"+ - "\u0000\u0000\u0459\u1573\u0001\u0000\u0000\u0000\u045b\u1579\u0001\u0000"+ - "\u0000\u0000\u045d\u157e\u0001\u0000\u0000\u0000\u045f\u1584\u0001\u0000"+ - "\u0000\u0000\u0461\u158a\u0001\u0000\u0000\u0000\u0463\u1591\u0001\u0000"+ - "\u0000\u0000\u0465\u1595\u0001\u0000\u0000\u0000\u0467\u159a\u0001\u0000"+ - "\u0000\u0000\u0469\u159e\u0001\u0000\u0000\u0000\u046b\u15a3\u0001\u0000"+ - "\u0000\u0000\u046d\u15a7\u0001\u0000\u0000\u0000\u046f\u15ac\u0001\u0000"+ - "\u0000\u0000\u0471\u15b0\u0001\u0000\u0000\u0000\u0473\u15b5\u0001\u0000"+ - "\u0000\u0000\u0475\u15ba\u0001\u0000\u0000\u0000\u0477\u15bf\u0001\u0000"+ - "\u0000\u0000\u0479\u15c4\u0001\u0000\u0000\u0000\u047b\u15ca\u0001\u0000"+ - "\u0000\u0000\u047d\u15d0\u0001\u0000\u0000\u0000\u047f\u15d6\u0001\u0000"+ - "\u0000\u0000\u0481\u15e1\u0001\u0000\u0000\u0000\u0483\u15ed\u0001\u0000"+ - "\u0000\u0000\u0485\u15fe\u0001\u0000\u0000\u0000\u0487\u1604\u0001\u0000"+ - "\u0000\u0000\u0489\u1611\u0001\u0000\u0000\u0000\u048b\u1617\u0001\u0000"+ - "\u0000\u0000\u048d\u161d\u0001\u0000\u0000\u0000\u048f\u1623\u0001\u0000"+ - "\u0000\u0000\u0491\u1627\u0001\u0000\u0000\u0000\u0493\u162e\u0001\u0000"+ - "\u0000\u0000\u0495\u1638\u0001\u0000\u0000\u0000\u0497\u163f\u0001\u0000"+ - "\u0000\u0000\u0499\u1647\u0001\u0000\u0000\u0000\u049b\u164e\u0001\u0000"+ - "\u0000\u0000\u049d\u1653\u0001\u0000\u0000\u0000\u049f\u1659\u0001\u0000"+ - "\u0000\u0000\u04a1\u165d\u0001\u0000\u0000\u0000\u04a3\u1669\u0001\u0000"+ - "\u0000\u0000\u04a5\u167c\u0001\u0000\u0000\u0000\u04a7\u1688\u0001\u0000"+ - "\u0000\u0000\u04a9\u1696\u0001\u0000\u0000\u0000\u04ab\u16a5\u0001\u0000"+ - "\u0000\u0000\u04ad\u16b2\u0001\u0000\u0000\u0000\u04af\u16bf\u0001\u0000"+ - "\u0000\u0000\u04b1\u16cb\u0001\u0000\u0000\u0000\u04b3\u16d8\u0001\u0000"+ - "\u0000\u0000\u04b5\u16e7\u0001\u0000\u0000\u0000\u04b7\u16f6\u0001\u0000"+ - "\u0000\u0000\u04b9\u170c\u0001\u0000\u0000\u0000\u04bb\u1722\u0001\u0000"+ - "\u0000\u0000\u04bd\u1730\u0001\u0000\u0000\u0000\u04bf\u1737\u0001\u0000"+ - "\u0000\u0000\u04c1\u173c\u0001\u0000\u0000\u0000\u04c3\u1742\u0001\u0000"+ - "\u0000\u0000\u04c5\u174d\u0001\u0000\u0000\u0000\u04c7\u1759\u0001\u0000"+ - "\u0000\u0000\u04c9\u1769\u0001\u0000\u0000\u0000\u04cb\u1779\u0001\u0000"+ - "\u0000\u0000\u04cd\u1780\u0001\u0000\u0000\u0000\u04cf\u1787\u0001\u0000"+ - "\u0000\u0000\u04d1\u1790\u0001\u0000\u0000\u0000\u04d3\u1797\u0001\u0000"+ - "\u0000\u0000\u04d5\u17a1\u0001\u0000\u0000\u0000\u04d7\u17a8\u0001\u0000"+ - "\u0000\u0000\u04d9\u17ac\u0001\u0000\u0000\u0000\u04db\u17bc\u0001\u0000"+ - "\u0000\u0000\u04dd\u17c5\u0001\u0000\u0000\u0000\u04df\u17cf\u0001\u0000"+ - "\u0000\u0000\u04e1\u17da\u0001\u0000\u0000\u0000\u04e3\u17e3\u0001\u0000"+ - "\u0000\u0000\u04e5\u17f0\u0001\u0000\u0000\u0000\u04e7\u17fe\u0001\u0000"+ - "\u0000\u0000\u04e9\u180f\u0001\u0000\u0000\u0000\u04eb\u1819\u0001\u0000"+ - "\u0000\u0000\u04ed\u1827\u0001\u0000\u0000\u0000\u04ef\u1831\u0001\u0000"+ - "\u0000\u0000\u04f1\u1840\u0001\u0000\u0000\u0000\u04f3\u1851\u0001\u0000"+ - "\u0000\u0000\u04f5\u1855\u0001\u0000\u0000\u0000\u04f7\u1869\u0001\u0000"+ - "\u0000\u0000\u04f9\u1873\u0001\u0000\u0000\u0000\u04fb\u1889\u0001\u0000"+ - "\u0000\u0000\u04fd\u1896\u0001\u0000\u0000\u0000\u04ff\u189e\u0001\u0000"+ - "\u0000\u0000\u0501\u18a6\u0001\u0000\u0000\u0000\u0503\u18b0\u0001\u0000"+ - "\u0000\u0000\u0505\u18bd\u0001\u0000\u0000\u0000\u0507\u18c1\u0001\u0000"+ - "\u0000\u0000\u0509\u18c5\u0001\u0000\u0000\u0000\u050b\u18c7\u0001\u0000"+ - "\u0000\u0000\u050d\u18ca\u0001\u0000\u0000\u0000\u050f\u18d3\u0001\u0000"+ - "\u0000\u0000\u0511\u18d6\u0001\u0000\u0000\u0000\u0513\u18df\u0001\u0000"+ - "\u0000\u0000\u0515\u18e3\u0001\u0000\u0000\u0000\u0517\u18e7\u0001\u0000"+ - "\u0000\u0000\u0519\u18eb\u0001\u0000\u0000\u0000\u051b\u18ef\u0001\u0000"+ - "\u0000\u0000\u051d\u18f2\u0001\u0000\u0000\u0000\u051f\u18fb\u0001\u0000"+ - "\u0000\u0000\u0521\u1901\u0001\u0000\u0000\u0000\u0523\u1904\u0001\u0000"+ - "\u0000\u0000\u0525\u1908\u0001\u0000\u0000\u0000\u0527\u1911\u0001\u0000"+ - "\u0000\u0000\u0529\u1918\u0001\u0000\u0000\u0000\u052b\u191b\u0001\u0000"+ - "\u0000\u0000\u052d\u1923\u0001\u0000\u0000\u0000\u052f\u1926\u0001\u0000"+ - "\u0000\u0000\u0531\u1929\u0001\u0000\u0000\u0000\u0533\u192c\u0001\u0000"+ - "\u0000\u0000\u0535\u1934\u0001\u0000\u0000\u0000\u0537\u1937\u0001\u0000"+ - "\u0000\u0000\u0539\u193a\u0001\u0000\u0000\u0000\u053b\u193c\u0001\u0000"+ - "\u0000\u0000\u053d\u195e\u0001\u0000\u0000\u0000\u053f\u1961\u0001\u0000"+ - "\u0000\u0000\u0541\u1965\u0001\u0000\u0000\u0000\u0543\u196d\u0001\u0000"+ - "\u0000\u0000\u0545\u197d\u0001\u0000\u0000\u0000\u0547\u1988\u0001\u0000"+ - "\u0000\u0000\u0549\u198c\u0001\u0000\u0000\u0000\u054b\u1997\u0001\u0000"+ - "\u0000\u0000\u054d\u19be\u0001\u0000\u0000\u0000\u054f\u19f1\u0001\u0000"+ - "\u0000\u0000\u0551\u1a09\u0001\u0000\u0000\u0000\u0553\u1a0c\u0001\u0000"+ - "\u0000\u0000\u0555\u1a0e\u0001\u0000\u0000\u0000\u0557\u1a13\u0001\u0000"+ - "\u0000\u0000\u0559\u1a32\u0001\u0000\u0000\u0000\u055b\u1a35\u0001\u0000"+ - "\u0000\u0000\u055d\u1a3a\u0001\u0000\u0000\u0000\u055f\u1a47\u0001\u0000"+ - "\u0000\u0000\u0561\u1a4a\u0001\u0000\u0000\u0000\u0563\u1a4f\u0001\u0000"+ - "\u0000\u0000\u0565\u1a55\u0001\u0000\u0000\u0000\u0567\u1a5a\u0001\u0000"+ - "\u0000\u0000\u0569\u1a5f\u0001\u0000\u0000\u0000\u056b\u1a64\u0001\u0000"+ - "\u0000\u0000\u056d\u1a69\u0001\u0000\u0000\u0000\u056f\u1a7a\u0001\u0000"+ - "\u0000\u0000\u0571\u1a7c\u0001\u0000\u0000\u0000\u0573\u0574\u0005$\u0000"+ - "\u0000\u0574\u0006\u0001\u0000\u0000\u0000\u0575\u0576\u0005(\u0000\u0000"+ - "\u0576\b\u0001\u0000\u0000\u0000\u0577\u0578\u0005)\u0000\u0000\u0578"+ - "\n\u0001\u0000\u0000\u0000\u0579\u057a\u0005[\u0000\u0000\u057a\f\u0001"+ - "\u0000\u0000\u0000\u057b\u057c\u0005]\u0000\u0000\u057c\u000e\u0001\u0000"+ - "\u0000\u0000\u057d\u057e\u0005,\u0000\u0000\u057e\u0010\u0001\u0000\u0000"+ - "\u0000\u057f\u0580\u0005;\u0000\u0000\u0580\u0012\u0001\u0000\u0000\u0000"+ - "\u0581\u0582\u0005:\u0000\u0000\u0582\u0014\u0001\u0000\u0000\u0000\u0583"+ - "\u0584\u0005*\u0000\u0000\u0584\u0016\u0001\u0000\u0000\u0000\u0585\u0586"+ - "\u0005=\u0000\u0000\u0586\u0018\u0001\u0000\u0000\u0000\u0587\u0588\u0005"+ - ".\u0000\u0000\u0588\u001a\u0001\u0000\u0000\u0000\u0589\u058a\u0005+\u0000"+ - "\u0000\u058a\u001c\u0001\u0000\u0000\u0000\u058b\u058c\u0005-\u0000\u0000"+ - "\u058c\u001e\u0001\u0000\u0000\u0000\u058d\u058e\u0005/\u0000\u0000\u058e"+ - " \u0001\u0000\u0000\u0000\u058f\u0590\u0005^\u0000\u0000\u0590\"\u0001"+ - "\u0000\u0000\u0000\u0591\u0592\u0005<\u0000\u0000\u0592$\u0001\u0000\u0000"+ - "\u0000\u0593\u0594\u0005>\u0000\u0000\u0594&\u0001\u0000\u0000\u0000\u0595"+ - "\u0596\u0005<\u0000\u0000\u0596\u0597\u0005<\u0000\u0000\u0597(\u0001"+ - "\u0000\u0000\u0000\u0598\u0599\u0005>\u0000\u0000\u0599\u059a\u0005>\u0000"+ - "\u0000\u059a*\u0001\u0000\u0000\u0000\u059b\u059c\u0005:\u0000\u0000\u059c"+ - "\u059d\u0005=\u0000\u0000\u059d,\u0001\u0000\u0000\u0000\u059e\u059f\u0005"+ - "<\u0000\u0000\u059f\u05a0\u0005=\u0000\u0000\u05a0.\u0001\u0000\u0000"+ - "\u0000\u05a1\u05a2\u0005=\u0000\u0000\u05a2\u05a3\u0005>\u0000\u0000\u05a3"+ - "0\u0001\u0000\u0000\u0000\u05a4\u05a5\u0005>\u0000\u0000\u05a5\u05a6\u0005"+ - "=\u0000\u0000\u05a62\u0001\u0000\u0000\u0000\u05a7\u05a8\u0005.\u0000"+ - "\u0000\u05a8\u05a9\u0005.\u0000\u0000\u05a94\u0001\u0000\u0000\u0000\u05aa"+ - "\u05ab\u0005<\u0000\u0000\u05ab\u05ac\u0005>\u0000\u0000\u05ac6\u0001"+ - "\u0000\u0000\u0000\u05ad\u05ae\u0005:\u0000\u0000\u05ae\u05af\u0005:\u0000"+ - "\u0000\u05af8\u0001\u0000\u0000\u0000\u05b0\u05b1\u0005%\u0000\u0000\u05b1"+ - ":\u0001\u0000\u0000\u0000\u05b2\u05b4\u0005$\u0000\u0000\u05b3\u05b5\u0007"+ - "\u0000\u0000\u0000\u05b4\u05b3\u0001\u0000\u0000\u0000\u05b5\u05b6\u0001"+ - "\u0000\u0000\u0000\u05b6\u05b4\u0001\u0000\u0000\u0000\u05b6\u05b7\u0001"+ - "\u0000\u0000\u0000\u05b7<\u0001\u0000\u0000\u0000\u05b8\u05c8\u0003A\u001e"+ - "\u0000\u05b9\u05bd\u0005+\u0000\u0000\u05ba\u05bb\u0005-\u0000\u0000\u05bb"+ - "\u05bd\u0004\u001c\u0000\u0000\u05bc\u05b9\u0001\u0000\u0000\u0000\u05bc"+ - "\u05ba\u0001\u0000\u0000\u0000\u05bd\u05be\u0001\u0000\u0000\u0000\u05be"+ - "\u05bc\u0001\u0000\u0000\u0000\u05be\u05bf\u0001\u0000\u0000\u0000\u05bf"+ - "\u05c3\u0001\u0000\u0000\u0000\u05c0\u05c4\u0003A\u001e\u0000\u05c1\u05c2"+ - "\u0005/\u0000\u0000\u05c2\u05c4\u0004\u001c\u0001\u0000\u05c3\u05c0\u0001"+ - "\u0000\u0000\u0000\u05c3\u05c1\u0001\u0000\u0000\u0000\u05c4\u05c8\u0001"+ - "\u0000\u0000\u0000\u05c5\u05c6\u0005/\u0000\u0000\u05c6\u05c8\u0004\u001c"+ - "\u0002\u0000\u05c7\u05b8\u0001\u0000\u0000\u0000\u05c7\u05bc\u0001\u0000"+ - "\u0000\u0000\u05c7\u05c5\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000"+ - "\u0000\u0000\u05c9\u05c7\u0001\u0000\u0000\u0000\u05c9\u05ca\u0001\u0000"+ - "\u0000\u0000\u05ca\u05cd\u0001\u0000\u0000\u0000\u05cb\u05cd\u0007\u0001"+ - "\u0000\u0000\u05cc\u05c7\u0001\u0000\u0000\u0000\u05cc\u05cb\u0001\u0000"+ - "\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u05cf\u0006\u001c"+ - "\u0000\u0000\u05cf>\u0001\u0000\u0000\u0000\u05d0\u05d6\u0003C\u001f\u0000"+ - "\u05d1\u05d2\u0005-\u0000\u0000\u05d2\u05d6\u0004\u001d\u0003\u0000\u05d3"+ - "\u05d4\u0005/\u0000\u0000\u05d4\u05d6\u0004\u001d\u0004\u0000\u05d5\u05d0"+ - "\u0001\u0000\u0000\u0000\u05d5\u05d1\u0001\u0000\u0000\u0000\u05d5\u05d3"+ - "\u0001\u0000\u0000\u0000\u05d6\u05d9\u0001\u0000\u0000\u0000\u05d7\u05d5"+ - "\u0001\u0000\u0000\u0000\u05d7\u05d8\u0001\u0000\u0000\u0000\u05d8\u05da"+ - "\u0001\u0000\u0000\u0000\u05d9\u05d7\u0001\u0000\u0000\u0000\u05da\u05dc"+ - "\u0003E \u0000\u05db\u05dd\u0003=\u001c\u0000\u05dc\u05db\u0001\u0000"+ - "\u0000\u0000\u05dc\u05dd\u0001\u0000\u0000\u0000\u05dd\u05e1\u0001\u0000"+ - "\u0000\u0000\u05de\u05e2\u0005+\u0000\u0000\u05df\u05e0\u0005-\u0000\u0000"+ - "\u05e0\u05e2\u0004\u001d\u0005\u0000\u05e1\u05de\u0001\u0000\u0000\u0000"+ - "\u05e1\u05df\u0001\u0000\u0000\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000"+ - "\u05e3\u05e1\u0001\u0000\u0000\u0000\u05e3\u05e4\u0001\u0000\u0000\u0000"+ - "\u05e4\u05e5\u0001\u0000\u0000\u0000\u05e5\u05e6\u0006\u001d\u0001\u0000"+ - "\u05e6@\u0001\u0000\u0000\u0000\u05e7\u05e8\u0007\u0002\u0000\u0000\u05e8"+ - "B\u0001\u0000\u0000\u0000\u05e9\u05ea\u0007\u0003\u0000\u0000\u05eaD\u0001"+ - "\u0000\u0000\u0000\u05eb\u05ec\u0007\u0004\u0000\u0000\u05ecF\u0001\u0000"+ - "\u0000\u0000\u05ed\u05ee\u0007\u0005\u0000\u0000\u05ee\u05ef\u0007\u0006"+ - "\u0000\u0000\u05ef\u05f0\u0007\u0006\u0000\u0000\u05f0H\u0001\u0000\u0000"+ - "\u0000\u05f1\u05f2\u0007\u0005\u0000\u0000\u05f2\u05f3\u0007\u0007\u0000"+ - "\u0000\u05f3\u05f4\u0007\u0005\u0000\u0000\u05f4\u05f5\u0007\u0006\u0000"+ - "\u0000\u05f5\u05f6\u0007\b\u0000\u0000\u05f6\u05f7\u0007\t\u0000\u0000"+ - "\u05f7\u05f8\u0007\n\u0000\u0000\u05f8J\u0001\u0000\u0000\u0000\u05f9"+ - "\u05fa\u0007\u0005\u0000\u0000\u05fa\u05fb\u0007\u0007\u0000\u0000\u05fb"+ - "\u05fc\u0007\u0005\u0000\u0000\u05fc\u05fd\u0007\u0006\u0000\u0000\u05fd"+ - "\u05fe\u0007\b\u0000\u0000\u05fe\u05ff\u0007\u000b\u0000\u0000\u05ff\u0600"+ - "\u0007\n\u0000\u0000\u0600L\u0001\u0000\u0000\u0000\u0601\u0602\u0007"+ - "\u0005\u0000\u0000\u0602\u0603\u0007\u0007\u0000\u0000\u0603\u0604\u0007"+ - "\f\u0000\u0000\u0604N\u0001\u0000\u0000\u0000\u0605\u0606\u0007\u0005"+ - "\u0000\u0000\u0606\u0607\u0007\u0007\u0000\u0000\u0607\u0608\u0007\b\u0000"+ - "\u0000\u0608P\u0001\u0000\u0000\u0000\u0609\u060a\u0007\u0005\u0000\u0000"+ - "\u060a\u060b\u0007\r\u0000\u0000\u060b\u060c\u0007\r\u0000\u0000\u060c"+ - "\u060d\u0007\u0005\u0000\u0000\u060d\u060e\u0007\b\u0000\u0000\u060eR"+ - "\u0001\u0000\u0000\u0000\u060f\u0610\u0007\u0005\u0000\u0000\u0610\u0611"+ - "\u0007\t\u0000\u0000\u0611T\u0001\u0000\u0000\u0000\u0612\u0613\u0007"+ - "\u0005\u0000\u0000\u0613\u0614\u0007\t\u0000\u0000\u0614\u0615\u0007\u000e"+ - "\u0000\u0000\u0615V\u0001\u0000\u0000\u0000\u0616\u0617\u0007\u0005\u0000"+ - "\u0000\u0617\u0618\u0007\t\u0000\u0000\u0618\u0619\u0007\b\u0000\u0000"+ - "\u0619\u061a\u0007\u000f\u0000\u0000\u061a\u061b\u0007\u000f\u0000\u0000"+ - "\u061b\u061c\u0007\n\u0000\u0000\u061c\u061d\u0007\u0010\u0000\u0000\u061d"+ - "\u061e\u0007\r\u0000\u0000\u061e\u061f\u0007\u0011\u0000\u0000\u061f\u0620"+ - "\u0007\u000e\u0000\u0000\u0620X\u0001\u0000\u0000\u0000\u0621\u0622\u0007"+ - "\u0012\u0000\u0000\u0622\u0623\u0007\u0013\u0000\u0000\u0623\u0624\u0007"+ - "\u0010\u0000\u0000\u0624\u0625\u0007\u0014\u0000\u0000\u0625Z\u0001\u0000"+ - "\u0000\u0000\u0626\u0627\u0007\u000e\u0000\u0000\u0627\u0628\u0007\u0005"+ - "\u0000\u0000\u0628\u0629\u0007\t\u0000\u0000\u0629\u062a\u0007\n\u0000"+ - "\u0000\u062a\\\u0001\u0000\u0000\u0000\u062b\u062c\u0007\u000e\u0000\u0000"+ - "\u062c\u062d\u0007\u0005\u0000\u0000\u062d\u062e\u0007\t\u0000\u0000\u062e"+ - "\u062f\u0007\u0010\u0000\u0000\u062f^\u0001\u0000\u0000\u0000\u0630\u0631"+ - "\u0007\u000e\u0000\u0000\u0631\u0632\u0007\u0014\u0000\u0000\u0632\u0633"+ - "\u0007\n\u0000\u0000\u0633\u0634\u0007\u000e\u0000\u0000\u0634\u0635\u0007"+ - "\u0015\u0000\u0000\u0635`\u0001\u0000\u0000\u0000\u0636\u0637\u0007\u000e"+ - "\u0000\u0000\u0637\u0638\u0007\u0013\u0000\u0000\u0638\u0639\u0007\u0006"+ - "\u0000\u0000\u0639\u063a\u0007\u0006\u0000\u0000\u063a\u063b\u0007\u0005"+ - "\u0000\u0000\u063b\u063c\u0007\u0010\u0000\u0000\u063c\u063d\u0007\n\u0000"+ - "\u0000\u063db\u0001\u0000\u0000\u0000\u063e\u063f\u0007\u000e\u0000\u0000"+ - "\u063f\u0640\u0007\u0013\u0000\u0000\u0640\u0641\u0007\u0006\u0000\u0000"+ - "\u0641\u0642\u0007\u0016\u0000\u0000\u0642\u0643\u0007\u000f\u0000\u0000"+ - "\u0643\u0644\u0007\u0007\u0000\u0000\u0644d\u0001\u0000\u0000\u0000\u0645"+ - "\u0646\u0007\u000e\u0000\u0000\u0646\u0647\u0007\u0013\u0000\u0000\u0647"+ - "\u0648\u0007\u0007\u0000\u0000\u0648\u0649\u0007\t\u0000\u0000\u0649\u064a"+ - "\u0007\u0010\u0000\u0000\u064a\u064b\u0007\r\u0000\u0000\u064b\u064c\u0007"+ - "\u0005\u0000\u0000\u064c\u064d\u0007\u0011\u0000\u0000\u064d\u064e\u0007"+ - "\u0007\u0000\u0000\u064e\u064f\u0007\u0010\u0000\u0000\u064ff\u0001\u0000"+ - "\u0000\u0000\u0650\u0651\u0007\u000e\u0000\u0000\u0651\u0652\u0007\r\u0000"+ - "\u0000\u0652\u0653\u0007\n\u0000\u0000\u0653\u0654\u0007\u0005\u0000\u0000"+ - "\u0654\u0655\u0007\u0010\u0000\u0000\u0655\u0656\u0007\n\u0000\u0000\u0656"+ - "h\u0001\u0000\u0000\u0000\u0657\u0658\u0007\u000e\u0000\u0000\u0658\u0659"+ - "\u0007\u0016\u0000\u0000\u0659\u065a\u0007\r\u0000\u0000\u065a\u065b\u0007"+ - "\r\u0000\u0000\u065b\u065c\u0007\n\u0000\u0000\u065c\u065d\u0007\u0007"+ - "\u0000\u0000\u065d\u065e\u0007\u0010\u0000\u0000\u065e\u065f\u0005_\u0000"+ - "\u0000\u065f\u0660\u0007\u000e\u0000\u0000\u0660\u0661\u0007\u0005\u0000"+ - "\u0000\u0661\u0662\u0007\u0010\u0000\u0000\u0662\u0663\u0007\u0005\u0000"+ - "\u0000\u0663\u0664\u0007\u0006\u0000\u0000\u0664\u0665\u0007\u0013\u0000"+ - "\u0000\u0665\u0666\u0007\u0017\u0000\u0000\u0666j\u0001\u0000\u0000\u0000"+ - "\u0667\u0668\u0007\u000e\u0000\u0000\u0668\u0669\u0007\u0016\u0000\u0000"+ - "\u0669\u066a\u0007\r\u0000\u0000\u066a\u066b\u0007\r\u0000\u0000\u066b"+ - "\u066c\u0007\n\u0000\u0000\u066c\u066d\u0007\u0007\u0000\u0000\u066d\u066e"+ - "\u0007\u0010\u0000\u0000\u066e\u066f\u0005_\u0000\u0000\u066f\u0670\u0007"+ - "\f\u0000\u0000\u0670\u0671\u0007\u0005\u0000\u0000\u0671\u0672\u0007\u0010"+ - "\u0000\u0000\u0672\u0673\u0007\n\u0000\u0000\u0673l\u0001\u0000\u0000"+ - "\u0000\u0674\u0675\u0007\u000e\u0000\u0000\u0675\u0676\u0007\u0016\u0000"+ - "\u0000\u0676\u0677\u0007\r\u0000\u0000\u0677\u0678\u0007\r\u0000\u0000"+ - "\u0678\u0679\u0007\n\u0000\u0000\u0679\u067a\u0007\u0007\u0000\u0000\u067a"+ - "\u067b\u0007\u0010\u0000\u0000\u067b\u067c\u0005_\u0000\u0000\u067c\u067d"+ - "\u0007\r\u0000\u0000\u067d\u067e\u0007\u0013\u0000\u0000\u067e\u067f\u0007"+ - "\u0006\u0000\u0000\u067f\u0680\u0007\n\u0000\u0000\u0680n\u0001\u0000"+ - "\u0000\u0000\u0681\u0682\u0007\u000e\u0000\u0000\u0682\u0683\u0007\u0016"+ - "\u0000\u0000\u0683\u0684\u0007\r\u0000\u0000\u0684\u0685\u0007\r\u0000"+ - "\u0000\u0685\u0686\u0007\n\u0000\u0000\u0686\u0687\u0007\u0007\u0000\u0000"+ - "\u0687\u0688\u0007\u0010\u0000\u0000\u0688\u0689\u0005_\u0000\u0000\u0689"+ - "\u068a\u0007\u0010\u0000\u0000\u068a\u068b\u0007\u0011\u0000\u0000\u068b"+ - "\u068c\u0007\u000f\u0000\u0000\u068c\u068d\u0007\n\u0000\u0000\u068dp"+ - "\u0001\u0000\u0000\u0000\u068e\u068f\u0007\u000e\u0000\u0000\u068f\u0690"+ - "\u0007\u0016\u0000\u0000\u0690\u0691\u0007\r\u0000\u0000\u0691\u0692\u0007"+ - "\r\u0000\u0000\u0692\u0693\u0007\n\u0000\u0000\u0693\u0694\u0007\u0007"+ - "\u0000\u0000\u0694\u0695\u0007\u0010\u0000\u0000\u0695\u0696\u0005_\u0000"+ - "\u0000\u0696\u0697\u0007\u0010\u0000\u0000\u0697\u0698\u0007\u0011\u0000"+ - "\u0000\u0698\u0699\u0007\u000f\u0000\u0000\u0699\u069a\u0007\n\u0000\u0000"+ - "\u069a\u069b\u0007\t\u0000\u0000\u069b\u069c\u0007\u0010\u0000\u0000\u069c"+ - "\u069d\u0007\u0005\u0000\u0000\u069d\u069e\u0007\u000f\u0000\u0000\u069e"+ - "\u069f\u0007\u0018\u0000\u0000\u069fr\u0001\u0000\u0000\u0000\u06a0\u06a1"+ - "\u0007\u000e\u0000\u0000\u06a1\u06a2\u0007\u0016\u0000\u0000\u06a2\u06a3"+ - "\u0007\r\u0000\u0000\u06a3\u06a4\u0007\r\u0000\u0000\u06a4\u06a5\u0007"+ - "\n\u0000\u0000\u06a5\u06a6\u0007\u0007\u0000\u0000\u06a6\u06a7\u0007\u0010"+ - "\u0000\u0000\u06a7\u06a8\u0005_\u0000\u0000\u06a8\u06a9\u0007\u0016\u0000"+ - "\u0000\u06a9\u06aa\u0007\t\u0000\u0000\u06aa\u06ab\u0007\n\u0000\u0000"+ - "\u06ab\u06ac\u0007\r\u0000\u0000\u06act\u0001\u0000\u0000\u0000\u06ad"+ - "\u06ae\u0007\f\u0000\u0000\u06ae\u06af\u0007\n\u0000\u0000\u06af\u06b0"+ - "\u0007\u0019\u0000\u0000\u06b0\u06b1\u0007\u0005\u0000\u0000\u06b1\u06b2"+ - "\u0007\u0016\u0000\u0000\u06b2\u06b3\u0007\u0006\u0000\u0000\u06b3\u06b4"+ - "\u0007\u0010\u0000\u0000\u06b4v\u0001\u0000\u0000\u0000\u06b5\u06b6\u0007"+ - "\f\u0000\u0000\u06b6\u06b7\u0007\n\u0000\u0000\u06b7\u06b8\u0007\u0019"+ - "\u0000\u0000\u06b8\u06b9\u0007\n\u0000\u0000\u06b9\u06ba\u0007\r\u0000"+ - "\u0000\u06ba\u06bb\u0007\r\u0000\u0000\u06bb\u06bc\u0007\u0005\u0000\u0000"+ - "\u06bc\u06bd\u0007\u0012\u0000\u0000\u06bd\u06be\u0007\u0006\u0000\u0000"+ - "\u06be\u06bf\u0007\n\u0000\u0000\u06bfx\u0001\u0000\u0000\u0000\u06c0"+ - "\u06c1\u0007\f\u0000\u0000\u06c1\u06c2\u0007\n\u0000\u0000\u06c2\u06c3"+ - "\u0007\t\u0000\u0000\u06c3\u06c4\u0007\u000e\u0000\u0000\u06c4z\u0001"+ - "\u0000\u0000\u0000\u06c5\u06c6\u0007\f\u0000\u0000\u06c6\u06c7\u0007\u0011"+ - "\u0000\u0000\u06c7\u06c8\u0007\t\u0000\u0000\u06c8\u06c9\u0007\u0010\u0000"+ - "\u0000\u06c9\u06ca\u0007\u0011\u0000\u0000\u06ca\u06cb\u0007\u0007\u0000"+ - "\u0000\u06cb\u06cc\u0007\u000e\u0000\u0000\u06cc\u06cd\u0007\u0010\u0000"+ - "\u0000\u06cd|\u0001\u0000\u0000\u0000\u06ce\u06cf\u0007\f\u0000\u0000"+ - "\u06cf\u06d0\u0007\u0013\u0000\u0000\u06d0~\u0001\u0000\u0000\u0000\u06d1"+ - "\u06d2\u0007\n\u0000\u0000\u06d2\u06d3\u0007\u0006\u0000\u0000\u06d3\u06d4"+ - "\u0007\t\u0000\u0000\u06d4\u06d5\u0007\n\u0000\u0000\u06d5\u0080\u0001"+ - "\u0000\u0000\u0000\u06d6\u06d7\u0007\n\u0000\u0000\u06d7\u06d8\u0007\u001a"+ - "\u0000\u0000\u06d8\u06d9\u0007\u000e\u0000\u0000\u06d9\u06da\u0007\n\u0000"+ - "\u0000\u06da\u06db\u0007\u0018\u0000\u0000\u06db\u06dc\u0007\u0010\u0000"+ - "\u0000\u06dc\u0082\u0001\u0000\u0000\u0000\u06dd\u06de\u0007\u0019\u0000"+ - "\u0000\u06de\u06df\u0007\u0005\u0000\u0000\u06df\u06e0\u0007\u0006\u0000"+ - "\u0000\u06e0\u06e1\u0007\t\u0000\u0000\u06e1\u06e2\u0007\n\u0000\u0000"+ - "\u06e2\u0084\u0001\u0000\u0000\u0000\u06e3\u06e4\u0007\u0019\u0000\u0000"+ - "\u06e4\u06e5\u0007\n\u0000\u0000\u06e5\u06e6\u0007\u0010\u0000\u0000\u06e6"+ - "\u06e7\u0007\u000e\u0000\u0000\u06e7\u06e8\u0007\u0014\u0000\u0000\u06e8"+ - "\u0086\u0001\u0000\u0000\u0000\u06e9\u06ea\u0007\u0019\u0000\u0000\u06ea"+ - "\u06eb\u0007\u0013\u0000\u0000\u06eb\u06ec\u0007\r\u0000\u0000\u06ec\u0088"+ - "\u0001\u0000\u0000\u0000\u06ed\u06ee\u0007\u0019\u0000\u0000\u06ee\u06ef"+ - "\u0007\u0013\u0000\u0000\u06ef\u06f0\u0007\r\u0000\u0000\u06f0\u06f1\u0007"+ - "\n\u0000\u0000\u06f1\u06f2\u0007\u0011\u0000\u0000\u06f2\u06f3\u0007\u0017"+ - "\u0000\u0000\u06f3\u06f4\u0007\u0007\u0000\u0000\u06f4\u008a\u0001\u0000"+ - "\u0000\u0000\u06f5\u06f6\u0007\u0019\u0000\u0000\u06f6\u06f7\u0007\r\u0000"+ - "\u0000\u06f7\u06f8\u0007\u0013\u0000\u0000\u06f8\u06f9\u0007\u000f\u0000"+ - "\u0000\u06f9\u008c\u0001\u0000\u0000\u0000\u06fa\u06fb\u0007\u0017\u0000"+ - "\u0000\u06fb\u06fc\u0007\r\u0000\u0000\u06fc\u06fd\u0007\u0005\u0000\u0000"+ - "\u06fd\u06fe\u0007\u0007\u0000\u0000\u06fe\u06ff\u0007\u0010\u0000\u0000"+ - "\u06ff\u008e\u0001\u0000\u0000\u0000\u0700\u0701\u0007\u0017\u0000\u0000"+ - "\u0701\u0702\u0007\r\u0000\u0000\u0702\u0703\u0007\u0013\u0000\u0000\u0703"+ - "\u0704\u0007\u0016\u0000\u0000\u0704\u0705\u0007\u0018\u0000\u0000\u0705"+ - "\u0090\u0001\u0000\u0000\u0000\u0706\u0707\u0007\u0014\u0000\u0000\u0707"+ - "\u0708\u0007\u0005\u0000\u0000\u0708\u0709\u0007\u001b\u0000\u0000\u0709"+ - "\u070a\u0007\u0011\u0000\u0000\u070a\u070b\u0007\u0007\u0000\u0000\u070b"+ - "\u070c\u0007\u0017\u0000\u0000\u070c\u0092\u0001\u0000\u0000\u0000\u070d"+ - "\u070e\u0007\u0011\u0000\u0000\u070e\u070f\u0007\u0007\u0000\u0000\u070f"+ - "\u0094\u0001\u0000\u0000\u0000\u0710\u0711\u0007\u0011\u0000\u0000\u0711"+ - "\u0712\u0007\u0007\u0000\u0000\u0712\u0713\u0007\u0011\u0000\u0000\u0713"+ - "\u0714\u0007\u0010\u0000\u0000\u0714\u0715\u0007\u0011\u0000\u0000\u0715"+ - "\u0716\u0007\u0005\u0000\u0000\u0716\u0717\u0007\u0006\u0000\u0000\u0717"+ - "\u0718\u0007\u0006\u0000\u0000\u0718\u0719\u0007\b\u0000\u0000\u0719\u0096"+ - "\u0001\u0000\u0000\u0000\u071a\u071b\u0007\u0011\u0000\u0000\u071b\u071c"+ - "\u0007\u0007\u0000\u0000\u071c\u071d\u0007\u0010\u0000\u0000\u071d\u071e"+ - "\u0007\n\u0000\u0000\u071e\u071f\u0007\r\u0000\u0000\u071f\u0720\u0007"+ - "\t\u0000\u0000\u0720\u0721\u0007\n\u0000\u0000\u0721\u0722\u0007\u000e"+ - "\u0000\u0000\u0722\u0723\u0007\u0010\u0000\u0000\u0723\u0098\u0001\u0000"+ - "\u0000\u0000\u0724\u0725\u0007\u0011\u0000\u0000\u0725\u0726\u0007\u0007"+ - "\u0000\u0000\u0726\u0727\u0007\u0010\u0000\u0000\u0727\u0728\u0007\u0013"+ - "\u0000\u0000\u0728\u009a\u0001\u0000\u0000\u0000\u0729\u072a\u0007\u0006"+ - "\u0000\u0000\u072a\u072b\u0007\u0005\u0000\u0000\u072b\u072c\u0007\u0010"+ - "\u0000\u0000\u072c\u072d\u0007\n\u0000\u0000\u072d\u072e\u0007\r\u0000"+ - "\u0000\u072e\u072f\u0007\u0005\u0000\u0000\u072f\u0730\u0007\u0006\u0000"+ - "\u0000\u0730\u009c\u0001\u0000\u0000\u0000\u0731\u0732\u0007\u0006\u0000"+ - "\u0000\u0732\u0733\u0007\n\u0000\u0000\u0733\u0734\u0007\u0005\u0000\u0000"+ - "\u0734\u0735\u0007\f\u0000\u0000\u0735\u0736\u0007\u0011\u0000\u0000\u0736"+ - "\u0737\u0007\u0007\u0000\u0000\u0737\u0738\u0007\u0017\u0000\u0000\u0738"+ - "\u009e\u0001\u0000\u0000\u0000\u0739\u073a\u0007\u0006\u0000\u0000\u073a"+ - "\u073b\u0007\u0011\u0000\u0000\u073b\u073c\u0007\u000f\u0000\u0000\u073c"+ - "\u073d\u0007\u0011\u0000\u0000\u073d\u073e\u0007\u0010\u0000\u0000\u073e"+ - "\u00a0\u0001\u0000\u0000\u0000\u073f\u0740\u0007\u0006\u0000\u0000\u0740"+ - "\u0741\u0007\u0013\u0000\u0000\u0741\u0742\u0007\u000e\u0000\u0000\u0742"+ - "\u0743\u0007\u0005\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744"+ - "\u0745\u0007\u0010\u0000\u0000\u0745\u0746\u0007\u0011\u0000\u0000\u0746"+ - "\u0747\u0007\u000f\u0000\u0000\u0747\u0748\u0007\n\u0000\u0000\u0748\u00a2"+ - "\u0001\u0000\u0000\u0000\u0749\u074a\u0007\u0006\u0000\u0000\u074a\u074b"+ - "\u0007\u0013\u0000\u0000\u074b\u074c\u0007\u000e\u0000\u0000\u074c\u074d"+ - "\u0007\u0005\u0000\u0000\u074d\u074e\u0007\u0006\u0000\u0000\u074e\u074f"+ - "\u0007\u0010\u0000\u0000\u074f\u0750\u0007\u0011\u0000\u0000\u0750\u0751"+ - "\u0007\u000f\u0000\u0000\u0751\u0752\u0007\n\u0000\u0000\u0752\u0753\u0007"+ - "\t\u0000\u0000\u0753\u0754\u0007\u0010\u0000\u0000\u0754\u0755\u0007\u0005"+ - "\u0000\u0000\u0755\u0756\u0007\u000f\u0000\u0000\u0756\u0757\u0007\u0018"+ - "\u0000\u0000\u0757\u00a4\u0001\u0000\u0000\u0000\u0758\u0759\u0007\u0007"+ - "\u0000\u0000\u0759\u075a\u0007\u0013\u0000\u0000\u075a\u075b\u0007\u0010"+ - "\u0000\u0000\u075b\u00a6\u0001\u0000\u0000\u0000\u075c\u075d\u0007\u0007"+ - "\u0000\u0000\u075d\u075e\u0007\u0016\u0000\u0000\u075e\u075f\u0007\u0006"+ - "\u0000\u0000\u075f\u0760\u0007\u0006\u0000\u0000\u0760\u00a8\u0001\u0000"+ - "\u0000\u0000\u0761\u0762\u0007\u0013\u0000\u0000\u0762\u0763\u0007\u0019"+ - "\u0000\u0000\u0763\u0764\u0007\u0019\u0000\u0000\u0764\u0765\u0007\t\u0000"+ - "\u0000\u0765\u0766\u0007\n\u0000\u0000\u0766\u0767\u0007\u0010\u0000\u0000"+ - "\u0767\u00aa\u0001\u0000\u0000\u0000\u0768\u0769\u0007\u0013\u0000\u0000"+ - "\u0769\u076a\u0007\u0007\u0000\u0000\u076a\u00ac\u0001\u0000\u0000\u0000"+ - "\u076b\u076c\u0007\u0013\u0000\u0000\u076c\u076d\u0007\u0007\u0000\u0000"+ - "\u076d\u076e\u0007\u0006\u0000\u0000\u076e\u076f\u0007\b\u0000\u0000\u076f"+ - "\u00ae\u0001\u0000\u0000\u0000\u0770\u0771\u0007\u0013\u0000\u0000\u0771"+ - "\u0772\u0007\r\u0000\u0000\u0772\u00b0\u0001\u0000\u0000\u0000\u0773\u0774"+ - "\u0007\u0013\u0000\u0000\u0774\u0775\u0007\r\u0000\u0000\u0775\u0776\u0007"+ - "\f\u0000\u0000\u0776\u0777\u0007\n\u0000\u0000\u0777\u0778\u0007\r\u0000"+ - "\u0000\u0778\u00b2\u0001\u0000\u0000\u0000\u0779\u077a\u0007\u0018\u0000"+ - "\u0000\u077a\u077b\u0007\u0006\u0000\u0000\u077b\u077c\u0007\u0005\u0000"+ - "\u0000\u077c\u077d\u0007\u000e\u0000\u0000\u077d\u077e\u0007\u0011\u0000"+ - "\u0000\u077e\u077f\u0007\u0007\u0000\u0000\u077f\u0780\u0007\u0017\u0000"+ - "\u0000\u0780\u00b4\u0001\u0000\u0000\u0000\u0781\u0782\u0007\u0018\u0000"+ - "\u0000\u0782\u0783\u0007\r\u0000\u0000\u0783\u0784\u0007\u0011\u0000\u0000"+ - "\u0784\u0785\u0007\u000f\u0000\u0000\u0785\u0786\u0007\u0005\u0000\u0000"+ - "\u0786\u0787\u0007\r\u0000\u0000\u0787\u0788\u0007\b\u0000\u0000\u0788"+ - "\u00b6\u0001\u0000\u0000\u0000\u0789\u078a\u0007\r\u0000\u0000\u078a\u078b"+ - "\u0007\n\u0000\u0000\u078b\u078c\u0007\u0019\u0000\u0000\u078c\u078d\u0007"+ - "\n\u0000\u0000\u078d\u078e\u0007\r\u0000\u0000\u078e\u078f\u0007\n\u0000"+ - "\u0000\u078f\u0790\u0007\u0007\u0000\u0000\u0790\u0791\u0007\u000e\u0000"+ - "\u0000\u0791\u0792\u0007\n\u0000\u0000\u0792\u0793\u0007\t\u0000\u0000"+ - "\u0793\u00b8\u0001\u0000\u0000\u0000\u0794\u0795\u0007\r\u0000\u0000\u0795"+ - "\u0796\u0007\n\u0000\u0000\u0796\u0797\u0007\u0010\u0000\u0000\u0797\u0798"+ - "\u0007\u0016\u0000\u0000\u0798\u0799\u0007\r\u0000\u0000\u0799\u079a\u0007"+ - "\u0007\u0000\u0000\u079a\u079b\u0007\u0011\u0000\u0000\u079b\u079c\u0007"+ - "\u0007\u0000\u0000\u079c\u079d\u0007\u0017\u0000\u0000\u079d\u00ba\u0001"+ - "\u0000\u0000\u0000\u079e\u079f\u0007\t\u0000\u0000\u079f\u07a0\u0007\n"+ - "\u0000\u0000\u07a0\u07a1\u0007\u0006\u0000\u0000\u07a1\u07a2\u0007\n\u0000"+ - "\u0000\u07a2\u07a3\u0007\u000e\u0000\u0000\u07a3\u07a4\u0007\u0010\u0000"+ - "\u0000\u07a4\u00bc\u0001\u0000\u0000\u0000\u07a5\u07a6\u0007\t\u0000\u0000"+ - "\u07a6\u07a7\u0007\n\u0000\u0000\u07a7\u07a8\u0007\t\u0000\u0000\u07a8"+ - "\u07a9\u0007\t\u0000\u0000\u07a9\u07aa\u0007\u0011\u0000\u0000\u07aa\u07ab"+ - "\u0007\u0013\u0000\u0000\u07ab\u07ac\u0007\u0007\u0000\u0000\u07ac\u07ad"+ - "\u0005_\u0000\u0000\u07ad\u07ae\u0007\u0016\u0000\u0000\u07ae\u07af\u0007"+ - "\t\u0000\u0000\u07af\u07b0\u0007\n\u0000\u0000\u07b0\u07b1\u0007\r\u0000"+ - "\u0000\u07b1\u00be\u0001\u0000\u0000\u0000\u07b2\u07b3\u0007\t\u0000\u0000"+ - "\u07b3\u07b4\u0007\u0013\u0000\u0000\u07b4\u07b5\u0007\u000f\u0000\u0000"+ - "\u07b5\u07b6\u0007\n\u0000\u0000\u07b6\u00c0\u0001\u0000\u0000\u0000\u07b7"+ - "\u07b8\u0007\t\u0000\u0000\u07b8\u07b9\u0007\b\u0000\u0000\u07b9\u07ba"+ - "\u0007\u000f\u0000\u0000\u07ba\u07bb\u0007\u000f\u0000\u0000\u07bb\u07bc"+ - "\u0007\n\u0000\u0000\u07bc\u07bd\u0007\u0010\u0000\u0000\u07bd\u07be\u0007"+ - "\r\u0000\u0000\u07be\u07bf\u0007\u0011\u0000\u0000\u07bf\u07c0\u0007\u000e"+ - "\u0000\u0000\u07c0\u00c2\u0001\u0000\u0000\u0000\u07c1\u07c2\u0007\u0010"+ - "\u0000\u0000\u07c2\u07c3\u0007\u0005\u0000\u0000\u07c3\u07c4\u0007\u0012"+ - "\u0000\u0000\u07c4\u07c5\u0007\u0006\u0000\u0000\u07c5\u07c6\u0007\n\u0000"+ - "\u0000\u07c6\u00c4\u0001\u0000\u0000\u0000\u07c7\u07c8\u0007\u0010\u0000"+ - "\u0000\u07c8\u07c9\u0007\u0014\u0000\u0000\u07c9\u07ca\u0007\n\u0000\u0000"+ - "\u07ca\u07cb\u0007\u0007\u0000\u0000\u07cb\u00c6\u0001\u0000\u0000\u0000"+ - "\u07cc\u07cd\u0007\u0010\u0000\u0000\u07cd\u07ce\u0007\u0013\u0000\u0000"+ - "\u07ce\u00c8\u0001\u0000\u0000\u0000\u07cf\u07d0\u0007\u0010\u0000\u0000"+ - "\u07d0\u07d1\u0007\r\u0000\u0000\u07d1\u07d2\u0007\u0005\u0000\u0000\u07d2"+ - "\u07d3\u0007\u0011\u0000\u0000\u07d3\u07d4\u0007\u0006\u0000\u0000\u07d4"+ - "\u07d5\u0007\u0011\u0000\u0000\u07d5\u07d6\u0007\u0007\u0000\u0000\u07d6"+ - "\u07d7\u0007\u0017\u0000\u0000\u07d7\u00ca\u0001\u0000\u0000\u0000\u07d8"+ - "\u07d9\u0007\u0010\u0000\u0000\u07d9\u07da\u0007\r\u0000\u0000\u07da\u07db"+ - "\u0007\u0016\u0000\u0000\u07db\u07dc\u0007\n\u0000\u0000\u07dc\u00cc\u0001"+ - "\u0000\u0000\u0000\u07dd\u07de\u0007\u0016\u0000\u0000\u07de\u07df\u0007"+ - "\u0007\u0000\u0000\u07df\u07e0\u0007\u0011\u0000\u0000\u07e0\u07e1\u0007"+ - "\u0013\u0000\u0000\u07e1\u07e2\u0007\u0007\u0000\u0000\u07e2\u00ce\u0001"+ - "\u0000\u0000\u0000\u07e3\u07e4\u0007\u0016\u0000\u0000\u07e4\u07e5\u0007"+ - "\u0007\u0000\u0000\u07e5\u07e6\u0007\u0011\u0000\u0000\u07e6\u07e7\u0007"+ - "\u001c\u0000\u0000\u07e7\u07e8\u0007\u0016\u0000\u0000\u07e8\u07e9\u0007"+ - "\n\u0000\u0000\u07e9\u00d0\u0001\u0000\u0000\u0000\u07ea\u07eb\u0007\u0016"+ - "\u0000\u0000\u07eb\u07ec\u0007\t\u0000\u0000\u07ec\u07ed\u0007\n\u0000"+ - "\u0000\u07ed\u07ee\u0007\r\u0000\u0000\u07ee\u00d2\u0001\u0000\u0000\u0000"+ - "\u07ef\u07f0\u0007\u0016\u0000\u0000\u07f0\u07f1\u0007\t\u0000\u0000\u07f1"+ - "\u07f2\u0007\u0011\u0000\u0000\u07f2\u07f3\u0007\u0007\u0000\u0000\u07f3"+ - "\u07f4\u0007\u0017\u0000\u0000\u07f4\u00d4\u0001\u0000\u0000\u0000\u07f5"+ - "\u07f6\u0007\u001b\u0000\u0000\u07f6\u07f7\u0007\u0005\u0000\u0000\u07f7"+ - "\u07f8\u0007\r\u0000\u0000\u07f8\u07f9\u0007\u0011\u0000\u0000\u07f9\u07fa"+ - "\u0007\u0005\u0000\u0000\u07fa\u07fb\u0007\f\u0000\u0000\u07fb\u07fc\u0007"+ - "\u0011\u0000\u0000\u07fc\u07fd\u0007\u000e\u0000\u0000\u07fd\u00d6\u0001"+ - "\u0000\u0000\u0000\u07fe\u07ff\u0007\u001d\u0000\u0000\u07ff\u0800\u0007"+ - "\u0014\u0000\u0000\u0800\u0801\u0007\n\u0000\u0000\u0801\u0802\u0007\u0007"+ - "\u0000\u0000\u0802\u00d8\u0001\u0000\u0000\u0000\u0803\u0804\u0007\u001d"+ - "\u0000\u0000\u0804\u0805\u0007\u0014\u0000\u0000\u0805\u0806\u0007\n\u0000"+ - "\u0000\u0806\u0807\u0007\r\u0000\u0000\u0807\u0808\u0007\n\u0000\u0000"+ - "\u0808\u00da\u0001\u0000\u0000\u0000\u0809\u080a\u0007\u001d\u0000\u0000"+ - "\u080a\u080b\u0007\u0011\u0000\u0000\u080b\u080c\u0007\u0007\u0000\u0000"+ - "\u080c\u080d\u0007\f\u0000\u0000\u080d\u080e\u0007\u0013\u0000\u0000\u080e"+ - "\u080f\u0007\u001d\u0000\u0000\u080f\u00dc\u0001\u0000\u0000\u0000\u0810"+ - "\u0811\u0007\u001d\u0000\u0000\u0811\u0812\u0007\u0011\u0000\u0000\u0812"+ - "\u0813\u0007\u0010\u0000\u0000\u0813\u0814\u0007\u0014\u0000\u0000\u0814"+ - "\u00de\u0001\u0000\u0000\u0000\u0815\u0816\u0007\u0005\u0000\u0000\u0816"+ - "\u0817\u0007\u0016\u0000\u0000\u0817\u0818\u0007\u0010\u0000\u0000\u0818"+ - "\u0819\u0007\u0014\u0000\u0000\u0819\u081a\u0007\u0013\u0000\u0000\u081a"+ - "\u081b\u0007\r\u0000\u0000\u081b\u081c\u0007\u0011\u0000\u0000\u081c\u081d"+ - "\u0007\u000b\u0000\u0000\u081d\u081e\u0007\u0005\u0000\u0000\u081e\u081f"+ - "\u0007\u0010\u0000\u0000\u081f\u0820\u0007\u0011\u0000\u0000\u0820\u0821"+ - "\u0007\u0013\u0000\u0000\u0821\u0822\u0007\u0007\u0000\u0000\u0822\u00e0"+ - "\u0001\u0000\u0000\u0000\u0823\u0824\u0007\u0012\u0000\u0000\u0824\u0825"+ - "\u0007\u0011\u0000\u0000\u0825\u0826\u0007\u0007\u0000\u0000\u0826\u0827"+ - "\u0007\u0005\u0000\u0000\u0827\u0828\u0007\r\u0000\u0000\u0828\u0829\u0007"+ - "\b\u0000\u0000\u0829\u00e2\u0001\u0000\u0000\u0000\u082a\u082b\u0007\u000e"+ - "\u0000\u0000\u082b\u082c\u0007\u0013\u0000\u0000\u082c\u082d\u0007\u0006"+ - "\u0000\u0000\u082d\u082e\u0007\u0006\u0000\u0000\u082e\u082f\u0007\u0005"+ - "\u0000\u0000\u082f\u0830\u0007\u0010\u0000\u0000\u0830\u0831\u0007\u0011"+ - "\u0000\u0000\u0831\u0832\u0007\u0013\u0000\u0000\u0832\u0833\u0007\u0007"+ - "\u0000\u0000\u0833\u00e4\u0001\u0000\u0000\u0000\u0834\u0835\u0007\u000e"+ - "\u0000\u0000\u0835\u0836\u0007\u0013\u0000\u0000\u0836\u0837\u0007\u0007"+ - "\u0000\u0000\u0837\u0838\u0007\u000e\u0000\u0000\u0838\u0839\u0007\u0016"+ - "\u0000\u0000\u0839\u083a\u0007\r\u0000\u0000\u083a\u083b\u0007\r\u0000"+ - "\u0000\u083b\u083c\u0007\n\u0000\u0000\u083c\u083d\u0007\u0007\u0000\u0000"+ - "\u083d\u083e\u0007\u0010\u0000\u0000\u083e\u083f\u0007\u0006\u0000\u0000"+ - "\u083f\u0840\u0007\b\u0000\u0000\u0840\u00e6\u0001\u0000\u0000\u0000\u0841"+ - "\u0842\u0007\u000e\u0000\u0000\u0842\u0843\u0007\r\u0000\u0000\u0843\u0844"+ - "\u0007\u0013\u0000\u0000\u0844\u0845\u0007\t\u0000\u0000\u0845\u0846\u0007"+ - "\t\u0000\u0000\u0846\u00e8\u0001\u0000\u0000\u0000\u0847\u0848\u0007\u000e"+ - "\u0000\u0000\u0848\u0849\u0007\u0016\u0000\u0000\u0849\u084a\u0007\r\u0000"+ - "\u0000\u084a\u084b\u0007\r\u0000\u0000\u084b\u084c\u0007\n\u0000\u0000"+ - "\u084c\u084d\u0007\u0007\u0000\u0000\u084d\u084e\u0007\u0010\u0000\u0000"+ - "\u084e\u084f\u0005_\u0000\u0000\u084f\u0850\u0007\t\u0000\u0000\u0850"+ - "\u0851\u0007\u000e\u0000\u0000\u0851\u0852\u0007\u0014\u0000\u0000\u0852"+ - "\u0853\u0007\n\u0000\u0000\u0853\u0854\u0007\u000f\u0000\u0000\u0854\u0855"+ - "\u0007\u0005\u0000\u0000\u0855\u00ea\u0001\u0000\u0000\u0000\u0856\u0857"+ - "\u0007\u0019\u0000\u0000\u0857\u0858\u0007\r\u0000\u0000\u0858\u0859\u0007"+ - "\n\u0000\u0000\u0859\u085a\u0007\n\u0000\u0000\u085a\u085b\u0007\u000b"+ - "\u0000\u0000\u085b\u085c\u0007\n\u0000\u0000\u085c\u00ec\u0001\u0000\u0000"+ - "\u0000\u085d\u085e\u0007\u0019\u0000\u0000\u085e\u085f\u0007\u0016\u0000"+ - "\u0000\u085f\u0860\u0007\u0006\u0000\u0000\u0860\u0861\u0007\u0006\u0000"+ - "\u0000\u0861\u00ee\u0001\u0000\u0000\u0000\u0862\u0863\u0007\u0011\u0000"+ - "\u0000\u0863\u0864\u0007\u0006\u0000\u0000\u0864\u0865\u0007\u0011\u0000"+ - "\u0000\u0865\u0866\u0007\u0015\u0000\u0000\u0866\u0867\u0007\n\u0000\u0000"+ - "\u0867\u00f0\u0001\u0000\u0000\u0000\u0868\u0869\u0007\u0011\u0000\u0000"+ - "\u0869\u086a\u0007\u0007\u0000\u0000\u086a\u086b\u0007\u0007\u0000\u0000"+ - "\u086b\u086c\u0007\n\u0000\u0000\u086c\u086d\u0007\r\u0000\u0000\u086d"+ - "\u00f2\u0001\u0000\u0000\u0000\u086e\u086f\u0007\u0011\u0000\u0000\u086f"+ - "\u0870\u0007\t\u0000\u0000\u0870\u00f4\u0001\u0000\u0000\u0000\u0871\u0872"+ - "\u0007\u0011\u0000\u0000\u0872\u0873\u0007\t\u0000\u0000\u0873\u0874\u0007"+ - "\u0007\u0000\u0000\u0874\u0875\u0007\u0016\u0000\u0000\u0875\u0876\u0007"+ - "\u0006\u0000\u0000\u0876\u0877\u0007\u0006\u0000\u0000\u0877\u00f6\u0001"+ - "\u0000\u0000\u0000\u0878\u0879\u0007\u001e\u0000\u0000\u0879\u087a\u0007"+ - "\u0013\u0000\u0000\u087a\u087b\u0007\u0011\u0000\u0000\u087b\u087c\u0007"+ - "\u0007\u0000\u0000\u087c\u00f8\u0001\u0000\u0000\u0000\u087d\u087e\u0007"+ - "\u0006\u0000\u0000\u087e\u087f\u0007\n\u0000\u0000\u087f\u0880\u0007\u0019"+ - "\u0000\u0000\u0880\u0881\u0007\u0010\u0000\u0000\u0881\u00fa\u0001\u0000"+ - "\u0000\u0000\u0882\u0883\u0007\u0006\u0000\u0000\u0883\u0884\u0007\u0011"+ - "\u0000\u0000\u0884\u0885\u0007\u0015\u0000\u0000\u0885\u0886\u0007\n\u0000"+ - "\u0000\u0886\u00fc\u0001\u0000\u0000\u0000\u0887\u0888\u0007\u0007\u0000"+ - "\u0000\u0888\u0889\u0007\u0005\u0000\u0000\u0889\u088a\u0007\u0010\u0000"+ - "\u0000\u088a\u088b\u0007\u0016\u0000\u0000\u088b\u088c\u0007\r\u0000\u0000"+ - "\u088c\u088d\u0007\u0005\u0000\u0000\u088d\u088e\u0007\u0006\u0000\u0000"+ - "\u088e\u00fe\u0001\u0000\u0000\u0000\u088f\u0890\u0007\u0007\u0000\u0000"+ - "\u0890\u0891\u0007\u0013\u0000\u0000\u0891\u0892\u0007\u0010\u0000\u0000"+ - "\u0892\u0893\u0007\u0007\u0000\u0000\u0893\u0894\u0007\u0016\u0000\u0000"+ - "\u0894\u0895\u0007\u0006\u0000\u0000\u0895\u0896\u0007\u0006\u0000\u0000"+ - "\u0896\u0100\u0001\u0000\u0000\u0000\u0897\u0898\u0007\u0013\u0000\u0000"+ - "\u0898\u0899\u0007\u0016\u0000\u0000\u0899\u089a\u0007\u0010\u0000\u0000"+ - "\u089a\u089b\u0007\n\u0000\u0000\u089b\u089c\u0007\r\u0000\u0000\u089c"+ - "\u0102\u0001\u0000\u0000\u0000\u089d\u089e\u0007\u0013\u0000\u0000\u089e"+ - "\u089f\u0007\u001b\u0000\u0000\u089f\u08a0\u0007\n\u0000\u0000\u08a0\u08a1"+ - "\u0007\r\u0000\u0000\u08a1\u0104\u0001\u0000\u0000\u0000\u08a2\u08a3\u0007"+ - "\u0013\u0000\u0000\u08a3\u08a4\u0007\u001b\u0000\u0000\u08a4\u08a5\u0007"+ - "\n\u0000\u0000\u08a5\u08a6\u0007\r\u0000\u0000\u08a6\u08a7\u0007\u0006"+ - "\u0000\u0000\u08a7\u08a8\u0007\u0005\u0000\u0000\u08a8\u08a9\u0007\u0018"+ - "\u0000\u0000\u08a9\u08aa\u0007\t\u0000\u0000\u08aa\u0106\u0001\u0000\u0000"+ - "\u0000\u08ab\u08ac\u0007\r\u0000\u0000\u08ac\u08ad\u0007\u0011\u0000\u0000"+ - "\u08ad\u08ae\u0007\u0017\u0000\u0000\u08ae\u08af\u0007\u0014\u0000\u0000"+ - "\u08af\u08b0\u0007\u0010\u0000\u0000\u08b0\u0108\u0001\u0000\u0000\u0000"+ - "\u08b1\u08b2\u0007\t\u0000\u0000\u08b2\u08b3\u0007\u0011\u0000\u0000\u08b3"+ - "\u08b4\u0007\u000f\u0000\u0000\u08b4\u08b5\u0007\u0011\u0000\u0000\u08b5"+ - "\u08b6\u0007\u0006\u0000\u0000\u08b6\u08b7\u0007\u0005\u0000\u0000\u08b7"+ - "\u08b8\u0007\r\u0000\u0000\u08b8\u010a\u0001\u0000\u0000\u0000\u08b9\u08ba"+ - "\u0007\u001b\u0000\u0000\u08ba\u08bb\u0007\n\u0000\u0000\u08bb\u08bc\u0007"+ - "\r\u0000\u0000\u08bc\u08bd\u0007\u0012\u0000\u0000\u08bd\u08be\u0007\u0013"+ - "\u0000\u0000\u08be\u08bf\u0007\t\u0000\u0000\u08bf\u08c0\u0007\n\u0000"+ - "\u0000\u08c0\u010c\u0001\u0000\u0000\u0000\u08c1\u08c2\u0007\u0005\u0000"+ - "\u0000\u08c2\u08c3\u0007\u0012\u0000\u0000\u08c3\u08c4\u0007\u0013\u0000"+ - "\u0000\u08c4\u08c5\u0007\r\u0000\u0000\u08c5\u08c6\u0007\u0010\u0000\u0000"+ - "\u08c6\u010e\u0001\u0000\u0000\u0000\u08c7\u08c8\u0007\u0005\u0000\u0000"+ - "\u08c8\u08c9\u0007\u0012\u0000\u0000\u08c9\u08ca\u0007\t\u0000\u0000\u08ca"+ - "\u08cb\u0007\u0013\u0000\u0000\u08cb\u08cc\u0007\u0006\u0000\u0000\u08cc"+ - "\u08cd\u0007\u0016\u0000\u0000\u08cd\u08ce\u0007\u0010\u0000\u0000\u08ce"+ - "\u08cf\u0007\n\u0000\u0000\u08cf\u0110\u0001\u0000\u0000\u0000\u08d0\u08d1"+ - "\u0007\u0005\u0000\u0000\u08d1\u08d2\u0007\u000e\u0000\u0000\u08d2\u08d3"+ - "\u0007\u000e\u0000\u0000\u08d3\u08d4\u0007\n\u0000\u0000\u08d4\u08d5\u0007"+ - "\t\u0000\u0000\u08d5\u08d6\u0007\t\u0000\u0000\u08d6\u0112\u0001\u0000"+ - "\u0000\u0000\u08d7\u08d8\u0007\u0005\u0000\u0000\u08d8\u08d9\u0007\u000e"+ - "\u0000\u0000\u08d9\u08da\u0007\u0010\u0000\u0000\u08da\u08db\u0007\u0011"+ - "\u0000\u0000\u08db\u08dc\u0007\u0013\u0000\u0000\u08dc\u08dd\u0007\u0007"+ - "\u0000\u0000\u08dd\u0114\u0001\u0000\u0000\u0000\u08de\u08df\u0007\u0005"+ - "\u0000\u0000\u08df\u08e0\u0007\f\u0000\u0000\u08e0\u08e1\u0007\f\u0000"+ - "\u0000\u08e1\u0116\u0001\u0000\u0000\u0000\u08e2\u08e3\u0007\u0005\u0000"+ - "\u0000\u08e3\u08e4\u0007\f\u0000\u0000\u08e4\u08e5\u0007\u000f\u0000\u0000"+ - "\u08e5\u08e6\u0007\u0011\u0000\u0000\u08e6\u08e7\u0007\u0007\u0000\u0000"+ - "\u08e7\u0118\u0001\u0000\u0000\u0000\u08e8\u08e9\u0007\u0005\u0000\u0000"+ - "\u08e9\u08ea\u0007\u0019\u0000\u0000\u08ea\u08eb\u0007\u0010\u0000\u0000"+ - "\u08eb\u08ec\u0007\n\u0000\u0000\u08ec\u08ed\u0007\r\u0000\u0000\u08ed"+ - "\u011a\u0001\u0000\u0000\u0000\u08ee\u08ef\u0007\u0005\u0000\u0000\u08ef"+ - "\u08f0\u0007\u0017\u0000\u0000\u08f0\u08f1\u0007\u0017\u0000\u0000\u08f1"+ - "\u08f2\u0007\r\u0000\u0000\u08f2\u08f3\u0007\n\u0000\u0000\u08f3\u08f4"+ - "\u0007\u0017\u0000\u0000\u08f4\u08f5\u0007\u0005\u0000\u0000\u08f5\u08f6"+ - "\u0007\u0010\u0000\u0000\u08f6\u08f7\u0007\n\u0000\u0000\u08f7\u011c\u0001"+ - "\u0000\u0000\u0000\u08f8\u08f9\u0007\u0005\u0000\u0000\u08f9\u08fa\u0007"+ - "\u0006\u0000\u0000\u08fa\u08fb\u0007\t\u0000\u0000\u08fb\u08fc\u0007\u0013"+ - "\u0000\u0000\u08fc\u011e\u0001\u0000\u0000\u0000\u08fd\u08fe\u0007\u0005"+ - "\u0000\u0000\u08fe\u08ff\u0007\u0006\u0000\u0000\u08ff\u0900\u0007\u0010"+ - "\u0000\u0000\u0900\u0901\u0007\n\u0000\u0000\u0901\u0902\u0007\r\u0000"+ - "\u0000\u0902\u0120\u0001\u0000\u0000\u0000\u0903\u0904\u0007\u0005\u0000"+ - "\u0000\u0904\u0905\u0007\u0006\u0000\u0000\u0905\u0906\u0007\u001d\u0000"+ - "\u0000\u0906\u0907\u0007\u0005\u0000\u0000\u0907\u0908\u0007\b\u0000\u0000"+ - "\u0908\u0909\u0007\t\u0000\u0000\u0909\u0122\u0001\u0000\u0000\u0000\u090a"+ - "\u090b\u0007\u0005\u0000\u0000\u090b\u090c\u0007\t\u0000\u0000\u090c\u090d"+ - "\u0007\t\u0000\u0000\u090d\u090e\u0007\n\u0000\u0000\u090e\u090f\u0007"+ - "\r\u0000\u0000\u090f\u0910\u0007\u0010\u0000\u0000\u0910\u0911\u0007\u0011"+ - "\u0000\u0000\u0911\u0912\u0007\u0013\u0000\u0000\u0912\u0913\u0007\u0007"+ - "\u0000\u0000\u0913\u0124\u0001\u0000\u0000\u0000\u0914\u0915\u0007\u0005"+ - "\u0000\u0000\u0915\u0916\u0007\t\u0000\u0000\u0916\u0917\u0007\t\u0000"+ - "\u0000\u0917\u0918\u0007\u0011\u0000\u0000\u0918\u0919\u0007\u0017\u0000"+ - "\u0000\u0919\u091a\u0007\u0007\u0000\u0000\u091a\u091b\u0007\u000f\u0000"+ - "\u0000\u091b\u091c\u0007\n\u0000\u0000\u091c\u091d\u0007\u0007\u0000\u0000"+ - "\u091d\u091e\u0007\u0010\u0000\u0000\u091e\u0126\u0001\u0000\u0000\u0000"+ - "\u091f\u0920\u0007\u0005\u0000\u0000\u0920\u0921\u0007\u0010\u0000\u0000"+ - "\u0921\u0128\u0001\u0000\u0000\u0000\u0922\u0923\u0007\u0005\u0000\u0000"+ - "\u0923\u0924\u0007\u0010\u0000\u0000\u0924\u0925\u0007\u0010\u0000\u0000"+ - "\u0925\u0926\u0007\r\u0000\u0000\u0926\u0927\u0007\u0011\u0000\u0000\u0927"+ - "\u0928\u0007\u0012\u0000\u0000\u0928\u0929\u0007\u0016\u0000\u0000\u0929"+ - "\u092a\u0007\u0010\u0000\u0000\u092a\u092b\u0007\n\u0000\u0000\u092b\u012a"+ - "\u0001\u0000\u0000\u0000\u092c\u092d\u0007\u0012\u0000\u0000\u092d\u092e"+ - "\u0007\u0005\u0000\u0000\u092e\u092f\u0007\u000e\u0000\u0000\u092f\u0930"+ - "\u0007\u0015\u0000\u0000\u0930\u0931\u0007\u001d\u0000\u0000\u0931\u0932"+ - "\u0007\u0005\u0000\u0000\u0932\u0933\u0007\r\u0000\u0000\u0933\u0934\u0007"+ - "\f\u0000\u0000\u0934\u012c\u0001\u0000\u0000\u0000\u0935\u0936\u0007\u0012"+ - "\u0000\u0000\u0936\u0937\u0007\n\u0000\u0000\u0937\u0938\u0007\u0019\u0000"+ - "\u0000\u0938\u0939\u0007\u0013\u0000\u0000\u0939\u093a\u0007\r\u0000\u0000"+ - "\u093a\u093b\u0007\n\u0000\u0000\u093b\u012e\u0001\u0000\u0000\u0000\u093c"+ - "\u093d\u0007\u0012\u0000\u0000\u093d\u093e\u0007\n\u0000\u0000\u093e\u093f"+ - "\u0007\u0017\u0000\u0000\u093f\u0940\u0007\u0011\u0000\u0000\u0940\u0941"+ - "\u0007\u0007\u0000\u0000\u0941\u0130\u0001\u0000\u0000\u0000\u0942\u0943"+ - "\u0007\u0012\u0000\u0000\u0943\u0944\u0007\b\u0000\u0000\u0944\u0132\u0001"+ - "\u0000\u0000\u0000\u0945\u0946\u0007\u000e\u0000\u0000\u0946\u0947\u0007"+ - "\u0005\u0000\u0000\u0947\u0948\u0007\u000e\u0000\u0000\u0948\u0949\u0007"+ - "\u0014\u0000\u0000\u0949\u094a\u0007\n\u0000\u0000\u094a\u0134\u0001\u0000"+ - "\u0000\u0000\u094b\u094c\u0007\u000e\u0000\u0000\u094c\u094d\u0007\u0005"+ - "\u0000\u0000\u094d\u094e\u0007\u0006\u0000\u0000\u094e\u094f\u0007\u0006"+ - "\u0000\u0000\u094f\u0950\u0007\n\u0000\u0000\u0950\u0951\u0007\f\u0000"+ - "\u0000\u0951\u0136\u0001\u0000\u0000\u0000\u0952\u0953\u0007\u000e\u0000"+ - "\u0000\u0953\u0954\u0007\u0005\u0000\u0000\u0954\u0955\u0007\t\u0000\u0000"+ - "\u0955\u0956\u0007\u000e\u0000\u0000\u0956\u0957\u0007\u0005\u0000\u0000"+ - "\u0957\u0958\u0007\f\u0000\u0000\u0958\u0959\u0007\n\u0000\u0000\u0959"+ - "\u0138\u0001\u0000\u0000\u0000\u095a\u095b\u0007\u000e\u0000\u0000\u095b"+ - "\u095c\u0007\u0005\u0000\u0000\u095c\u095d\u0007\t\u0000\u0000\u095d\u095e"+ - "\u0007\u000e\u0000\u0000\u095e\u095f\u0007\u0005\u0000\u0000\u095f\u0960"+ - "\u0007\f\u0000\u0000\u0960\u0961\u0007\n\u0000\u0000\u0961\u0962\u0007"+ - "\f\u0000\u0000\u0962\u013a\u0001\u0000\u0000\u0000\u0963\u0964\u0007\u000e"+ - "\u0000\u0000\u0964\u0965\u0007\u0005\u0000\u0000\u0965\u0966\u0007\u0010"+ - "\u0000\u0000\u0966\u0967\u0007\u0005\u0000\u0000\u0967\u0968\u0007\u0006"+ - "\u0000\u0000\u0968\u0969\u0007\u0013\u0000\u0000\u0969\u096a\u0007\u0017"+ - "\u0000\u0000\u096a\u013c\u0001\u0000\u0000\u0000\u096b\u096c\u0007\u000e"+ - "\u0000\u0000\u096c\u096d\u0007\u0014\u0000\u0000\u096d\u096e\u0007\u0005"+ - "\u0000\u0000\u096e\u096f\u0007\u0011\u0000\u0000\u096f\u0970\u0007\u0007"+ - "\u0000\u0000\u0970\u013e\u0001\u0000\u0000\u0000\u0971\u0972\u0007\u000e"+ - "\u0000\u0000\u0972\u0973\u0007\u0014\u0000\u0000\u0973\u0974\u0007\u0005"+ - "\u0000\u0000\u0974\u0975\u0007\r\u0000\u0000\u0975\u0976\u0007\u0005\u0000"+ - "\u0000\u0976\u0977\u0007\u000e\u0000\u0000\u0977\u0978\u0007\u0010\u0000"+ - "\u0000\u0978\u0979\u0007\n\u0000\u0000\u0979\u097a\u0007\r\u0000\u0000"+ - "\u097a\u097b\u0007\u0011\u0000\u0000\u097b\u097c\u0007\t\u0000\u0000\u097c"+ - "\u097d\u0007\u0010\u0000\u0000\u097d\u097e\u0007\u0011\u0000\u0000\u097e"+ - "\u097f\u0007\u000e\u0000\u0000\u097f\u0980\u0007\t\u0000\u0000\u0980\u0140"+ - "\u0001\u0000\u0000\u0000\u0981\u0982\u0007\u000e\u0000\u0000\u0982\u0983"+ - "\u0007\u0014\u0000\u0000\u0983\u0984\u0007\n\u0000\u0000\u0984\u0985\u0007"+ - "\u000e\u0000\u0000\u0985\u0986\u0007\u0015\u0000\u0000\u0986\u0987\u0007"+ - "\u0018\u0000\u0000\u0987\u0988\u0007\u0013\u0000\u0000\u0988\u0989\u0007"+ - "\u0011\u0000\u0000\u0989\u098a\u0007\u0007\u0000\u0000\u098a\u098b\u0007"+ - "\u0010\u0000\u0000\u098b\u0142\u0001\u0000\u0000\u0000\u098c\u098d\u0007"+ - "\u000e\u0000\u0000\u098d\u098e\u0007\u0006\u0000\u0000\u098e\u098f\u0007"+ - "\u0005\u0000\u0000\u098f\u0990\u0007\t\u0000\u0000\u0990\u0991\u0007\t"+ - "\u0000\u0000\u0991\u0144\u0001\u0000\u0000\u0000\u0992\u0993\u0007\u000e"+ - "\u0000\u0000\u0993\u0994\u0007\u0006\u0000\u0000\u0994\u0995\u0007\u0013"+ - "\u0000\u0000\u0995\u0996\u0007\t\u0000\u0000\u0996\u0997\u0007\n\u0000"+ - "\u0000\u0997\u0146\u0001\u0000\u0000\u0000\u0998\u0999\u0007\u000e\u0000"+ - "\u0000\u0999\u099a\u0007\u0006\u0000\u0000\u099a\u099b\u0007\u0016\u0000"+ - "\u0000\u099b\u099c\u0007\t\u0000\u0000\u099c\u099d\u0007\u0010\u0000\u0000"+ - "\u099d\u099e\u0007\n\u0000\u0000\u099e\u099f\u0007\r\u0000\u0000\u099f"+ - "\u0148\u0001\u0000\u0000\u0000\u09a0\u09a1\u0007\u000e\u0000\u0000\u09a1"+ - "\u09a2\u0007\u0013\u0000\u0000\u09a2\u09a3\u0007\u000f\u0000\u0000\u09a3"+ - "\u09a4\u0007\u000f\u0000\u0000\u09a4\u09a5\u0007\n\u0000\u0000\u09a5\u09a6"+ - "\u0007\u0007\u0000\u0000\u09a6\u09a7\u0007\u0010\u0000\u0000\u09a7\u014a"+ - "\u0001\u0000\u0000\u0000\u09a8\u09a9\u0007\u000e\u0000\u0000\u09a9\u09aa"+ - "\u0007\u0013\u0000\u0000\u09aa\u09ab\u0007\u000f\u0000\u0000\u09ab\u09ac"+ - "\u0007\u000f\u0000\u0000\u09ac\u09ad\u0007\n\u0000\u0000\u09ad\u09ae\u0007"+ - "\u0007\u0000\u0000\u09ae\u09af\u0007\u0010\u0000\u0000\u09af\u09b0\u0007"+ - "\t\u0000\u0000\u09b0\u014c\u0001\u0000\u0000\u0000\u09b1\u09b2\u0007\u000e"+ - "\u0000\u0000\u09b2\u09b3\u0007\u0013\u0000\u0000\u09b3\u09b4\u0007\u000f"+ - "\u0000\u0000\u09b4\u09b5\u0007\u000f\u0000\u0000\u09b5\u09b6\u0007\u0011"+ - "\u0000\u0000\u09b6\u09b7\u0007\u0010\u0000\u0000\u09b7\u014e\u0001\u0000"+ - "\u0000\u0000\u09b8\u09b9\u0007\u000e\u0000\u0000\u09b9\u09ba\u0007\u0013"+ - "\u0000\u0000\u09ba\u09bb\u0007\u000f\u0000\u0000\u09bb\u09bc\u0007\u000f"+ - "\u0000\u0000\u09bc\u09bd\u0007\u0011\u0000\u0000\u09bd\u09be\u0007\u0010"+ - "\u0000\u0000\u09be\u09bf\u0007\u0010\u0000\u0000\u09bf\u09c0\u0007\n\u0000"+ - "\u0000\u09c0\u09c1\u0007\f\u0000\u0000\u09c1\u0150\u0001\u0000\u0000\u0000"+ - "\u09c2\u09c3\u0007\u000e\u0000\u0000\u09c3\u09c4\u0007\u0013\u0000\u0000"+ - "\u09c4\u09c5\u0007\u0007\u0000\u0000\u09c5\u09c6\u0007\u0019\u0000\u0000"+ - "\u09c6\u09c7\u0007\u0011\u0000\u0000\u09c7\u09c8\u0007\u0017\u0000\u0000"+ - "\u09c8\u09c9\u0007\u0016\u0000\u0000\u09c9\u09ca\u0007\r\u0000\u0000\u09ca"+ - "\u09cb\u0007\u0005\u0000\u0000\u09cb\u09cc\u0007\u0010\u0000\u0000\u09cc"+ - "\u09cd\u0007\u0011\u0000\u0000\u09cd\u09ce\u0007\u0013\u0000\u0000\u09ce"+ - "\u09cf\u0007\u0007\u0000\u0000\u09cf\u0152\u0001\u0000\u0000\u0000\u09d0"+ - "\u09d1\u0007\u000e\u0000\u0000\u09d1\u09d2\u0007\u0013\u0000\u0000\u09d2"+ - "\u09d3\u0007\u0007\u0000\u0000\u09d3\u09d4\u0007\u0007\u0000\u0000\u09d4"+ - "\u09d5\u0007\n\u0000\u0000\u09d5\u09d6\u0007\u000e\u0000\u0000\u09d6\u09d7"+ - "\u0007\u0010\u0000\u0000\u09d7\u09d8\u0007\u0011\u0000\u0000\u09d8\u09d9"+ - "\u0007\u0013\u0000\u0000\u09d9\u09da\u0007\u0007\u0000\u0000\u09da\u0154"+ - "\u0001\u0000\u0000\u0000\u09db\u09dc\u0007\u000e\u0000\u0000\u09dc\u09dd"+ - "\u0007\u0013\u0000\u0000\u09dd\u09de\u0007\u0007\u0000\u0000\u09de\u09df"+ - "\u0007\t\u0000\u0000\u09df\u09e0\u0007\u0010\u0000\u0000\u09e0\u09e1\u0007"+ - "\r\u0000\u0000\u09e1\u09e2\u0007\u0005\u0000\u0000\u09e2\u09e3\u0007\u0011"+ - "\u0000\u0000\u09e3\u09e4\u0007\u0007\u0000\u0000\u09e4\u09e5\u0007\u0010"+ - "\u0000\u0000\u09e5\u09e6\u0007\t\u0000\u0000\u09e6\u0156\u0001\u0000\u0000"+ - "\u0000\u09e7\u09e8\u0007\u000e\u0000\u0000\u09e8\u09e9\u0007\u0013\u0000"+ - "\u0000\u09e9\u09ea\u0007\u0007\u0000\u0000\u09ea\u09eb\u0007\u0010\u0000"+ - "\u0000\u09eb\u09ec\u0007\n\u0000\u0000\u09ec\u09ed\u0007\u0007\u0000\u0000"+ - "\u09ed\u09ee\u0007\u0010\u0000\u0000\u09ee\u0158\u0001\u0000\u0000\u0000"+ - "\u09ef\u09f0\u0007\u000e\u0000\u0000\u09f0\u09f1\u0007\u0013\u0000\u0000"+ - "\u09f1\u09f2\u0007\u0007\u0000\u0000\u09f2\u09f3\u0007\u0010\u0000\u0000"+ - "\u09f3\u09f4\u0007\u0011\u0000\u0000\u09f4\u09f5\u0007\u0007\u0000\u0000"+ - "\u09f5\u09f6\u0007\u0016\u0000\u0000\u09f6\u09f7\u0007\n\u0000\u0000\u09f7"+ - "\u015a\u0001\u0000\u0000\u0000\u09f8\u09f9\u0007\u000e\u0000\u0000\u09f9"+ - "\u09fa\u0007\u0013\u0000\u0000\u09fa\u09fb\u0007\u0007\u0000\u0000\u09fb"+ - "\u09fc\u0007\u001b\u0000\u0000\u09fc\u09fd\u0007\n\u0000\u0000\u09fd\u09fe"+ - "\u0007\r\u0000\u0000\u09fe\u09ff\u0007\t\u0000\u0000\u09ff\u0a00\u0007"+ - "\u0011\u0000\u0000\u0a00\u0a01\u0007\u0013\u0000\u0000\u0a01\u0a02\u0007"+ - "\u0007\u0000\u0000\u0a02\u015c\u0001\u0000\u0000\u0000\u0a03\u0a04\u0007"+ - "\u000e\u0000\u0000\u0a04\u0a05\u0007\u0013\u0000\u0000\u0a05\u0a06\u0007"+ - "\u0018\u0000\u0000\u0a06\u0a07\u0007\b\u0000\u0000\u0a07\u015e\u0001\u0000"+ - "\u0000\u0000\u0a08\u0a09\u0007\u000e\u0000\u0000\u0a09\u0a0a\u0007\u0013"+ - "\u0000\u0000\u0a0a\u0a0b\u0007\t\u0000\u0000\u0a0b\u0a0c\u0007\u0010\u0000"+ - "\u0000\u0a0c\u0160\u0001\u0000\u0000\u0000\u0a0d\u0a0e\u0007\u000e\u0000"+ - "\u0000\u0a0e\u0a0f\u0007\t\u0000\u0000\u0a0f\u0a10\u0007\u001b\u0000\u0000"+ - "\u0a10\u0162\u0001\u0000\u0000\u0000\u0a11\u0a12\u0007\u000e\u0000\u0000"+ - "\u0a12\u0a13\u0007\u0016\u0000\u0000\u0a13\u0a14\u0007\r\u0000\u0000\u0a14"+ - "\u0a15\u0007\t\u0000\u0000\u0a15\u0a16\u0007\u0013\u0000\u0000\u0a16\u0a17"+ - "\u0007\r\u0000\u0000\u0a17\u0164\u0001\u0000\u0000\u0000\u0a18\u0a19\u0007"+ - "\u000e\u0000\u0000\u0a19\u0a1a\u0007\b\u0000\u0000\u0a1a\u0a1b\u0007\u000e"+ - "\u0000\u0000\u0a1b\u0a1c\u0007\u0006\u0000\u0000\u0a1c\u0a1d\u0007\n\u0000"+ - "\u0000\u0a1d\u0166\u0001\u0000\u0000\u0000\u0a1e\u0a1f\u0007\f\u0000\u0000"+ - "\u0a1f\u0a20\u0007\u0005\u0000\u0000\u0a20\u0a21\u0007\u0010\u0000\u0000"+ - "\u0a21\u0a22\u0007\u0005\u0000\u0000\u0a22\u0168\u0001\u0000\u0000\u0000"+ - "\u0a23\u0a24\u0007\f\u0000\u0000\u0a24\u0a25\u0007\u0005\u0000\u0000\u0a25"+ - "\u0a26\u0007\u0010\u0000\u0000\u0a26\u0a27\u0007\u0005\u0000\u0000\u0a27"+ - "\u0a28\u0007\u0012\u0000\u0000\u0a28\u0a29\u0007\u0005\u0000\u0000\u0a29"+ - "\u0a2a\u0007\t\u0000\u0000\u0a2a\u0a2b\u0007\n\u0000\u0000\u0a2b\u016a"+ - "\u0001\u0000\u0000\u0000\u0a2c\u0a2d\u0007\f\u0000\u0000\u0a2d\u0a2e\u0007"+ - "\u0005\u0000\u0000\u0a2e\u0a2f\u0007\b\u0000\u0000\u0a2f\u016c\u0001\u0000"+ - "\u0000\u0000\u0a30\u0a31\u0007\f\u0000\u0000\u0a31\u0a32\u0007\n\u0000"+ - "\u0000\u0a32\u0a33\u0007\u0005\u0000\u0000\u0a33\u0a34\u0007\u0006\u0000"+ - "\u0000\u0a34\u0a35\u0007\u0006\u0000\u0000\u0a35\u0a36\u0007\u0013\u0000"+ - "\u0000\u0a36\u0a37\u0007\u000e\u0000\u0000\u0a37\u0a38\u0007\u0005\u0000"+ - "\u0000\u0a38\u0a39\u0007\u0010\u0000\u0000\u0a39\u0a3a\u0007\n\u0000\u0000"+ - "\u0a3a\u016e\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0007\f\u0000\u0000\u0a3c"+ - "\u0a3d\u0007\n\u0000\u0000\u0a3d\u0a3e\u0007\u000e\u0000\u0000\u0a3e\u0a3f"+ - "\u0007\u0006\u0000\u0000\u0a3f\u0a40\u0007\u0005\u0000\u0000\u0a40\u0a41"+ - "\u0007\r\u0000\u0000\u0a41\u0a42\u0007\n\u0000\u0000\u0a42\u0170\u0001"+ - "\u0000\u0000\u0000\u0a43\u0a44\u0007\f\u0000\u0000\u0a44\u0a45\u0007\n"+ - "\u0000\u0000\u0a45\u0a46\u0007\u0019\u0000\u0000\u0a46\u0a47\u0007\u0005"+ - "\u0000\u0000\u0a47\u0a48\u0007\u0016\u0000\u0000\u0a48\u0a49\u0007\u0006"+ - "\u0000\u0000\u0a49\u0a4a\u0007\u0010\u0000\u0000\u0a4a\u0a4b\u0007\t\u0000"+ - "\u0000\u0a4b\u0172\u0001\u0000\u0000\u0000\u0a4c\u0a4d\u0007\f\u0000\u0000"+ - "\u0a4d\u0a4e\u0007\n\u0000\u0000\u0a4e\u0a4f\u0007\u0019\u0000\u0000\u0a4f"+ - "\u0a50\u0007\n\u0000\u0000\u0a50\u0a51\u0007\r\u0000\u0000\u0a51\u0a52"+ - "\u0007\r\u0000\u0000\u0a52\u0a53\u0007\n\u0000\u0000\u0a53\u0a54\u0007"+ - "\f\u0000\u0000\u0a54\u0174\u0001\u0000\u0000\u0000\u0a55\u0a56\u0007\f"+ - "\u0000\u0000\u0a56\u0a57\u0007\n\u0000\u0000\u0a57\u0a58\u0007\u0019\u0000"+ - "\u0000\u0a58\u0a59\u0007\u0011\u0000\u0000\u0a59\u0a5a\u0007\u0007\u0000"+ - "\u0000\u0a5a\u0a5b\u0007\n\u0000\u0000\u0a5b\u0a5c\u0007\r\u0000\u0000"+ - "\u0a5c\u0176\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0007\f\u0000\u0000\u0a5e"+ - "\u0a5f\u0007\n\u0000\u0000\u0a5f\u0a60\u0007\u0006\u0000\u0000\u0a60\u0a61"+ - "\u0007\n\u0000\u0000\u0a61\u0a62\u0007\u0010\u0000\u0000\u0a62\u0a63\u0007"+ - "\n\u0000\u0000\u0a63\u0178\u0001\u0000\u0000\u0000\u0a64\u0a65\u0007\f"+ - "\u0000\u0000\u0a65\u0a66\u0007\n\u0000\u0000\u0a66\u0a67\u0007\u0006\u0000"+ - "\u0000\u0a67\u0a68\u0007\u0011\u0000\u0000\u0a68\u0a69\u0007\u000f\u0000"+ - "\u0000\u0a69\u0a6a\u0007\u0011\u0000\u0000\u0a6a\u0a6b\u0007\u0010\u0000"+ - "\u0000\u0a6b\u0a6c\u0007\n\u0000\u0000\u0a6c\u0a6d\u0007\r\u0000\u0000"+ - "\u0a6d\u017a\u0001\u0000\u0000\u0000\u0a6e\u0a6f\u0007\f\u0000\u0000\u0a6f"+ - "\u0a70\u0007\n\u0000\u0000\u0a70\u0a71\u0007\u0006\u0000\u0000\u0a71\u0a72"+ - "\u0007\u0011\u0000\u0000\u0a72\u0a73\u0007\u000f\u0000\u0000\u0a73\u0a74"+ - "\u0007\u0011\u0000\u0000\u0a74\u0a75\u0007\u0010\u0000\u0000\u0a75\u0a76"+ - "\u0007\n\u0000\u0000\u0a76\u0a77\u0007\r\u0000\u0000\u0a77\u0a78\u0007"+ - "\t\u0000\u0000\u0a78\u017c\u0001\u0000\u0000\u0000\u0a79\u0a7a\u0007\f"+ - "\u0000\u0000\u0a7a\u0a7b\u0007\u0011\u0000\u0000\u0a7b\u0a7c\u0007\u000e"+ - "\u0000\u0000\u0a7c\u0a7d\u0007\u0010\u0000\u0000\u0a7d\u0a7e\u0007\u0011"+ - "\u0000\u0000\u0a7e\u0a7f\u0007\u0013\u0000\u0000\u0a7f\u0a80\u0007\u0007"+ - "\u0000\u0000\u0a80\u0a81\u0007\u0005\u0000\u0000\u0a81\u0a82\u0007\r\u0000"+ - "\u0000\u0a82\u0a83\u0007\b\u0000\u0000\u0a83\u017e\u0001\u0000\u0000\u0000"+ - "\u0a84\u0a85\u0007\f\u0000\u0000\u0a85\u0a86\u0007\u0011\u0000\u0000\u0a86"+ - "\u0a87\u0007\t\u0000\u0000\u0a87\u0a88\u0007\u0005\u0000\u0000\u0a88\u0a89"+ - "\u0007\u0012\u0000\u0000\u0a89\u0a8a\u0007\u0006\u0000\u0000\u0a8a\u0a8b"+ - "\u0007\n\u0000\u0000\u0a8b\u0180\u0001\u0000\u0000\u0000\u0a8c\u0a8d\u0007"+ - "\f\u0000\u0000\u0a8d\u0a8e\u0007\u0011\u0000\u0000\u0a8e\u0a8f\u0007\t"+ - "\u0000\u0000\u0a8f\u0a90\u0007\u000e\u0000\u0000\u0a90\u0a91\u0007\u0005"+ - "\u0000\u0000\u0a91\u0a92\u0007\r\u0000\u0000\u0a92\u0a93\u0007\f\u0000"+ - "\u0000\u0a93\u0182\u0001\u0000\u0000\u0000\u0a94\u0a95\u0007\f\u0000\u0000"+ - "\u0a95\u0a96\u0007\u0013\u0000\u0000\u0a96\u0a97\u0007\u000e\u0000\u0000"+ - "\u0a97\u0a98\u0007\u0016\u0000\u0000\u0a98\u0a99\u0007\u000f\u0000\u0000"+ - "\u0a99\u0a9a\u0007\n\u0000\u0000\u0a9a\u0a9b\u0007\u0007\u0000\u0000\u0a9b"+ - "\u0a9c\u0007\u0010\u0000\u0000\u0a9c\u0184\u0001\u0000\u0000\u0000\u0a9d"+ - "\u0a9e\u0007\f\u0000\u0000\u0a9e\u0a9f\u0007\u0013\u0000\u0000\u0a9f\u0aa0"+ - "\u0007\u000f\u0000\u0000\u0aa0\u0aa1\u0007\u0005\u0000\u0000\u0aa1\u0aa2"+ - "\u0007\u0011\u0000\u0000\u0aa2\u0aa3\u0007\u0007\u0000\u0000\u0aa3\u0186"+ - "\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0007\f\u0000\u0000\u0aa5\u0aa6\u0007"+ - "\u0013\u0000\u0000\u0aa6\u0aa7\u0007\u0016\u0000\u0000\u0aa7\u0aa8\u0007"+ - "\u0012\u0000\u0000\u0aa8\u0aa9\u0007\u0006\u0000\u0000\u0aa9\u0aaa\u0007"+ - "\n\u0000\u0000\u0aaa\u0188\u0001\u0000\u0000\u0000\u0aab\u0aac\u0007\f"+ - "\u0000\u0000\u0aac\u0aad\u0007\r\u0000\u0000\u0aad\u0aae\u0007\u0013\u0000"+ - "\u0000\u0aae\u0aaf\u0007\u0018\u0000\u0000\u0aaf\u018a\u0001\u0000\u0000"+ - "\u0000\u0ab0\u0ab1\u0007\n\u0000\u0000\u0ab1\u0ab2\u0007\u0005\u0000\u0000"+ - "\u0ab2\u0ab3\u0007\u000e\u0000\u0000\u0ab3\u0ab4\u0007\u0014\u0000\u0000"+ - "\u0ab4\u018c\u0001\u0000\u0000\u0000\u0ab5\u0ab6\u0007\n\u0000\u0000\u0ab6"+ - "\u0ab7\u0007\u0007\u0000\u0000\u0ab7\u0ab8\u0007\u0005\u0000\u0000\u0ab8"+ - "\u0ab9\u0007\u0012\u0000\u0000\u0ab9\u0aba\u0007\u0006\u0000\u0000\u0aba"+ - "\u0abb\u0007\n\u0000\u0000\u0abb\u018e\u0001\u0000\u0000\u0000\u0abc\u0abd"+ - "\u0007\n\u0000\u0000\u0abd\u0abe\u0007\u0007\u0000\u0000\u0abe\u0abf\u0007"+ - "\u000e\u0000\u0000\u0abf\u0ac0\u0007\u0013\u0000\u0000\u0ac0\u0ac1\u0007"+ - "\f\u0000\u0000\u0ac1\u0ac2\u0007\u0011\u0000\u0000\u0ac2\u0ac3\u0007\u0007"+ - "\u0000\u0000\u0ac3\u0ac4\u0007\u0017\u0000\u0000\u0ac4\u0190\u0001\u0000"+ - "\u0000\u0000\u0ac5\u0ac6\u0007\n\u0000\u0000\u0ac6\u0ac7\u0007\u0007\u0000"+ - "\u0000\u0ac7\u0ac8\u0007\u000e\u0000\u0000\u0ac8\u0ac9\u0007\r\u0000\u0000"+ - "\u0ac9\u0aca\u0007\b\u0000\u0000\u0aca\u0acb\u0007\u0018\u0000\u0000\u0acb"+ - "\u0acc\u0007\u0010\u0000\u0000\u0acc\u0acd\u0007\n\u0000\u0000\u0acd\u0ace"+ - "\u0007\f\u0000\u0000\u0ace\u0192\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0007"+ - "\n\u0000\u0000\u0ad0\u0ad1\u0007\u0007\u0000\u0000\u0ad1\u0ad2\u0007\u0016"+ - "\u0000\u0000\u0ad2\u0ad3\u0007\u000f\u0000\u0000\u0ad3\u0194\u0001\u0000"+ - "\u0000\u0000\u0ad4\u0ad5\u0007\n\u0000\u0000\u0ad5\u0ad6\u0007\t\u0000"+ - "\u0000\u0ad6\u0ad7\u0007\u000e\u0000\u0000\u0ad7\u0ad8\u0007\u0005\u0000"+ - "\u0000\u0ad8\u0ad9\u0007\u0018\u0000\u0000\u0ad9\u0ada\u0007\n\u0000\u0000"+ - "\u0ada\u0196\u0001\u0000\u0000\u0000\u0adb\u0adc\u0007\n\u0000\u0000\u0adc"+ - "\u0add\u0007\u001b\u0000\u0000\u0add\u0ade\u0007\n\u0000\u0000\u0ade\u0adf"+ - "\u0007\u0007\u0000\u0000\u0adf\u0ae0\u0007\u0010\u0000\u0000\u0ae0\u0198"+ - "\u0001\u0000\u0000\u0000\u0ae1\u0ae2\u0007\n\u0000\u0000\u0ae2\u0ae3\u0007"+ - "\u001a\u0000\u0000\u0ae3\u0ae4\u0007\u000e\u0000\u0000\u0ae4\u0ae5\u0007"+ - "\u0006\u0000\u0000\u0ae5\u0ae6\u0007\u0016\u0000\u0000\u0ae6\u0ae7\u0007"+ - "\f\u0000\u0000\u0ae7\u0ae8\u0007\n\u0000\u0000\u0ae8\u019a\u0001\u0000"+ - "\u0000\u0000\u0ae9\u0aea\u0007\n\u0000\u0000\u0aea\u0aeb\u0007\u001a\u0000"+ - "\u0000\u0aeb\u0aec\u0007\u000e\u0000\u0000\u0aec\u0aed\u0007\u0006\u0000"+ - "\u0000\u0aed\u0aee\u0007\u0016\u0000\u0000\u0aee\u0aef\u0007\f\u0000\u0000"+ - "\u0aef\u0af0\u0007\u0011\u0000\u0000\u0af0\u0af1\u0007\u0007\u0000\u0000"+ - "\u0af1\u0af2\u0007\u0017\u0000\u0000\u0af2\u019c\u0001\u0000\u0000\u0000"+ - "\u0af3\u0af4\u0007\n\u0000\u0000\u0af4\u0af5\u0007\u001a\u0000\u0000\u0af5"+ - "\u0af6\u0007\u000e\u0000\u0000\u0af6\u0af7\u0007\u0006\u0000\u0000\u0af7"+ - "\u0af8\u0007\u0016\u0000\u0000\u0af8\u0af9\u0007\t\u0000\u0000\u0af9\u0afa"+ - "\u0007\u0011\u0000\u0000\u0afa\u0afb\u0007\u001b\u0000\u0000\u0afb\u0afc"+ - "\u0007\n\u0000\u0000\u0afc\u019e\u0001\u0000\u0000\u0000\u0afd\u0afe\u0007"+ - "\n\u0000\u0000\u0afe\u0aff\u0007\u001a\u0000\u0000\u0aff\u0b00\u0007\n"+ - "\u0000\u0000\u0b00\u0b01\u0007\u000e\u0000\u0000\u0b01\u0b02\u0007\u0016"+ - "\u0000\u0000\u0b02\u0b03\u0007\u0010\u0000\u0000\u0b03\u0b04\u0007\n\u0000"+ - "\u0000\u0b04\u01a0\u0001\u0000\u0000\u0000\u0b05\u0b06\u0007\n\u0000\u0000"+ - "\u0b06\u0b07\u0007\u001a\u0000\u0000\u0b07\u0b08\u0007\u0018\u0000\u0000"+ - "\u0b08\u0b09\u0007\u0006\u0000\u0000\u0b09\u0b0a\u0007\u0005\u0000\u0000"+ - "\u0b0a\u0b0b\u0007\u0011\u0000\u0000\u0b0b\u0b0c\u0007\u0007\u0000\u0000"+ - "\u0b0c\u01a2\u0001\u0000\u0000\u0000\u0b0d\u0b0e\u0007\n\u0000\u0000\u0b0e"+ - "\u0b0f\u0007\u001a\u0000\u0000\u0b0f\u0b10\u0007\u0010\u0000\u0000\u0b10"+ - "\u0b11\u0007\n\u0000\u0000\u0b11\u0b12\u0007\u0007\u0000\u0000\u0b12\u0b13"+ - "\u0007\t\u0000\u0000\u0b13\u0b14\u0007\u0011\u0000\u0000\u0b14\u0b15\u0007"+ - "\u0013\u0000\u0000\u0b15\u0b16\u0007\u0007\u0000\u0000\u0b16\u01a4\u0001"+ - "\u0000\u0000\u0000\u0b17\u0b18\u0007\n\u0000\u0000\u0b18\u0b19\u0007\u001a"+ - "\u0000\u0000\u0b19\u0b1a\u0007\u0010\u0000\u0000\u0b1a\u0b1b\u0007\n\u0000"+ - "\u0000\u0b1b\u0b1c\u0007\r\u0000\u0000\u0b1c\u0b1d\u0007\u0007\u0000\u0000"+ - "\u0b1d\u0b1e\u0007\u0005\u0000\u0000\u0b1e\u0b1f\u0007\u0006\u0000\u0000"+ - "\u0b1f\u01a6\u0001\u0000\u0000\u0000\u0b20\u0b21\u0007\u0019\u0000\u0000"+ - "\u0b21\u0b22\u0007\u0005\u0000\u0000\u0b22\u0b23\u0007\u000f\u0000\u0000"+ - "\u0b23\u0b24\u0007\u0011\u0000\u0000\u0b24\u0b25\u0007\u0006\u0000\u0000"+ - "\u0b25\u0b26\u0007\b\u0000\u0000\u0b26\u01a8\u0001\u0000\u0000\u0000\u0b27"+ - "\u0b28\u0007\u0019\u0000\u0000\u0b28\u0b29\u0007\u0011\u0000\u0000\u0b29"+ - "\u0b2a\u0007\r\u0000\u0000\u0b2a\u0b2b\u0007\t\u0000\u0000\u0b2b\u0b2c"+ - "\u0007\u0010\u0000\u0000\u0b2c\u01aa\u0001\u0000\u0000\u0000\u0b2d\u0b2e"+ - "\u0007\u0019\u0000\u0000\u0b2e\u0b2f\u0007\u0013\u0000\u0000\u0b2f\u0b30"+ - "\u0007\u0006\u0000\u0000\u0b30\u0b31\u0007\u0006\u0000\u0000\u0b31\u0b32"+ - "\u0007\u0013\u0000\u0000\u0b32\u0b33\u0007\u001d\u0000\u0000\u0b33\u0b34"+ - "\u0007\u0011\u0000\u0000\u0b34\u0b35\u0007\u0007\u0000\u0000\u0b35\u0b36"+ - "\u0007\u0017\u0000\u0000\u0b36\u01ac\u0001\u0000\u0000\u0000\u0b37\u0b38"+ - "\u0007\u0019\u0000\u0000\u0b38\u0b39\u0007\u0013\u0000\u0000\u0b39\u0b3a"+ - "\u0007\r\u0000\u0000\u0b3a\u0b3b\u0007\u000e\u0000\u0000\u0b3b\u0b3c\u0007"+ - "\n\u0000\u0000\u0b3c\u01ae\u0001\u0000\u0000\u0000\u0b3d\u0b3e\u0007\u0019"+ - "\u0000\u0000\u0b3e\u0b3f\u0007\u0013\u0000\u0000\u0b3f\u0b40\u0007\r\u0000"+ - "\u0000\u0b40\u0b41\u0007\u001d\u0000\u0000\u0b41\u0b42\u0007\u0005\u0000"+ - "\u0000\u0b42\u0b43\u0007\r\u0000\u0000\u0b43\u0b44\u0007\f\u0000\u0000"+ - "\u0b44\u01b0\u0001\u0000\u0000\u0000\u0b45\u0b46\u0007\u0019\u0000\u0000"+ - "\u0b46\u0b47\u0007\u0016\u0000\u0000\u0b47\u0b48\u0007\u0007\u0000\u0000"+ - "\u0b48\u0b49\u0007\u000e\u0000\u0000\u0b49\u0b4a\u0007\u0010\u0000\u0000"+ - "\u0b4a\u0b4b\u0007\u0011\u0000\u0000\u0b4b\u0b4c\u0007\u0013\u0000\u0000"+ - "\u0b4c\u0b4d\u0007\u0007\u0000\u0000\u0b4d\u01b2\u0001\u0000\u0000\u0000"+ - "\u0b4e\u0b4f\u0007\u0019\u0000\u0000\u0b4f\u0b50\u0007\u0016\u0000\u0000"+ - "\u0b50\u0b51\u0007\u0007\u0000\u0000\u0b51\u0b52\u0007\u000e\u0000\u0000"+ - "\u0b52\u0b53\u0007\u0010\u0000\u0000\u0b53\u0b54\u0007\u0011\u0000\u0000"+ - "\u0b54\u0b55\u0007\u0013\u0000\u0000\u0b55\u0b56\u0007\u0007\u0000\u0000"+ - "\u0b56\u0b57\u0007\t\u0000\u0000\u0b57\u01b4\u0001\u0000\u0000\u0000\u0b58"+ - "\u0b59\u0007\u0017\u0000\u0000\u0b59\u0b5a\u0007\u0006\u0000\u0000\u0b5a"+ - "\u0b5b\u0007\u0013\u0000\u0000\u0b5b\u0b5c\u0007\u0012\u0000\u0000\u0b5c"+ - "\u0b5d\u0007\u0005\u0000\u0000\u0b5d\u0b5e\u0007\u0006\u0000\u0000\u0b5e"+ - "\u01b6\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0007\u0017\u0000\u0000\u0b60"+ - "\u0b61\u0007\r\u0000\u0000\u0b61\u0b62\u0007\u0005\u0000\u0000\u0b62\u0b63"+ - "\u0007\u0007\u0000\u0000\u0b63\u0b64\u0007\u0010\u0000\u0000\u0b64\u0b65"+ - "\u0007\n\u0000\u0000\u0b65\u0b66\u0007\f\u0000\u0000\u0b66\u01b8\u0001"+ - "\u0000\u0000\u0000\u0b67\u0b68\u0007\u0014\u0000\u0000\u0b68\u0b69\u0007"+ - "\u0005\u0000\u0000\u0b69\u0b6a\u0007\u0007\u0000\u0000\u0b6a\u0b6b\u0007"+ - "\f\u0000\u0000\u0b6b\u0b6c\u0007\u0006\u0000\u0000\u0b6c\u0b6d\u0007\n"+ - "\u0000\u0000\u0b6d\u0b6e\u0007\r\u0000\u0000\u0b6e\u01ba\u0001\u0000\u0000"+ - "\u0000\u0b6f\u0b70\u0007\u0014\u0000\u0000\u0b70\u0b71\u0007\n\u0000\u0000"+ - "\u0b71\u0b72\u0007\u0005\u0000\u0000\u0b72\u0b73\u0007\f\u0000\u0000\u0b73"+ - "\u0b74\u0007\n\u0000\u0000\u0b74\u0b75\u0007\r\u0000\u0000\u0b75\u01bc"+ - "\u0001\u0000\u0000\u0000\u0b76\u0b77\u0007\u0014\u0000\u0000\u0b77\u0b78"+ - "\u0007\u0013\u0000\u0000\u0b78\u0b79\u0007\u0006\u0000\u0000\u0b79\u0b7a"+ - "\u0007\f\u0000\u0000\u0b7a\u01be\u0001\u0000\u0000\u0000\u0b7b\u0b7c\u0007"+ - "\u0014\u0000\u0000\u0b7c\u0b7d\u0007\u0013\u0000\u0000\u0b7d\u0b7e\u0007"+ - "\u0016\u0000\u0000\u0b7e\u0b7f\u0007\r\u0000\u0000\u0b7f\u01c0\u0001\u0000"+ - "\u0000\u0000\u0b80\u0b81\u0007\u0011\u0000\u0000\u0b81\u0b82\u0007\f\u0000"+ - "\u0000\u0b82\u0b83\u0007\n\u0000\u0000\u0b83\u0b84\u0007\u0007\u0000\u0000"+ - "\u0b84\u0b85\u0007\u0010\u0000\u0000\u0b85\u0b86\u0007\u0011\u0000\u0000"+ - "\u0b86\u0b87\u0007\u0010\u0000\u0000\u0b87\u0b88\u0007\b\u0000\u0000\u0b88"+ - "\u01c2\u0001\u0000\u0000\u0000\u0b89\u0b8a\u0007\u0011\u0000\u0000\u0b8a"+ - "\u0b8b\u0007\u0019\u0000\u0000\u0b8b\u01c4\u0001\u0000\u0000\u0000\u0b8c"+ - "\u0b8d\u0007\u0011\u0000\u0000\u0b8d\u0b8e\u0007\u000f\u0000\u0000\u0b8e"+ - "\u0b8f\u0007\u000f\u0000\u0000\u0b8f\u0b90\u0007\n\u0000\u0000\u0b90\u0b91"+ - "\u0007\f\u0000\u0000\u0b91\u0b92\u0007\u0011\u0000\u0000\u0b92\u0b93\u0007"+ - "\u0005\u0000\u0000\u0b93\u0b94\u0007\u0010\u0000\u0000\u0b94\u0b95\u0007"+ - "\n\u0000\u0000\u0b95\u01c6\u0001\u0000\u0000\u0000\u0b96\u0b97\u0007\u0011"+ - "\u0000\u0000\u0b97\u0b98\u0007\u000f\u0000\u0000\u0b98\u0b99\u0007\u000f"+ - "\u0000\u0000\u0b99\u0b9a\u0007\u0016\u0000\u0000\u0b9a\u0b9b\u0007\u0010"+ - "\u0000\u0000\u0b9b\u0b9c\u0007\u0005\u0000\u0000\u0b9c\u0b9d\u0007\u0012"+ - "\u0000\u0000\u0b9d\u0b9e\u0007\u0006\u0000\u0000\u0b9e\u0b9f\u0007\n\u0000"+ - "\u0000\u0b9f\u01c8\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0007\u0011\u0000"+ - "\u0000\u0ba1\u0ba2\u0007\u000f\u0000\u0000\u0ba2\u0ba3\u0007\u0018\u0000"+ - "\u0000\u0ba3\u0ba4\u0007\u0006\u0000\u0000\u0ba4\u0ba5\u0007\u0011\u0000"+ - "\u0000\u0ba5\u0ba6\u0007\u000e\u0000\u0000\u0ba6\u0ba7\u0007\u0011\u0000"+ - "\u0000\u0ba7\u0ba8\u0007\u0010\u0000\u0000\u0ba8\u01ca\u0001\u0000\u0000"+ - "\u0000\u0ba9\u0baa\u0007\u0011\u0000\u0000\u0baa\u0bab\u0007\u0007\u0000"+ - "\u0000\u0bab\u0bac\u0007\u000e\u0000\u0000\u0bac\u0bad\u0007\u0006\u0000"+ - "\u0000\u0bad\u0bae\u0007\u0016\u0000\u0000\u0bae\u0baf\u0007\f\u0000\u0000"+ - "\u0baf\u0bb0\u0007\u0011\u0000\u0000\u0bb0\u0bb1\u0007\u0007\u0000\u0000"+ - "\u0bb1\u0bb2\u0007\u0017\u0000\u0000\u0bb2\u01cc\u0001\u0000\u0000\u0000"+ - "\u0bb3\u0bb4\u0007\u0011\u0000\u0000\u0bb4\u0bb5\u0007\u0007\u0000\u0000"+ - "\u0bb5\u0bb6\u0007\u000e\u0000\u0000\u0bb6\u0bb7\u0007\r\u0000\u0000\u0bb7"+ - "\u0bb8\u0007\n\u0000\u0000\u0bb8\u0bb9\u0007\u000f\u0000\u0000\u0bb9\u0bba"+ - "\u0007\n\u0000\u0000\u0bba\u0bbb\u0007\u0007\u0000\u0000\u0bbb\u0bbc\u0007"+ - "\u0010\u0000\u0000\u0bbc\u01ce\u0001\u0000\u0000\u0000\u0bbd\u0bbe\u0007"+ - "\u0011\u0000\u0000\u0bbe\u0bbf\u0007\u0007\u0000\u0000\u0bbf\u0bc0\u0007"+ - "\f\u0000\u0000\u0bc0\u0bc1\u0007\n\u0000\u0000\u0bc1\u0bc2\u0007\u001a"+ - "\u0000\u0000\u0bc2\u01d0\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0007\u0011"+ - "\u0000\u0000\u0bc4\u0bc5\u0007\u0007\u0000\u0000\u0bc5\u0bc6\u0007\f\u0000"+ - "\u0000\u0bc6\u0bc7\u0007\n\u0000\u0000\u0bc7\u0bc8\u0007\u001a\u0000\u0000"+ - "\u0bc8\u0bc9\u0007\n\u0000\u0000\u0bc9\u0bca\u0007\t\u0000\u0000\u0bca"+ - "\u01d2\u0001\u0000\u0000\u0000\u0bcb\u0bcc\u0007\u0011\u0000\u0000\u0bcc"+ - "\u0bcd\u0007\u0007\u0000\u0000\u0bcd\u0bce\u0007\u0014\u0000\u0000\u0bce"+ - "\u0bcf\u0007\n\u0000\u0000\u0bcf\u0bd0\u0007\r\u0000\u0000\u0bd0\u0bd1"+ - "\u0007\u0011\u0000\u0000\u0bd1\u0bd2\u0007\u0010\u0000\u0000\u0bd2\u01d4"+ - "\u0001\u0000\u0000\u0000\u0bd3\u0bd4\u0007\u0011\u0000\u0000\u0bd4\u0bd5"+ - "\u0007\u0007\u0000\u0000\u0bd5\u0bd6\u0007\u0014\u0000\u0000\u0bd6\u0bd7"+ - "\u0007\n\u0000\u0000\u0bd7\u0bd8\u0007\r\u0000\u0000\u0bd8\u0bd9\u0007"+ - "\u0011\u0000\u0000\u0bd9\u0bda\u0007\u0010\u0000\u0000\u0bda\u0bdb\u0007"+ - "\t\u0000\u0000\u0bdb\u01d6\u0001\u0000\u0000\u0000\u0bdc\u0bdd\u0007\u0011"+ - "\u0000\u0000\u0bdd\u0bde\u0007\u0007\u0000\u0000\u0bde\u0bdf\u0007\u0006"+ - "\u0000\u0000\u0bdf\u0be0\u0007\u0011\u0000\u0000\u0be0\u0be1\u0007\u0007"+ - "\u0000\u0000\u0be1\u0be2\u0007\n\u0000\u0000\u0be2\u01d8\u0001\u0000\u0000"+ - "\u0000\u0be3\u0be4\u0007\u0011\u0000\u0000\u0be4\u0be5\u0007\u0007\u0000"+ - "\u0000\u0be5\u0be6\u0007\t\u0000\u0000\u0be6\u0be7\u0007\n\u0000\u0000"+ - "\u0be7\u0be8\u0007\u0007\u0000\u0000\u0be8\u0be9\u0007\t\u0000\u0000\u0be9"+ - "\u0bea\u0007\u0011\u0000\u0000\u0bea\u0beb\u0007\u0010\u0000\u0000\u0beb"+ - "\u0bec\u0007\u0011\u0000\u0000\u0bec\u0bed\u0007\u001b\u0000\u0000\u0bed"+ - "\u0bee\u0007\n\u0000\u0000\u0bee\u01da\u0001\u0000\u0000\u0000\u0bef\u0bf0"+ - "\u0007\u0011\u0000\u0000\u0bf0\u0bf1\u0007\u0007\u0000\u0000\u0bf1\u0bf2"+ - "\u0007\t\u0000\u0000\u0bf2\u0bf3\u0007\n\u0000\u0000\u0bf3\u0bf4\u0007"+ - "\r\u0000\u0000\u0bf4\u0bf5\u0007\u0010\u0000\u0000\u0bf5\u01dc\u0001\u0000"+ - "\u0000\u0000\u0bf6\u0bf7\u0007\u0011\u0000\u0000\u0bf7\u0bf8\u0007\u0007"+ - "\u0000\u0000\u0bf8\u0bf9\u0007\t\u0000\u0000\u0bf9\u0bfa\u0007\u0010\u0000"+ - "\u0000\u0bfa\u0bfb\u0007\n\u0000\u0000\u0bfb\u0bfc\u0007\u0005\u0000\u0000"+ - "\u0bfc\u0bfd\u0007\f\u0000\u0000\u0bfd\u01de\u0001\u0000\u0000\u0000\u0bfe"+ - "\u0bff\u0007\u0011\u0000\u0000\u0bff\u0c00\u0007\u0007\u0000\u0000\u0c00"+ - "\u0c01\u0007\u001b\u0000\u0000\u0c01\u0c02\u0007\u0013\u0000\u0000\u0c02"+ - "\u0c03\u0007\u0015\u0000\u0000\u0c03\u0c04\u0007\n\u0000\u0000\u0c04\u0c05"+ - "\u0007\r\u0000\u0000\u0c05\u01e0\u0001\u0000\u0000\u0000\u0c06\u0c07\u0007"+ - "\u0011\u0000\u0000\u0c07\u0c08\u0007\t\u0000\u0000\u0c08\u0c09\u0007\u0013"+ - "\u0000\u0000\u0c09\u0c0a\u0007\u0006\u0000\u0000\u0c0a\u0c0b\u0007\u0005"+ - "\u0000\u0000\u0c0b\u0c0c\u0007\u0010\u0000\u0000\u0c0c\u0c0d\u0007\u0011"+ - "\u0000\u0000\u0c0d\u0c0e\u0007\u0013\u0000\u0000\u0c0e\u0c0f\u0007\u0007"+ - "\u0000\u0000\u0c0f\u01e2\u0001\u0000\u0000\u0000\u0c10\u0c11\u0007\u0015"+ - "\u0000\u0000\u0c11\u0c12\u0007\n\u0000\u0000\u0c12\u0c13\u0007\b\u0000"+ - "\u0000\u0c13\u01e4\u0001\u0000\u0000\u0000\u0c14\u0c15\u0007\u0006\u0000"+ - "\u0000\u0c15\u0c16\u0007\u0005\u0000\u0000\u0c16\u0c17\u0007\u0012\u0000"+ - "\u0000\u0c17\u0c18\u0007\n\u0000\u0000\u0c18\u0c19\u0007\u0006\u0000\u0000"+ - "\u0c19\u01e6\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0007\u0006\u0000\u0000"+ - "\u0c1b\u0c1c\u0007\u0005\u0000\u0000\u0c1c\u0c1d\u0007\u0007\u0000\u0000"+ - "\u0c1d\u0c1e\u0007\u0017\u0000\u0000\u0c1e\u0c1f\u0007\u0016\u0000\u0000"+ - "\u0c1f\u0c20\u0007\u0005\u0000\u0000\u0c20\u0c21\u0007\u0017\u0000\u0000"+ - "\u0c21\u0c22\u0007\n\u0000\u0000\u0c22\u01e8\u0001\u0000\u0000\u0000\u0c23"+ - "\u0c24\u0007\u0006\u0000\u0000\u0c24\u0c25\u0007\u0005\u0000\u0000\u0c25"+ - "\u0c26\u0007\r\u0000\u0000\u0c26\u0c27\u0007\u0017\u0000\u0000\u0c27\u0c28"+ - "\u0007\n\u0000\u0000\u0c28\u01ea\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0007"+ - "\u0006\u0000\u0000\u0c2a\u0c2b\u0007\u0005\u0000\u0000\u0c2b\u0c2c\u0007"+ - "\t\u0000\u0000\u0c2c\u0c2d\u0007\u0010\u0000\u0000\u0c2d\u01ec\u0001\u0000"+ - "\u0000\u0000\u0c2e\u0c2f\u0007\u0006\u0000\u0000\u0c2f\u0c30\u0007\n\u0000"+ - "\u0000\u0c30\u0c31\u0007\u0005\u0000\u0000\u0c31\u0c32\u0007\u0015\u0000"+ - "\u0000\u0c32\u0c33\u0007\u0018\u0000\u0000\u0c33\u0c34\u0007\r\u0000\u0000"+ - "\u0c34\u0c35\u0007\u0013\u0000\u0000\u0c35\u0c36\u0007\u0013\u0000\u0000"+ - "\u0c36\u0c37\u0007\u0019\u0000\u0000\u0c37\u01ee\u0001\u0000\u0000\u0000"+ - "\u0c38\u0c39\u0007\u0006\u0000\u0000\u0c39\u0c3a\u0007\n\u0000\u0000\u0c3a"+ - "\u0c3b\u0007\u001b\u0000\u0000\u0c3b\u0c3c\u0007\n\u0000\u0000\u0c3c\u0c3d"+ - "\u0007\u0006\u0000\u0000\u0c3d\u01f0\u0001\u0000\u0000\u0000\u0c3e\u0c3f"+ - "\u0007\u0006\u0000\u0000\u0c3f\u0c40\u0007\u0011\u0000\u0000\u0c40\u0c41"+ - "\u0007\t\u0000\u0000\u0c41\u0c42\u0007\u0010\u0000\u0000\u0c42\u0c43\u0007"+ - "\n\u0000\u0000\u0c43\u0c44\u0007\u0007\u0000\u0000\u0c44\u01f2\u0001\u0000"+ - "\u0000\u0000\u0c45\u0c46\u0007\u0006\u0000\u0000\u0c46\u0c47\u0007\u0013"+ - "\u0000\u0000\u0c47\u0c48\u0007\u0005\u0000\u0000\u0c48\u0c49\u0007\f\u0000"+ - "\u0000\u0c49\u01f4\u0001\u0000\u0000\u0000\u0c4a\u0c4b\u0007\u0006\u0000"+ - "\u0000\u0c4b\u0c4c\u0007\u0013\u0000\u0000\u0c4c\u0c4d\u0007\u000e\u0000"+ - "\u0000\u0c4d\u0c4e\u0007\u0005\u0000\u0000\u0c4e\u0c4f\u0007\u0006\u0000"+ - "\u0000\u0c4f\u01f6\u0001\u0000\u0000\u0000\u0c50\u0c51\u0007\u0006\u0000"+ - "\u0000\u0c51\u0c52\u0007\u0013\u0000\u0000\u0c52\u0c53\u0007\u000e\u0000"+ - "\u0000\u0c53\u0c54\u0007\u0005\u0000\u0000\u0c54\u0c55\u0007\u0010\u0000"+ - "\u0000\u0c55\u0c56\u0007\u0011\u0000\u0000\u0c56\u0c57\u0007\u0013\u0000"+ - "\u0000\u0c57\u0c58\u0007\u0007\u0000\u0000\u0c58\u01f8\u0001\u0000\u0000"+ - "\u0000\u0c59\u0c5a\u0007\u0006\u0000\u0000\u0c5a\u0c5b\u0007\u0013\u0000"+ - "\u0000\u0c5b\u0c5c\u0007\u000e\u0000\u0000\u0c5c\u0c5d\u0007\u0015\u0000"+ - "\u0000\u0c5d\u01fa\u0001\u0000\u0000\u0000\u0c5e\u0c5f\u0007\u000f\u0000"+ - "\u0000\u0c5f\u0c60\u0007\u0005\u0000\u0000\u0c60\u0c61\u0007\u0018\u0000"+ - "\u0000\u0c61\u0c62\u0007\u0018\u0000\u0000\u0c62\u0c63\u0007\u0011\u0000"+ - "\u0000\u0c63\u0c64\u0007\u0007\u0000\u0000\u0c64\u0c65\u0007\u0017\u0000"+ - "\u0000\u0c65\u01fc\u0001\u0000\u0000\u0000\u0c66\u0c67\u0007\u000f\u0000"+ - "\u0000\u0c67\u0c68\u0007\u0005\u0000\u0000\u0c68\u0c69\u0007\u0010\u0000"+ - "\u0000\u0c69\u0c6a\u0007\u000e\u0000\u0000\u0c6a\u0c6b\u0007\u0014\u0000"+ - "\u0000\u0c6b\u01fe\u0001\u0000\u0000\u0000\u0c6c\u0c6d\u0007\u000f\u0000"+ - "\u0000\u0c6d\u0c6e\u0007\u0005\u0000\u0000\u0c6e\u0c6f\u0007\u0010\u0000"+ - "\u0000\u0c6f\u0c70\u0007\u000e\u0000\u0000\u0c70\u0c71\u0007\u0014\u0000"+ - "\u0000\u0c71\u0c72\u0007\n\u0000\u0000\u0c72\u0c73\u0007\f\u0000\u0000"+ - "\u0c73\u0200\u0001\u0000\u0000\u0000\u0c74\u0c75\u0007\u000f\u0000\u0000"+ - "\u0c75\u0c76\u0007\u0005\u0000\u0000\u0c76\u0c77\u0007\u0010\u0000\u0000"+ - "\u0c77\u0c78\u0007\n\u0000\u0000\u0c78\u0c79\u0007\r\u0000\u0000\u0c79"+ - "\u0c7a\u0007\u0011\u0000\u0000\u0c7a\u0c7b\u0007\u0005\u0000\u0000\u0c7b"+ - "\u0c7c\u0007\u0006\u0000\u0000\u0c7c\u0c7d\u0007\u0011\u0000\u0000\u0c7d"+ - "\u0c7e\u0007\u000b\u0000\u0000\u0c7e\u0c7f\u0007\n\u0000\u0000\u0c7f\u0c80"+ - "\u0007\f\u0000\u0000\u0c80\u0202\u0001\u0000\u0000\u0000\u0c81\u0c82\u0007"+ - "\u000f\u0000\u0000\u0c82\u0c83\u0007\u0005\u0000\u0000\u0c83\u0c84\u0007"+ - "\u001a\u0000\u0000\u0c84\u0c85\u0007\u001b\u0000\u0000\u0c85\u0c86\u0007"+ - "\u0005\u0000\u0000\u0c86\u0c87\u0007\u0006\u0000\u0000\u0c87\u0c88\u0007"+ - "\u0016\u0000\u0000\u0c88\u0c89\u0007\n\u0000\u0000\u0c89\u0204\u0001\u0000"+ - "\u0000\u0000\u0c8a\u0c8b\u0007\u000f\u0000\u0000\u0c8b\u0c8c\u0007\n\u0000"+ - "\u0000\u0c8c\u0c8d\u0007\r\u0000\u0000\u0c8d\u0c8e\u0007\u0017\u0000\u0000"+ - "\u0c8e\u0c8f\u0007\n\u0000\u0000\u0c8f\u0206\u0001\u0000\u0000\u0000\u0c90"+ - "\u0c91\u0007\u000f\u0000\u0000\u0c91\u0c92\u0007\u0011\u0000\u0000\u0c92"+ - "\u0c93\u0007\u0007\u0000\u0000\u0c93\u0c94\u0007\u0016\u0000\u0000\u0c94"+ - "\u0c95\u0007\u0010\u0000\u0000\u0c95\u0c96\u0007\n\u0000\u0000\u0c96\u0208"+ - "\u0001\u0000\u0000\u0000\u0c97\u0c98\u0007\u000f\u0000\u0000\u0c98\u0c99"+ - "\u0007\u0011\u0000\u0000\u0c99\u0c9a\u0007\u0007\u0000\u0000\u0c9a\u0c9b"+ - "\u0007\u001b\u0000\u0000\u0c9b\u0c9c\u0007\u0005\u0000\u0000\u0c9c\u0c9d"+ - "\u0007\u0006\u0000\u0000\u0c9d\u0c9e\u0007\u0016\u0000\u0000\u0c9e\u0c9f"+ - "\u0007\n\u0000\u0000\u0c9f\u020a\u0001\u0000\u0000\u0000\u0ca0\u0ca1\u0007"+ - "\u000f\u0000\u0000\u0ca1\u0ca2\u0007\u0013\u0000\u0000\u0ca2\u0ca3\u0007"+ - "\f\u0000\u0000\u0ca3\u0ca4\u0007\n\u0000\u0000\u0ca4\u020c\u0001\u0000"+ - "\u0000\u0000\u0ca5\u0ca6\u0007\u000f\u0000\u0000\u0ca6\u0ca7\u0007\u0013"+ - "\u0000\u0000\u0ca7\u0ca8\u0007\u0007\u0000\u0000\u0ca8\u0ca9\u0007\u0010"+ - "\u0000\u0000\u0ca9\u0caa\u0007\u0014\u0000\u0000\u0caa\u020e\u0001\u0000"+ - "\u0000\u0000\u0cab\u0cac\u0007\u000f\u0000\u0000\u0cac\u0cad\u0007\u0013"+ - "\u0000\u0000\u0cad\u0cae\u0007\u001b\u0000\u0000\u0cae\u0caf\u0007\n\u0000"+ - "\u0000\u0caf\u0210\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0007\u0007\u0000"+ - "\u0000\u0cb1\u0cb2\u0007\u0005\u0000\u0000\u0cb2\u0cb3\u0007\u000f\u0000"+ - "\u0000\u0cb3\u0cb4\u0007\n\u0000\u0000\u0cb4\u0212\u0001\u0000\u0000\u0000"+ - "\u0cb5\u0cb6\u0007\u0007\u0000\u0000\u0cb6\u0cb7\u0007\u0005\u0000\u0000"+ - "\u0cb7\u0cb8\u0007\u000f\u0000\u0000\u0cb8\u0cb9\u0007\n\u0000\u0000\u0cb9"+ - "\u0cba\u0007\t\u0000\u0000\u0cba\u0214\u0001\u0000\u0000\u0000\u0cbb\u0cbc"+ - "\u0007\u0007\u0000\u0000\u0cbc\u0cbd\u0007\n\u0000\u0000\u0cbd\u0cbe\u0007"+ - "\u001a\u0000\u0000\u0cbe\u0cbf\u0007\u0010\u0000\u0000\u0cbf\u0216\u0001"+ - "\u0000\u0000\u0000\u0cc0\u0cc1\u0007\u0007\u0000\u0000\u0cc1\u0cc2\u0007"+ - "\u0013\u0000\u0000\u0cc2\u0218\u0001\u0000\u0000\u0000\u0cc3\u0cc4\u0007"+ - "\u0007\u0000\u0000\u0cc4\u0cc5\u0007\u0013\u0000\u0000\u0cc5\u0cc6\u0007"+ - "\u0010\u0000\u0000\u0cc6\u0cc7\u0007\u0014\u0000\u0000\u0cc7\u0cc8\u0007"+ - "\u0011\u0000\u0000\u0cc8\u0cc9\u0007\u0007\u0000\u0000\u0cc9\u0cca\u0007"+ - "\u0017\u0000\u0000\u0cca\u021a\u0001\u0000\u0000\u0000\u0ccb\u0ccc\u0007"+ - "\u0007\u0000\u0000\u0ccc\u0ccd\u0007\u0013\u0000\u0000\u0ccd\u0cce\u0007"+ - "\u0010\u0000\u0000\u0cce\u0ccf\u0007\u0011\u0000\u0000\u0ccf\u0cd0\u0007"+ - "\u0019\u0000\u0000\u0cd0\u0cd1\u0007\b\u0000\u0000\u0cd1\u021c\u0001\u0000"+ - "\u0000\u0000\u0cd2\u0cd3\u0007\u0007\u0000\u0000\u0cd3\u0cd4\u0007\u0013"+ - "\u0000\u0000\u0cd4\u0cd5\u0007\u001d\u0000\u0000\u0cd5\u0cd6\u0007\u0005"+ - "\u0000\u0000\u0cd6\u0cd7\u0007\u0011\u0000\u0000\u0cd7\u0cd8\u0007\u0010"+ - "\u0000\u0000\u0cd8\u021e\u0001\u0000\u0000\u0000\u0cd9\u0cda\u0007\u0007"+ - "\u0000\u0000\u0cda\u0cdb\u0007\u0016\u0000\u0000\u0cdb\u0cdc\u0007\u0006"+ - "\u0000\u0000\u0cdc\u0cdd\u0007\u0006\u0000\u0000\u0cdd\u0cde\u0007\t\u0000"+ - "\u0000\u0cde\u0220\u0001\u0000\u0000\u0000\u0cdf\u0ce0\u0007\u0013\u0000"+ - "\u0000\u0ce0\u0ce1\u0007\u0012\u0000\u0000\u0ce1\u0ce2\u0007\u001e\u0000"+ - "\u0000\u0ce2\u0ce3\u0007\n\u0000\u0000\u0ce3\u0ce4\u0007\u000e\u0000\u0000"+ - "\u0ce4\u0ce5\u0007\u0010\u0000\u0000\u0ce5\u0222\u0001\u0000\u0000\u0000"+ - "\u0ce6\u0ce7\u0007\u0013\u0000\u0000\u0ce7\u0ce8\u0007\u0019\u0000\u0000"+ - "\u0ce8\u0224\u0001\u0000\u0000\u0000\u0ce9\u0cea\u0007\u0013\u0000\u0000"+ - "\u0cea\u0ceb\u0007\u0019\u0000\u0000\u0ceb\u0cec\u0007\u0019\u0000\u0000"+ - "\u0cec\u0226\u0001\u0000\u0000\u0000\u0ced\u0cee\u0007\u0013\u0000\u0000"+ - "\u0cee\u0cef\u0007\u0011\u0000\u0000\u0cef\u0cf0\u0007\f\u0000\u0000\u0cf0"+ - "\u0cf1\u0007\t\u0000\u0000\u0cf1\u0228\u0001\u0000\u0000\u0000\u0cf2\u0cf3"+ - "\u0007\u0013\u0000\u0000\u0cf3\u0cf4\u0007\u0018\u0000\u0000\u0cf4\u0cf5"+ - "\u0007\n\u0000\u0000\u0cf5\u0cf6\u0007\r\u0000\u0000\u0cf6\u0cf7\u0007"+ - "\u0005\u0000\u0000\u0cf7\u0cf8\u0007\u0010\u0000\u0000\u0cf8\u0cf9\u0007"+ - "\u0013\u0000\u0000\u0cf9\u0cfa\u0007\r\u0000\u0000\u0cfa\u022a\u0001\u0000"+ - "\u0000\u0000\u0cfb\u0cfc\u0007\u0013\u0000\u0000\u0cfc\u0cfd\u0007\u0018"+ - "\u0000\u0000\u0cfd\u0cfe\u0007\u0010\u0000\u0000\u0cfe\u0cff\u0007\u0011"+ - "\u0000\u0000\u0cff\u0d00\u0007\u0013\u0000\u0000\u0d00\u0d01\u0007\u0007"+ - "\u0000\u0000\u0d01\u022c\u0001\u0000\u0000\u0000\u0d02\u0d03\u0007\u0013"+ - "\u0000\u0000\u0d03\u0d04\u0007\u0018\u0000\u0000\u0d04\u0d05\u0007\u0010"+ - "\u0000\u0000\u0d05\u0d06\u0007\u0011\u0000\u0000\u0d06\u0d07\u0007\u0013"+ - "\u0000\u0000\u0d07\u0d08\u0007\u0007\u0000\u0000\u0d08\u0d09\u0007\t\u0000"+ - "\u0000\u0d09\u022e\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0007\u0013\u0000"+ - "\u0000\u0d0b\u0d0c\u0007\u001d\u0000\u0000\u0d0c\u0d0d\u0007\u0007\u0000"+ - "\u0000\u0d0d\u0d0e\u0007\n\u0000\u0000\u0d0e\u0d0f\u0007\f\u0000\u0000"+ - "\u0d0f\u0230\u0001\u0000\u0000\u0000\u0d10\u0d11\u0007\u0013\u0000\u0000"+ - "\u0d11\u0d12\u0007\u001d\u0000\u0000\u0d12\u0d13\u0007\u0007\u0000\u0000"+ - "\u0d13\u0d14\u0007\n\u0000\u0000\u0d14\u0d15\u0007\r\u0000\u0000\u0d15"+ - "\u0232\u0001\u0000\u0000\u0000\u0d16\u0d17\u0007\u0018\u0000\u0000\u0d17"+ - "\u0d18\u0007\u0005\u0000\u0000\u0d18\u0d19\u0007\r\u0000\u0000\u0d19\u0d1a"+ - "\u0007\t\u0000\u0000\u0d1a\u0d1b\u0007\n\u0000\u0000\u0d1b\u0d1c\u0007"+ - "\r\u0000\u0000\u0d1c\u0234\u0001\u0000\u0000\u0000\u0d1d\u0d1e\u0007\u0018"+ - "\u0000\u0000\u0d1e\u0d1f\u0007\u0005\u0000\u0000\u0d1f\u0d20\u0007\r\u0000"+ - "\u0000\u0d20\u0d21\u0007\u0010\u0000\u0000\u0d21\u0d22\u0007\u0011\u0000"+ - "\u0000\u0d22\u0d23\u0007\u0005\u0000\u0000\u0d23\u0d24\u0007\u0006\u0000"+ - "\u0000\u0d24\u0236\u0001\u0000\u0000\u0000\u0d25\u0d26\u0007\u0018\u0000"+ - "\u0000\u0d26\u0d27\u0007\u0005\u0000\u0000\u0d27\u0d28\u0007\r\u0000\u0000"+ - "\u0d28\u0d29\u0007\u0010\u0000\u0000\u0d29\u0d2a\u0007\u0011\u0000\u0000"+ - "\u0d2a\u0d2b\u0007\u0010\u0000\u0000\u0d2b\u0d2c\u0007\u0011\u0000\u0000"+ - "\u0d2c\u0d2d\u0007\u0013\u0000\u0000\u0d2d\u0d2e\u0007\u0007\u0000\u0000"+ - "\u0d2e\u0238\u0001\u0000\u0000\u0000\u0d2f\u0d30\u0007\u0018\u0000\u0000"+ - "\u0d30\u0d31\u0007\u0005\u0000\u0000\u0d31\u0d32\u0007\t\u0000\u0000\u0d32"+ - "\u0d33\u0007\t\u0000\u0000\u0d33\u0d34\u0007\u0011\u0000\u0000\u0d34\u0d35"+ - "\u0007\u0007\u0000\u0000\u0d35\u0d36\u0007\u0017\u0000\u0000\u0d36\u023a"+ - "\u0001\u0000\u0000\u0000\u0d37\u0d38\u0007\u0018\u0000\u0000\u0d38\u0d39"+ - "\u0007\u0005\u0000\u0000\u0d39\u0d3a\u0007\t\u0000\u0000\u0d3a\u0d3b\u0007"+ - "\t\u0000\u0000\u0d3b\u0d3c\u0007\u001d\u0000\u0000\u0d3c\u0d3d\u0007\u0013"+ - "\u0000\u0000\u0d3d\u0d3e\u0007\r\u0000\u0000\u0d3e\u0d3f\u0007\f\u0000"+ - "\u0000\u0d3f\u023c\u0001\u0000\u0000\u0000\u0d40\u0d41\u0007\u0018\u0000"+ - "\u0000\u0d41\u0d42\u0007\u0006\u0000\u0000\u0d42\u0d43\u0007\u0005\u0000"+ - "\u0000\u0d43\u0d44\u0007\u0007\u0000\u0000\u0d44\u0d45\u0007\t\u0000\u0000"+ - "\u0d45\u023e\u0001\u0000\u0000\u0000\u0d46\u0d47\u0007\u0018\u0000\u0000"+ - "\u0d47\u0d48\u0007\r\u0000\u0000\u0d48\u0d49\u0007\n\u0000\u0000\u0d49"+ - "\u0d4a\u0007\u000e\u0000\u0000\u0d4a\u0d4b\u0007\n\u0000\u0000\u0d4b\u0d4c"+ - "\u0007\f\u0000\u0000\u0d4c\u0d4d\u0007\u0011\u0000\u0000\u0d4d\u0d4e\u0007"+ - "\u0007\u0000\u0000\u0d4e\u0d4f\u0007\u0017\u0000\u0000\u0d4f\u0240\u0001"+ - "\u0000\u0000\u0000\u0d50\u0d51\u0007\u0018\u0000\u0000\u0d51\u0d52\u0007"+ - "\r\u0000\u0000\u0d52\u0d53\u0007\n\u0000\u0000\u0d53\u0d54\u0007\u0018"+ - "\u0000\u0000\u0d54\u0d55\u0007\u0005\u0000\u0000\u0d55\u0d56\u0007\r\u0000"+ - "\u0000\u0d56\u0d57\u0007\n\u0000\u0000\u0d57\u0242\u0001\u0000\u0000\u0000"+ - "\u0d58\u0d59\u0007\u0018\u0000\u0000\u0d59\u0d5a\u0007\r\u0000\u0000\u0d5a"+ - "\u0d5b\u0007\n\u0000\u0000\u0d5b\u0d5c\u0007\u0018\u0000\u0000\u0d5c\u0d5d"+ - "\u0007\u0005\u0000\u0000\u0d5d\u0d5e\u0007\r\u0000\u0000\u0d5e\u0d5f\u0007"+ - "\n\u0000\u0000\u0d5f\u0d60\u0007\f\u0000\u0000\u0d60\u0244\u0001\u0000"+ - "\u0000\u0000\u0d61\u0d62\u0007\u0018\u0000\u0000\u0d62\u0d63\u0007\r\u0000"+ - "\u0000\u0d63\u0d64\u0007\n\u0000\u0000\u0d64\u0d65\u0007\t\u0000\u0000"+ - "\u0d65\u0d66\u0007\n\u0000\u0000\u0d66\u0d67\u0007\r\u0000\u0000\u0d67"+ - "\u0d68\u0007\u001b\u0000\u0000\u0d68\u0d69\u0007\n\u0000\u0000\u0d69\u0246"+ - "\u0001\u0000\u0000\u0000\u0d6a\u0d6b\u0007\u0018\u0000\u0000\u0d6b\u0d6c"+ - "\u0007\r\u0000\u0000\u0d6c\u0d6d\u0007\u0011\u0000\u0000\u0d6d\u0d6e\u0007"+ - "\u0013\u0000\u0000\u0d6e\u0d6f\u0007\r\u0000\u0000\u0d6f\u0248\u0001\u0000"+ - "\u0000\u0000\u0d70\u0d71\u0007\u0018\u0000\u0000\u0d71\u0d72\u0007\r\u0000"+ - "\u0000\u0d72\u0d73\u0007\u0011\u0000\u0000\u0d73\u0d74\u0007\u001b\u0000"+ - "\u0000\u0d74\u0d75\u0007\u0011\u0000\u0000\u0d75\u0d76\u0007\u0006\u0000"+ - "\u0000\u0d76\u0d77\u0007\n\u0000\u0000\u0d77\u0d78\u0007\u0017\u0000\u0000"+ - "\u0d78\u0d79\u0007\n\u0000\u0000\u0d79\u0d7a\u0007\t\u0000\u0000\u0d7a"+ - "\u024a\u0001\u0000\u0000\u0000\u0d7b\u0d7c\u0007\u0018\u0000\u0000\u0d7c"+ - "\u0d7d\u0007\r\u0000\u0000\u0d7d\u0d7e\u0007\u0013\u0000\u0000\u0d7e\u0d7f"+ - "\u0007\u000e\u0000\u0000\u0d7f\u0d80\u0007\n\u0000\u0000\u0d80\u0d81\u0007"+ - "\f\u0000\u0000\u0d81\u0d82\u0007\u0016\u0000\u0000\u0d82\u0d83\u0007\r"+ - "\u0000\u0000\u0d83\u0d84\u0007\u0005\u0000\u0000\u0d84\u0d85\u0007\u0006"+ - "\u0000\u0000\u0d85\u024c\u0001\u0000\u0000\u0000\u0d86\u0d87\u0007\u0018"+ - "\u0000\u0000\u0d87\u0d88\u0007\r\u0000\u0000\u0d88\u0d89\u0007\u0013\u0000"+ - "\u0000\u0d89\u0d8a\u0007\u000e\u0000\u0000\u0d8a\u0d8b\u0007\n\u0000\u0000"+ - "\u0d8b\u0d8c\u0007\f\u0000\u0000\u0d8c\u0d8d\u0007\u0016\u0000\u0000\u0d8d"+ - "\u0d8e\u0007\r\u0000\u0000\u0d8e\u0d8f\u0007\n\u0000\u0000\u0d8f\u024e"+ - "\u0001\u0000\u0000\u0000\u0d90\u0d91\u0007\u0018\u0000\u0000\u0d91\u0d92"+ - "\u0007\r\u0000\u0000\u0d92\u0d93\u0007\u0013\u0000\u0000\u0d93\u0d94\u0007"+ - "\u0017\u0000\u0000\u0d94\u0d95\u0007\r\u0000\u0000\u0d95\u0d96\u0007\u0005"+ - "\u0000\u0000\u0d96\u0d97\u0007\u000f\u0000\u0000\u0d97\u0250\u0001\u0000"+ - "\u0000\u0000\u0d98\u0d99\u0007\u001c\u0000\u0000\u0d99\u0d9a\u0007\u0016"+ - "\u0000\u0000\u0d9a\u0d9b\u0007\u0013\u0000\u0000\u0d9b\u0d9c\u0007\u0010"+ - "\u0000\u0000\u0d9c\u0d9d\u0007\n\u0000\u0000\u0d9d\u0252\u0001\u0000\u0000"+ - "\u0000\u0d9e\u0d9f\u0007\r\u0000\u0000\u0d9f\u0da0\u0007\u0005\u0000\u0000"+ - "\u0da0\u0da1\u0007\u0007\u0000\u0000\u0da1\u0da2\u0007\u0017\u0000\u0000"+ - "\u0da2\u0da3\u0007\n\u0000\u0000\u0da3\u0254\u0001\u0000\u0000\u0000\u0da4"+ - "\u0da5\u0007\r\u0000\u0000\u0da5\u0da6\u0007\n\u0000\u0000\u0da6\u0da7"+ - "\u0007\u0005\u0000\u0000\u0da7\u0da8\u0007\f\u0000\u0000\u0da8\u0256\u0001"+ - "\u0000\u0000\u0000\u0da9\u0daa\u0007\r\u0000\u0000\u0daa\u0dab\u0007\n"+ - "\u0000\u0000\u0dab\u0dac\u0007\u0005\u0000\u0000\u0dac\u0dad\u0007\t\u0000"+ - "\u0000\u0dad\u0dae\u0007\t\u0000\u0000\u0dae\u0daf\u0007\u0011\u0000\u0000"+ - "\u0daf\u0db0\u0007\u0017\u0000\u0000\u0db0\u0db1\u0007\u0007\u0000\u0000"+ - "\u0db1\u0258\u0001\u0000\u0000\u0000\u0db2\u0db3\u0007\r\u0000\u0000\u0db3"+ - "\u0db4\u0007\n\u0000\u0000\u0db4\u0db5\u0007\u000e\u0000\u0000\u0db5\u0db6"+ - "\u0007\u0014\u0000\u0000\u0db6\u0db7\u0007\n\u0000\u0000\u0db7\u0db8\u0007"+ - "\u000e\u0000\u0000\u0db8\u0db9\u0007\u0015\u0000\u0000\u0db9\u025a\u0001"+ - "\u0000\u0000\u0000\u0dba\u0dbb\u0007\r\u0000\u0000\u0dbb\u0dbc\u0007\n"+ - "\u0000\u0000\u0dbc\u0dbd\u0007\u000e\u0000\u0000\u0dbd\u0dbe\u0007\u0016"+ - "\u0000\u0000\u0dbe\u0dbf\u0007\r\u0000\u0000\u0dbf\u0dc0\u0007\t\u0000"+ - "\u0000\u0dc0\u0dc1\u0007\u0011\u0000\u0000\u0dc1\u0dc2\u0007\u001b\u0000"+ - "\u0000\u0dc2\u0dc3\u0007\n\u0000\u0000\u0dc3\u025c\u0001\u0000\u0000\u0000"+ - "\u0dc4\u0dc5\u0007\r\u0000\u0000\u0dc5\u0dc6\u0007\n\u0000\u0000\u0dc6"+ - "\u0dc7\u0007\u0019\u0000\u0000\u0dc7\u025e\u0001\u0000\u0000\u0000\u0dc8"+ - "\u0dc9\u0007\r\u0000\u0000\u0dc9\u0dca\u0007\n\u0000\u0000\u0dca\u0dcb"+ - "\u0007\u0019\u0000\u0000\u0dcb\u0dcc\u0007\r\u0000\u0000\u0dcc\u0dcd\u0007"+ - "\n\u0000\u0000\u0dcd\u0dce\u0007\t\u0000\u0000\u0dce\u0dcf\u0007\u0014"+ - "\u0000\u0000\u0dcf\u0260\u0001\u0000\u0000\u0000\u0dd0\u0dd1\u0007\r\u0000"+ - "\u0000\u0dd1\u0dd2\u0007\n\u0000\u0000\u0dd2\u0dd3\u0007\u0011\u0000\u0000"+ - "\u0dd3\u0dd4\u0007\u0007\u0000\u0000\u0dd4\u0dd5\u0007\f\u0000\u0000\u0dd5"+ - "\u0dd6\u0007\n\u0000\u0000\u0dd6\u0dd7\u0007\u001a\u0000\u0000\u0dd7\u0262"+ - "\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0007\r\u0000\u0000\u0dd9\u0dda\u0007"+ - "\n\u0000\u0000\u0dda\u0ddb\u0007\u0006\u0000\u0000\u0ddb\u0ddc\u0007\u0005"+ - "\u0000\u0000\u0ddc\u0ddd\u0007\u0010\u0000\u0000\u0ddd\u0dde\u0007\u0011"+ - "\u0000\u0000\u0dde\u0ddf\u0007\u001b\u0000\u0000\u0ddf\u0de0\u0007\n\u0000"+ - "\u0000\u0de0\u0264\u0001\u0000\u0000\u0000\u0de1\u0de2\u0007\r\u0000\u0000"+ - "\u0de2\u0de3\u0007\n\u0000\u0000\u0de3\u0de4\u0007\u0006\u0000\u0000\u0de4"+ - "\u0de5\u0007\n\u0000\u0000\u0de5\u0de6\u0007\u0005\u0000\u0000\u0de6\u0de7"+ - "\u0007\t\u0000\u0000\u0de7\u0de8\u0007\n\u0000\u0000\u0de8\u0266\u0001"+ - "\u0000\u0000\u0000\u0de9\u0dea\u0007\r\u0000\u0000\u0dea\u0deb\u0007\n"+ - "\u0000\u0000\u0deb\u0dec\u0007\u0007\u0000\u0000\u0dec\u0ded\u0007\u0005"+ - "\u0000\u0000\u0ded\u0dee\u0007\u000f\u0000\u0000\u0dee\u0def\u0007\n\u0000"+ - "\u0000\u0def\u0268\u0001\u0000\u0000\u0000\u0df0\u0df1\u0007\r\u0000\u0000"+ - "\u0df1\u0df2\u0007\n\u0000\u0000\u0df2\u0df3\u0007\u0018\u0000\u0000\u0df3"+ - "\u0df4\u0007\n\u0000\u0000\u0df4\u0df5\u0007\u0005\u0000\u0000\u0df5\u0df6"+ - "\u0007\u0010\u0000\u0000\u0df6\u0df7\u0007\u0005\u0000\u0000\u0df7\u0df8"+ - "\u0007\u0012\u0000\u0000\u0df8\u0df9\u0007\u0006\u0000\u0000\u0df9\u0dfa"+ - "\u0007\n\u0000\u0000\u0dfa\u026a\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0007"+ - "\r\u0000\u0000\u0dfc\u0dfd\u0007\n\u0000\u0000\u0dfd\u0dfe\u0007\u0018"+ - "\u0000\u0000\u0dfe\u0dff\u0007\u0006\u0000\u0000\u0dff\u0e00\u0007\u0005"+ - "\u0000\u0000\u0e00\u0e01\u0007\u000e\u0000\u0000\u0e01\u0e02\u0007\n\u0000"+ - "\u0000\u0e02\u026c\u0001\u0000\u0000\u0000\u0e03\u0e04\u0007\r\u0000\u0000"+ - "\u0e04\u0e05\u0007\n\u0000\u0000\u0e05\u0e06\u0007\u0018\u0000\u0000\u0e06"+ - "\u0e07\u0007\u0006\u0000\u0000\u0e07\u0e08\u0007\u0011\u0000\u0000\u0e08"+ - "\u0e09\u0007\u000e\u0000\u0000\u0e09\u0e0a\u0007\u0005\u0000\u0000\u0e0a"+ - "\u026e\u0001\u0000\u0000\u0000\u0e0b\u0e0c\u0007\r\u0000\u0000\u0e0c\u0e0d"+ - "\u0007\n\u0000\u0000\u0e0d\u0e0e\u0007\t\u0000\u0000\u0e0e\u0e0f\u0007"+ - "\n\u0000\u0000\u0e0f\u0e10\u0007\u0010\u0000\u0000\u0e10\u0270\u0001\u0000"+ - "\u0000\u0000\u0e11\u0e12\u0007\r\u0000\u0000\u0e12\u0e13\u0007\n\u0000"+ - "\u0000\u0e13\u0e14\u0007\t\u0000\u0000\u0e14\u0e15\u0007\u0010\u0000\u0000"+ - "\u0e15\u0e16\u0007\u0005\u0000\u0000\u0e16\u0e17\u0007\r\u0000\u0000\u0e17"+ - "\u0e18\u0007\u0010\u0000\u0000\u0e18\u0272\u0001\u0000\u0000\u0000\u0e19"+ - "\u0e1a\u0007\r\u0000\u0000\u0e1a\u0e1b\u0007\n\u0000\u0000\u0e1b\u0e1c"+ - "\u0007\t\u0000\u0000\u0e1c\u0e1d\u0007\u0010\u0000\u0000\u0e1d\u0e1e\u0007"+ - "\r\u0000\u0000\u0e1e\u0e1f\u0007\u0011\u0000\u0000\u0e1f\u0e20\u0007\u000e"+ - "\u0000\u0000\u0e20\u0e21\u0007\u0010\u0000\u0000\u0e21\u0274\u0001\u0000"+ - "\u0000\u0000\u0e22\u0e23\u0007\r\u0000\u0000\u0e23\u0e24\u0007\n\u0000"+ - "\u0000\u0e24\u0e25\u0007\u0010\u0000\u0000\u0e25\u0e26\u0007\u0016\u0000"+ - "\u0000\u0e26\u0e27\u0007\r\u0000\u0000\u0e27\u0e28\u0007\u0007\u0000\u0000"+ - "\u0e28\u0e29\u0007\t\u0000\u0000\u0e29\u0276\u0001\u0000\u0000\u0000\u0e2a"+ - "\u0e2b\u0007\r\u0000\u0000\u0e2b\u0e2c\u0007\n\u0000\u0000\u0e2c\u0e2d"+ - "\u0007\u001b\u0000\u0000\u0e2d\u0e2e\u0007\u0013\u0000\u0000\u0e2e\u0e2f"+ - "\u0007\u0015\u0000\u0000\u0e2f\u0e30\u0007\n\u0000\u0000\u0e30\u0278\u0001"+ - "\u0000\u0000\u0000\u0e31\u0e32\u0007\r\u0000\u0000\u0e32\u0e33\u0007\u0013"+ - "\u0000\u0000\u0e33\u0e34\u0007\u0006\u0000\u0000\u0e34\u0e35\u0007\n\u0000"+ - "\u0000\u0e35\u027a\u0001\u0000\u0000\u0000\u0e36\u0e37\u0007\r\u0000\u0000"+ - "\u0e37\u0e38\u0007\u0013\u0000\u0000\u0e38\u0e39\u0007\u0006\u0000\u0000"+ - "\u0e39\u0e3a\u0007\u0006\u0000\u0000\u0e3a\u0e3b\u0007\u0012\u0000\u0000"+ - "\u0e3b\u0e3c\u0007\u0005\u0000\u0000\u0e3c\u0e3d\u0007\u000e\u0000\u0000"+ - "\u0e3d\u0e3e\u0007\u0015\u0000\u0000\u0e3e\u027c\u0001\u0000\u0000\u0000"+ - "\u0e3f\u0e40\u0007\r\u0000\u0000\u0e40\u0e41\u0007\u0013\u0000\u0000\u0e41"+ - "\u0e42\u0007\u001d\u0000\u0000\u0e42\u0e43\u0007\t\u0000\u0000\u0e43\u027e"+ - "\u0001\u0000\u0000\u0000\u0e44\u0e45\u0007\r\u0000\u0000\u0e45\u0e46\u0007"+ - "\u0016\u0000\u0000\u0e46\u0e47\u0007\u0006\u0000\u0000\u0e47\u0e48\u0007"+ - "\n\u0000\u0000\u0e48\u0280\u0001\u0000\u0000\u0000\u0e49\u0e4a\u0007\t"+ - "\u0000\u0000\u0e4a\u0e4b\u0007\u0005\u0000\u0000\u0e4b\u0e4c\u0007\u001b"+ - "\u0000\u0000\u0e4c\u0e4d\u0007\n\u0000\u0000\u0e4d\u0e4e\u0007\u0018\u0000"+ - "\u0000\u0e4e\u0e4f\u0007\u0013\u0000\u0000\u0e4f\u0e50\u0007\u0011\u0000"+ - "\u0000\u0e50\u0e51\u0007\u0007\u0000\u0000\u0e51\u0e52\u0007\u0010\u0000"+ - "\u0000\u0e52\u0282\u0001\u0000\u0000\u0000\u0e53\u0e54\u0007\t\u0000\u0000"+ - "\u0e54\u0e55\u0007\u000e\u0000\u0000\u0e55\u0e56\u0007\u0014\u0000\u0000"+ - "\u0e56\u0e57\u0007\n\u0000\u0000\u0e57\u0e58\u0007\u000f\u0000\u0000\u0e58"+ - "\u0e59\u0007\u0005\u0000\u0000\u0e59\u0284\u0001\u0000\u0000\u0000\u0e5a"+ - "\u0e5b\u0007\t\u0000\u0000\u0e5b\u0e5c\u0007\u000e\u0000\u0000\u0e5c\u0e5d"+ - "\u0007\r\u0000\u0000\u0e5d\u0e5e\u0007\u0013\u0000\u0000\u0e5e\u0e5f\u0007"+ - "\u0006\u0000\u0000\u0e5f\u0e60\u0007\u0006\u0000\u0000\u0e60\u0286\u0001"+ - "\u0000\u0000\u0000\u0e61\u0e62\u0007\t\u0000\u0000\u0e62\u0e63\u0007\n"+ - "\u0000\u0000\u0e63\u0e64\u0007\u0005\u0000\u0000\u0e64\u0e65\u0007\r\u0000"+ - "\u0000\u0e65\u0e66\u0007\u000e\u0000\u0000\u0e66\u0e67\u0007\u0014\u0000"+ - "\u0000\u0e67\u0288\u0001\u0000\u0000\u0000\u0e68\u0e69\u0007\t\u0000\u0000"+ - "\u0e69\u0e6a\u0007\n\u0000\u0000\u0e6a\u0e6b\u0007\u000e\u0000\u0000\u0e6b"+ - "\u0e6c\u0007\u0013\u0000\u0000\u0e6c\u0e6d\u0007\u0007\u0000\u0000\u0e6d"+ - "\u0e6e\u0007\f\u0000\u0000\u0e6e\u028a\u0001\u0000\u0000\u0000\u0e6f\u0e70"+ - "\u0007\t\u0000\u0000\u0e70\u0e71\u0007\n\u0000\u0000\u0e71\u0e72\u0007"+ - "\u000e\u0000\u0000\u0e72\u0e73\u0007\u0016\u0000\u0000\u0e73\u0e74\u0007"+ - "\r\u0000\u0000\u0e74\u0e75\u0007\u0011\u0000\u0000\u0e75\u0e76\u0007\u0010"+ - "\u0000\u0000\u0e76\u0e77\u0007\b\u0000\u0000\u0e77\u028c\u0001\u0000\u0000"+ - "\u0000\u0e78\u0e79\u0007\t\u0000\u0000\u0e79\u0e7a\u0007\n\u0000\u0000"+ - "\u0e7a\u0e7b\u0007\u001c\u0000\u0000\u0e7b\u0e7c\u0007\u0016\u0000\u0000"+ - "\u0e7c\u0e7d\u0007\n\u0000\u0000\u0e7d\u0e7e\u0007\u0007\u0000\u0000\u0e7e"+ - "\u0e7f\u0007\u000e\u0000\u0000\u0e7f\u0e80\u0007\n\u0000\u0000\u0e80\u028e"+ - "\u0001\u0000\u0000\u0000\u0e81\u0e82\u0007\t\u0000\u0000\u0e82\u0e83\u0007"+ - "\n\u0000\u0000\u0e83\u0e84\u0007\u001c\u0000\u0000\u0e84\u0e85\u0007\u0016"+ - "\u0000\u0000\u0e85\u0e86\u0007\n\u0000\u0000\u0e86\u0e87\u0007\u0007\u0000"+ - "\u0000\u0e87\u0e88\u0007\u000e\u0000\u0000\u0e88\u0e89\u0007\n\u0000\u0000"+ - "\u0e89\u0e8a\u0007\t\u0000\u0000\u0e8a\u0290\u0001\u0000\u0000\u0000\u0e8b"+ - "\u0e8c\u0007\t\u0000\u0000\u0e8c\u0e8d\u0007\n\u0000\u0000\u0e8d\u0e8e"+ - "\u0007\r\u0000\u0000\u0e8e\u0e8f\u0007\u0011\u0000\u0000\u0e8f\u0e90\u0007"+ - "\u0005\u0000\u0000\u0e90\u0e91\u0007\u0006\u0000\u0000\u0e91\u0e92\u0007"+ - "\u0011\u0000\u0000\u0e92\u0e93\u0007\u000b\u0000\u0000\u0e93\u0e94\u0007"+ - "\u0005\u0000\u0000\u0e94\u0e95\u0007\u0012\u0000\u0000\u0e95\u0e96\u0007"+ - "\u0006\u0000\u0000\u0e96\u0e97\u0007\n\u0000\u0000\u0e97\u0292\u0001\u0000"+ - "\u0000\u0000\u0e98\u0e99\u0007\t\u0000\u0000\u0e99\u0e9a\u0007\n\u0000"+ - "\u0000\u0e9a\u0e9b\u0007\r\u0000\u0000\u0e9b\u0e9c\u0007\u001b\u0000\u0000"+ - "\u0e9c\u0e9d\u0007\n\u0000\u0000\u0e9d\u0e9e\u0007\r\u0000\u0000\u0e9e"+ - "\u0294\u0001\u0000\u0000\u0000\u0e9f\u0ea0\u0007\t\u0000\u0000\u0ea0\u0ea1"+ - "\u0007\n\u0000\u0000\u0ea1\u0ea2\u0007\t\u0000\u0000\u0ea2\u0ea3\u0007"+ - "\t\u0000\u0000\u0ea3\u0ea4\u0007\u0011\u0000\u0000\u0ea4\u0ea5\u0007\u0013"+ - "\u0000\u0000\u0ea5\u0ea6\u0007\u0007\u0000\u0000\u0ea6\u0296\u0001\u0000"+ - "\u0000\u0000\u0ea7\u0ea8\u0007\t\u0000\u0000\u0ea8\u0ea9\u0007\n\u0000"+ - "\u0000\u0ea9\u0eaa\u0007\u0010\u0000\u0000\u0eaa\u0298\u0001\u0000\u0000"+ - "\u0000\u0eab\u0eac\u0007\t\u0000\u0000\u0eac\u0ead\u0007\u0014\u0000\u0000"+ - "\u0ead\u0eae\u0007\u0005\u0000\u0000\u0eae\u0eaf\u0007\r\u0000\u0000\u0eaf"+ - "\u0eb0\u0007\n\u0000\u0000\u0eb0\u029a\u0001\u0000\u0000\u0000\u0eb1\u0eb2"+ - "\u0007\t\u0000\u0000\u0eb2\u0eb3\u0007\u0014\u0000\u0000\u0eb3\u0eb4\u0007"+ - "\u0013\u0000\u0000\u0eb4\u0eb5\u0007\u001d\u0000\u0000\u0eb5\u029c\u0001"+ - "\u0000\u0000\u0000\u0eb6\u0eb7\u0007\t\u0000\u0000\u0eb7\u0eb8\u0007\u0011"+ - "\u0000\u0000\u0eb8\u0eb9\u0007\u000f\u0000\u0000\u0eb9\u0eba\u0007\u0018"+ - "\u0000\u0000\u0eba\u0ebb\u0007\u0006\u0000\u0000\u0ebb\u0ebc\u0007\n\u0000"+ - "\u0000\u0ebc\u029e\u0001\u0000\u0000\u0000\u0ebd\u0ebe\u0007\t\u0000\u0000"+ - "\u0ebe\u0ebf\u0007\u0007\u0000\u0000\u0ebf\u0ec0\u0007\u0005\u0000\u0000"+ - "\u0ec0\u0ec1\u0007\u0018\u0000\u0000\u0ec1\u0ec2\u0007\t\u0000\u0000\u0ec2"+ - "\u0ec3\u0007\u0014\u0000\u0000\u0ec3\u0ec4\u0007\u0013\u0000\u0000\u0ec4"+ - "\u0ec5\u0007\u0010\u0000\u0000\u0ec5\u02a0\u0001\u0000\u0000\u0000\u0ec6"+ - "\u0ec7\u0007\t\u0000\u0000\u0ec7\u0ec8\u0007\u0010\u0000\u0000\u0ec8\u0ec9"+ - "\u0007\u0005\u0000\u0000\u0ec9\u0eca\u0007\u0012\u0000\u0000\u0eca\u0ecb"+ - "\u0007\u0006\u0000\u0000\u0ecb\u0ecc\u0007\n\u0000\u0000\u0ecc\u02a2\u0001"+ - "\u0000\u0000\u0000\u0ecd\u0ece\u0007\t\u0000\u0000\u0ece\u0ecf\u0007\u0010"+ - "\u0000\u0000\u0ecf\u0ed0\u0007\u0005\u0000\u0000\u0ed0\u0ed1\u0007\u0007"+ - "\u0000\u0000\u0ed1\u0ed2\u0007\f\u0000\u0000\u0ed2\u0ed3\u0007\u0005\u0000"+ - "\u0000\u0ed3\u0ed4\u0007\u0006\u0000\u0000\u0ed4\u0ed5\u0007\u0013\u0000"+ - "\u0000\u0ed5\u0ed6\u0007\u0007\u0000\u0000\u0ed6\u0ed7\u0007\n\u0000\u0000"+ - "\u0ed7\u02a4\u0001\u0000\u0000\u0000\u0ed8\u0ed9\u0007\t\u0000\u0000\u0ed9"+ - "\u0eda\u0007\u0010\u0000\u0000\u0eda\u0edb\u0007\u0005\u0000\u0000\u0edb"+ - "\u0edc\u0007\r\u0000\u0000\u0edc\u0edd\u0007\u0010\u0000\u0000\u0edd\u02a6"+ - "\u0001\u0000\u0000\u0000\u0ede\u0edf\u0007\t\u0000\u0000\u0edf\u0ee0\u0007"+ - "\u0010\u0000\u0000\u0ee0\u0ee1\u0007\u0005\u0000\u0000\u0ee1\u0ee2\u0007"+ - "\u0010\u0000\u0000\u0ee2\u0ee3\u0007\n\u0000\u0000\u0ee3\u0ee4\u0007\u000f"+ - "\u0000\u0000\u0ee4\u0ee5\u0007\n\u0000\u0000\u0ee5\u0ee6\u0007\u0007\u0000"+ - "\u0000\u0ee6\u0ee7\u0007\u0010\u0000\u0000\u0ee7\u02a8\u0001\u0000\u0000"+ - "\u0000\u0ee8\u0ee9\u0007\t\u0000\u0000\u0ee9\u0eea\u0007\u0010\u0000\u0000"+ - "\u0eea\u0eeb\u0007\u0005\u0000\u0000\u0eeb\u0eec\u0007\u0010\u0000\u0000"+ - "\u0eec\u0eed\u0007\u0011\u0000\u0000\u0eed\u0eee\u0007\t\u0000\u0000\u0eee"+ - "\u0eef\u0007\u0010\u0000\u0000\u0eef\u0ef0\u0007\u0011\u0000\u0000\u0ef0"+ - "\u0ef1\u0007\u000e\u0000\u0000\u0ef1\u0ef2\u0007\t\u0000\u0000\u0ef2\u02aa"+ - "\u0001\u0000\u0000\u0000\u0ef3\u0ef4\u0007\t\u0000\u0000\u0ef4\u0ef5\u0007"+ - "\u0010\u0000\u0000\u0ef5\u0ef6\u0007\f\u0000\u0000\u0ef6\u0ef7\u0007\u0011"+ - "\u0000\u0000\u0ef7\u0ef8\u0007\u0007\u0000\u0000\u0ef8\u02ac\u0001\u0000"+ - "\u0000\u0000\u0ef9\u0efa\u0007\t\u0000\u0000\u0efa\u0efb\u0007\u0010\u0000"+ - "\u0000\u0efb\u0efc\u0007\f\u0000\u0000\u0efc\u0efd\u0007\u0013\u0000\u0000"+ - "\u0efd\u0efe\u0007\u0016\u0000\u0000\u0efe\u0eff\u0007\u0010\u0000\u0000"+ - "\u0eff\u02ae\u0001\u0000\u0000\u0000\u0f00\u0f01\u0007\t\u0000\u0000\u0f01"+ - "\u0f02\u0007\u0010\u0000\u0000\u0f02\u0f03\u0007\u0013\u0000\u0000\u0f03"+ - "\u0f04\u0007\r\u0000\u0000\u0f04\u0f05\u0007\u0005\u0000\u0000\u0f05\u0f06"+ - "\u0007\u0017\u0000\u0000\u0f06\u0f07\u0007\n\u0000\u0000\u0f07\u02b0\u0001"+ - "\u0000\u0000\u0000\u0f08\u0f09\u0007\t\u0000\u0000\u0f09\u0f0a\u0007\u0010"+ - "\u0000\u0000\u0f0a\u0f0b\u0007\r\u0000\u0000\u0f0b\u0f0c\u0007\u0011\u0000"+ - "\u0000\u0f0c\u0f0d\u0007\u000e\u0000\u0000\u0f0d\u0f0e\u0007\u0010\u0000"+ - "\u0000\u0f0e\u02b2\u0001\u0000\u0000\u0000\u0f0f\u0f10\u0007\t\u0000\u0000"+ - "\u0f10\u0f11\u0007\u0010\u0000\u0000\u0f11\u0f12\u0007\r\u0000\u0000\u0f12"+ - "\u0f13\u0007\u0011\u0000\u0000\u0f13\u0f14\u0007\u0018\u0000\u0000\u0f14"+ - "\u02b4\u0001\u0000\u0000\u0000\u0f15\u0f16\u0007\t\u0000\u0000\u0f16\u0f17"+ - "\u0007\b\u0000\u0000\u0f17\u0f18\u0007\t\u0000\u0000\u0f18\u0f19\u0007"+ - "\u0011\u0000\u0000\u0f19\u0f1a\u0007\f\u0000\u0000\u0f1a\u02b6\u0001\u0000"+ - "\u0000\u0000\u0f1b\u0f1c\u0007\t\u0000\u0000\u0f1c\u0f1d\u0007\b\u0000"+ - "\u0000\u0f1d\u0f1e\u0007\t\u0000\u0000\u0f1e\u0f1f\u0007\u0010\u0000\u0000"+ - "\u0f1f\u0f20\u0007\n\u0000\u0000\u0f20\u0f21\u0007\u000f\u0000\u0000\u0f21"+ - "\u02b8\u0001\u0000\u0000\u0000\u0f22\u0f23\u0007\u0010\u0000\u0000\u0f23"+ - "\u0f24\u0007\u0005\u0000\u0000\u0f24\u0f25\u0007\u0012\u0000\u0000\u0f25"+ - "\u0f26\u0007\u0006\u0000\u0000\u0f26\u0f27\u0007\n\u0000\u0000\u0f27\u0f28"+ - "\u0007\t\u0000\u0000\u0f28\u02ba\u0001\u0000\u0000\u0000\u0f29\u0f2a\u0007"+ - "\u0010\u0000\u0000\u0f2a\u0f2b\u0007\u0005\u0000\u0000\u0f2b\u0f2c\u0007"+ - "\u0012\u0000\u0000\u0f2c\u0f2d\u0007\u0006\u0000\u0000\u0f2d\u0f2e\u0007"+ - "\n\u0000\u0000\u0f2e\u0f2f\u0007\t\u0000\u0000\u0f2f\u0f30\u0007\u0018"+ - "\u0000\u0000\u0f30\u0f31\u0007\u0005\u0000\u0000\u0f31\u0f32\u0007\u000e"+ - "\u0000\u0000\u0f32\u0f33\u0007\n\u0000\u0000\u0f33\u02bc\u0001\u0000\u0000"+ - "\u0000\u0f34\u0f35\u0007\u0010\u0000\u0000\u0f35\u0f36\u0007\n\u0000\u0000"+ - "\u0f36\u0f37\u0007\u000f\u0000\u0000\u0f37\u0f38\u0007\u0018\u0000\u0000"+ - "\u0f38\u02be\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0007\u0010\u0000\u0000"+ - "\u0f3a\u0f3b\u0007\n\u0000\u0000\u0f3b\u0f3c\u0007\u000f\u0000\u0000\u0f3c"+ - "\u0f3d\u0007\u0018\u0000\u0000\u0f3d\u0f3e\u0007\u0006\u0000\u0000\u0f3e"+ - "\u0f3f\u0007\u0005\u0000\u0000\u0f3f\u0f40\u0007\u0010\u0000\u0000\u0f40"+ - "\u0f41\u0007\n\u0000\u0000\u0f41\u02c0\u0001\u0000\u0000\u0000\u0f42\u0f43"+ - "\u0007\u0010\u0000\u0000\u0f43\u0f44\u0007\n\u0000\u0000\u0f44\u0f45\u0007"+ - "\u000f\u0000\u0000\u0f45\u0f46\u0007\u0018\u0000\u0000\u0f46\u0f47\u0007"+ - "\u0013\u0000\u0000\u0f47\u0f48\u0007\r\u0000\u0000\u0f48\u0f49\u0007\u0005"+ - "\u0000\u0000\u0f49\u0f4a\u0007\r\u0000\u0000\u0f4a\u0f4b\u0007\b\u0000"+ - "\u0000\u0f4b\u02c2\u0001\u0000\u0000\u0000\u0f4c\u0f4d\u0007\u0010\u0000"+ - "\u0000\u0f4d\u0f4e\u0007\n\u0000\u0000\u0f4e\u0f4f\u0007\u001a\u0000\u0000"+ - "\u0f4f\u0f50\u0007\u0010\u0000\u0000\u0f50\u02c4\u0001\u0000\u0000\u0000"+ - "\u0f51\u0f52\u0007\u0010\u0000\u0000\u0f52\u0f53\u0007\r\u0000\u0000\u0f53"+ - "\u0f54\u0007\u0005\u0000\u0000\u0f54\u0f55\u0007\u0007\u0000\u0000\u0f55"+ - "\u0f56\u0007\t\u0000\u0000\u0f56\u0f57\u0007\u0005\u0000\u0000\u0f57\u0f58"+ - "\u0007\u000e\u0000\u0000\u0f58\u0f59\u0007\u0010\u0000\u0000\u0f59\u0f5a"+ - "\u0007\u0011\u0000\u0000\u0f5a\u0f5b\u0007\u0013\u0000\u0000\u0f5b\u0f5c"+ - "\u0007\u0007\u0000\u0000\u0f5c\u02c6\u0001\u0000\u0000\u0000\u0f5d\u0f5e"+ - "\u0007\u0010\u0000\u0000\u0f5e\u0f5f\u0007\r\u0000\u0000\u0f5f\u0f60\u0007"+ - "\u0011\u0000\u0000\u0f60\u0f61\u0007\u0017\u0000\u0000\u0f61\u0f62\u0007"+ - "\u0017\u0000\u0000\u0f62\u0f63\u0007\n\u0000\u0000\u0f63\u0f64\u0007\r"+ - "\u0000\u0000\u0f64\u02c8\u0001\u0000\u0000\u0000\u0f65\u0f66\u0007\u0010"+ - "\u0000\u0000\u0f66\u0f67\u0007\r\u0000\u0000\u0f67\u0f68\u0007\u0016\u0000"+ - "\u0000\u0f68\u0f69\u0007\u0007\u0000\u0000\u0f69\u0f6a\u0007\u000e\u0000"+ - "\u0000\u0f6a\u0f6b\u0007\u0005\u0000\u0000\u0f6b\u0f6c\u0007\u0010\u0000"+ - "\u0000\u0f6c\u0f6d\u0007\n\u0000\u0000\u0f6d\u02ca\u0001\u0000\u0000\u0000"+ - "\u0f6e\u0f6f\u0007\u0010\u0000\u0000\u0f6f\u0f70\u0007\r\u0000\u0000\u0f70"+ - "\u0f71\u0007\u0016\u0000\u0000\u0f71\u0f72\u0007\t\u0000\u0000\u0f72\u0f73"+ - "\u0007\u0010\u0000\u0000\u0f73\u0f74\u0007\n\u0000\u0000\u0f74\u0f75\u0007"+ - "\f\u0000\u0000\u0f75\u02cc\u0001\u0000\u0000\u0000\u0f76\u0f77\u0007\u0010"+ - "\u0000\u0000\u0f77\u0f78\u0007\b\u0000\u0000\u0f78\u0f79\u0007\u0018\u0000"+ - "\u0000\u0f79\u0f7a\u0007\n\u0000\u0000\u0f7a\u02ce\u0001\u0000\u0000\u0000"+ - "\u0f7b\u0f7c\u0007\u0010\u0000\u0000\u0f7c\u0f7d\u0007\b\u0000\u0000\u0f7d"+ - "\u0f7e\u0007\u0018\u0000\u0000\u0f7e\u0f7f\u0007\n\u0000\u0000\u0f7f\u0f80"+ - "\u0007\t\u0000\u0000\u0f80\u02d0\u0001\u0000\u0000\u0000\u0f81\u0f82\u0007"+ - "\u0016\u0000\u0000\u0f82\u0f83\u0007\u0007\u0000\u0000\u0f83\u0f84\u0007"+ - "\u0012\u0000\u0000\u0f84\u0f85\u0007\u0013\u0000\u0000\u0f85\u0f86\u0007"+ - "\u0016\u0000\u0000\u0f86\u0f87\u0007\u0007\u0000\u0000\u0f87\u0f88\u0007"+ - "\f\u0000\u0000\u0f88\u0f89\u0007\n\u0000\u0000\u0f89\u0f8a\u0007\f\u0000"+ - "\u0000\u0f8a\u02d2\u0001\u0000\u0000\u0000\u0f8b\u0f8c\u0007\u0016\u0000"+ - "\u0000\u0f8c\u0f8d\u0007\u0007\u0000\u0000\u0f8d\u0f8e\u0007\u000e\u0000"+ - "\u0000\u0f8e\u0f8f\u0007\u0013\u0000\u0000\u0f8f\u0f90\u0007\u000f\u0000"+ - "\u0000\u0f90\u0f91\u0007\u000f\u0000\u0000\u0f91\u0f92\u0007\u0011\u0000"+ - "\u0000\u0f92\u0f93\u0007\u0010\u0000\u0000\u0f93\u0f94\u0007\u0010\u0000"+ - "\u0000\u0f94\u0f95\u0007\n\u0000\u0000\u0f95\u0f96\u0007\f\u0000\u0000"+ - "\u0f96\u02d4\u0001\u0000\u0000\u0000\u0f97\u0f98\u0007\u0016\u0000\u0000"+ - "\u0f98\u0f99\u0007\u0007\u0000\u0000\u0f99\u0f9a\u0007\n\u0000\u0000\u0f9a"+ - "\u0f9b\u0007\u0007\u0000\u0000\u0f9b\u0f9c\u0007\u000e\u0000\u0000\u0f9c"+ - "\u0f9d\u0007\r\u0000\u0000\u0f9d\u0f9e\u0007\b\u0000\u0000\u0f9e\u0f9f"+ - "\u0007\u0018\u0000\u0000\u0f9f\u0fa0\u0007\u0010\u0000\u0000\u0fa0\u0fa1"+ - "\u0007\n\u0000\u0000\u0fa1\u0fa2\u0007\f\u0000\u0000\u0fa2\u02d6\u0001"+ - "\u0000\u0000\u0000\u0fa3\u0fa4\u0007\u0016\u0000\u0000\u0fa4\u0fa5\u0007"+ - "\u0007\u0000\u0000\u0fa5\u0fa6\u0007\u0015\u0000\u0000\u0fa6\u0fa7\u0007"+ - "\u0007\u0000\u0000\u0fa7\u0fa8\u0007\u0013\u0000\u0000\u0fa8\u0fa9\u0007"+ - "\u001d\u0000\u0000\u0fa9\u0faa\u0007\u0007\u0000\u0000\u0faa\u02d8\u0001"+ - "\u0000\u0000\u0000\u0fab\u0fac\u0007\u0016\u0000\u0000\u0fac\u0fad\u0007"+ - "\u0007\u0000\u0000\u0fad\u0fae\u0007\u0006\u0000\u0000\u0fae\u0faf\u0007"+ - "\u0011\u0000\u0000\u0faf\u0fb0\u0007\t\u0000\u0000\u0fb0\u0fb1\u0007\u0010"+ - "\u0000\u0000\u0fb1\u0fb2\u0007\n\u0000\u0000\u0fb2\u0fb3\u0007\u0007\u0000"+ - "\u0000\u0fb3\u02da\u0001\u0000\u0000\u0000\u0fb4\u0fb5\u0007\u0016\u0000"+ - "\u0000\u0fb5\u0fb6\u0007\u0007\u0000\u0000\u0fb6\u0fb7\u0007\u0006\u0000"+ - "\u0000\u0fb7\u0fb8\u0007\u0013\u0000\u0000\u0fb8\u0fb9\u0007\u0017\u0000"+ - "\u0000\u0fb9\u0fba\u0007\u0017\u0000\u0000\u0fba\u0fbb\u0007\n\u0000\u0000"+ - "\u0fbb\u0fbc\u0007\f\u0000\u0000\u0fbc\u02dc\u0001\u0000\u0000\u0000\u0fbd"+ - "\u0fbe\u0007\u0016\u0000\u0000\u0fbe\u0fbf\u0007\u0007\u0000\u0000\u0fbf"+ - "\u0fc0\u0007\u0010\u0000\u0000\u0fc0\u0fc1\u0007\u0011\u0000\u0000\u0fc1"+ - "\u0fc2\u0007\u0006\u0000\u0000\u0fc2\u02de\u0001\u0000\u0000\u0000\u0fc3"+ - "\u0fc4\u0007\u0016\u0000\u0000\u0fc4\u0fc5\u0007\u0018\u0000\u0000\u0fc5"+ - "\u0fc6\u0007\f\u0000\u0000\u0fc6\u0fc7\u0007\u0005\u0000\u0000\u0fc7\u0fc8"+ - "\u0007\u0010\u0000\u0000\u0fc8\u0fc9\u0007\n\u0000\u0000\u0fc9\u02e0\u0001"+ - "\u0000\u0000\u0000\u0fca\u0fcb\u0007\u001b\u0000\u0000\u0fcb\u0fcc\u0007"+ - "\u0005\u0000\u0000\u0fcc\u0fcd\u0007\u000e\u0000\u0000\u0fcd\u0fce\u0007"+ - "\u0016\u0000\u0000\u0fce\u0fcf\u0007\u0016\u0000\u0000\u0fcf\u0fd0\u0007"+ - "\u000f\u0000\u0000\u0fd0\u02e2\u0001\u0000\u0000\u0000\u0fd1\u0fd2\u0007"+ - "\u001b\u0000\u0000\u0fd2\u0fd3\u0007\u0005\u0000\u0000\u0fd3\u0fd4\u0007"+ - "\u0006\u0000\u0000\u0fd4\u0fd5\u0007\u0011\u0000\u0000\u0fd5\u0fd6\u0007"+ - "\f\u0000\u0000\u0fd6\u02e4\u0001\u0000\u0000\u0000\u0fd7\u0fd8\u0007\u001b"+ - "\u0000\u0000\u0fd8\u0fd9\u0007\u0005\u0000\u0000\u0fd9\u0fda\u0007\u0006"+ - "\u0000\u0000\u0fda\u0fdb\u0007\u0011\u0000\u0000\u0fdb\u0fdc\u0007\f\u0000"+ - "\u0000\u0fdc\u0fdd\u0007\u0005\u0000\u0000\u0fdd\u0fde\u0007\u0010\u0000"+ - "\u0000\u0fde\u0fdf\u0007\n\u0000\u0000\u0fdf\u02e6\u0001\u0000\u0000\u0000"+ - "\u0fe0\u0fe1\u0007\u001b\u0000\u0000\u0fe1\u0fe2\u0007\u0005\u0000\u0000"+ - "\u0fe2\u0fe3\u0007\u0006\u0000\u0000\u0fe3\u0fe4\u0007\u0011\u0000\u0000"+ - "\u0fe4\u0fe5\u0007\f\u0000\u0000\u0fe5\u0fe6\u0007\u0005\u0000\u0000\u0fe6"+ - "\u0fe7\u0007\u0010\u0000\u0000\u0fe7\u0fe8\u0007\u0013\u0000\u0000\u0fe8"+ - "\u0fe9\u0007\r\u0000\u0000\u0fe9\u02e8\u0001\u0000\u0000\u0000\u0fea\u0feb"+ - "\u0007\u001b\u0000\u0000\u0feb\u0fec\u0007\u0005\u0000\u0000\u0fec\u0fed"+ - "\u0007\r\u0000\u0000\u0fed\u0fee\u0007\b\u0000\u0000\u0fee\u0fef\u0007"+ - "\u0011\u0000\u0000\u0fef\u0ff0\u0007\u0007\u0000\u0000\u0ff0\u0ff1\u0007"+ - "\u0017\u0000\u0000\u0ff1\u02ea\u0001\u0000\u0000\u0000\u0ff2\u0ff3\u0007"+ - "\u001b\u0000\u0000\u0ff3\u0ff4\u0007\n\u0000\u0000\u0ff4\u0ff5\u0007\r"+ - "\u0000\u0000\u0ff5\u0ff6\u0007\t\u0000\u0000\u0ff6\u0ff7\u0007\u0011\u0000"+ - "\u0000\u0ff7\u0ff8\u0007\u0013\u0000\u0000\u0ff8\u0ff9\u0007\u0007\u0000"+ - "\u0000\u0ff9\u02ec\u0001\u0000\u0000\u0000\u0ffa\u0ffb\u0007\u001b\u0000"+ - "\u0000\u0ffb\u0ffc\u0007\u0011\u0000\u0000\u0ffc\u0ffd\u0007\n\u0000\u0000"+ - "\u0ffd\u0ffe\u0007\u001d\u0000\u0000\u0ffe\u02ee\u0001\u0000\u0000\u0000"+ - "\u0fff\u1000\u0007\u001b\u0000\u0000\u1000\u1001\u0007\u0013\u0000\u0000"+ - "\u1001\u1002\u0007\u0006\u0000\u0000\u1002\u1003\u0007\u0005\u0000\u0000"+ - "\u1003\u1004\u0007\u0010\u0000\u0000\u1004\u1005\u0007\u0011\u0000\u0000"+ - "\u1005\u1006\u0007\u0006\u0000\u0000\u1006\u1007\u0007\n\u0000\u0000\u1007"+ - "\u02f0\u0001\u0000\u0000\u0000\u1008\u1009\u0007\u001d\u0000\u0000\u1009"+ - "\u100a\u0007\u0014\u0000\u0000\u100a\u100b\u0007\u0011\u0000\u0000\u100b"+ - "\u100c\u0007\u0010\u0000\u0000\u100c\u100d\u0007\n\u0000\u0000\u100d\u100e"+ - "\u0007\t\u0000\u0000\u100e\u100f\u0007\u0018\u0000\u0000\u100f\u1010\u0007"+ - "\u0005\u0000\u0000\u1010\u1011\u0007\u000e\u0000\u0000\u1011\u1012\u0007"+ - "\n\u0000\u0000\u1012\u02f2\u0001\u0000\u0000\u0000\u1013\u1014\u0007\u001d"+ - "\u0000\u0000\u1014\u1015\u0007\u0011\u0000\u0000\u1015\u1016\u0007\u0010"+ - "\u0000\u0000\u1016\u1017\u0007\u0014\u0000\u0000\u1017\u1018\u0007\u0013"+ - "\u0000\u0000\u1018\u1019\u0007\u0016\u0000\u0000\u1019\u101a\u0007\u0010"+ - "\u0000\u0000\u101a\u02f4\u0001\u0000\u0000\u0000\u101b\u101c\u0007\u001d"+ - "\u0000\u0000\u101c\u101d\u0007\u0013\u0000\u0000\u101d\u101e\u0007\r\u0000"+ - "\u0000\u101e\u101f\u0007\u0015\u0000\u0000\u101f\u02f6\u0001\u0000\u0000"+ - "\u0000\u1020\u1021\u0007\u001d\u0000\u0000\u1021\u1022\u0007\r\u0000\u0000"+ - "\u1022\u1023\u0007\u0005\u0000\u0000\u1023\u1024\u0007\u0018\u0000\u0000"+ - "\u1024\u1025\u0007\u0018\u0000\u0000\u1025\u1026\u0007\n\u0000\u0000\u1026"+ - "\u1027\u0007\r\u0000\u0000\u1027\u02f8\u0001\u0000\u0000\u0000\u1028\u1029"+ - "\u0007\u001d\u0000\u0000\u1029\u102a\u0007\r\u0000\u0000\u102a\u102b\u0007"+ - "\u0011\u0000\u0000\u102b\u102c\u0007\u0010\u0000\u0000\u102c\u102d\u0007"+ - "\n\u0000\u0000\u102d\u02fa\u0001\u0000\u0000\u0000\u102e\u102f\u0007\u001a"+ - "\u0000\u0000\u102f\u1030\u0007\u000f\u0000\u0000\u1030\u1031\u0007\u0006"+ - "\u0000\u0000\u1031\u02fc\u0001\u0000\u0000\u0000\u1032\u1033\u0007\b\u0000"+ - "\u0000\u1033\u1034\u0007\n\u0000\u0000\u1034\u1035\u0007\u0005\u0000\u0000"+ - "\u1035\u1036\u0007\r\u0000\u0000\u1036\u02fe\u0001\u0000\u0000\u0000\u1037"+ - "\u1038\u0007\b\u0000\u0000\u1038\u1039\u0007\n\u0000\u0000\u1039\u103a"+ - "\u0007\t\u0000\u0000\u103a\u0300\u0001\u0000\u0000\u0000\u103b\u103c\u0007"+ - "\u000b\u0000\u0000\u103c\u103d\u0007\u0013\u0000\u0000\u103d\u103e\u0007"+ - "\u0007\u0000\u0000\u103e\u103f\u0007\n\u0000\u0000\u103f\u0302\u0001\u0000"+ - "\u0000\u0000\u1040\u1041\u0007\u0012\u0000\u0000\u1041\u1042\u0007\n\u0000"+ - "\u0000\u1042\u1043\u0007\u0010\u0000\u0000\u1043\u1044\u0007\u001d\u0000"+ - "\u0000\u1044\u1045\u0007\n\u0000\u0000\u1045\u1046\u0007\n\u0000\u0000"+ - "\u1046\u1047\u0007\u0007\u0000\u0000\u1047\u0304\u0001\u0000\u0000\u0000"+ - "\u1048\u1049\u0007\u0012\u0000\u0000\u1049\u104a\u0007\u0011\u0000\u0000"+ - "\u104a\u104b\u0007\u0017\u0000\u0000\u104b\u104c\u0007\u0011\u0000\u0000"+ - "\u104c\u104d\u0007\u0007\u0000\u0000\u104d\u104e\u0007\u0010\u0000\u0000"+ - "\u104e\u0306\u0001\u0000\u0000\u0000\u104f\u1050\u0007\u0012\u0000\u0000"+ - "\u1050\u1051\u0007\u0011\u0000\u0000\u1051\u1052\u0007\u0010\u0000\u0000"+ - "\u1052\u0308\u0001\u0000\u0000\u0000\u1053\u1054\u0007\u0012\u0000\u0000"+ - "\u1054\u1055\u0007\u0013\u0000\u0000\u1055\u1056\u0007\u0013\u0000\u0000"+ - "\u1056\u1057\u0007\u0006\u0000\u0000\u1057\u1058\u0007\n\u0000\u0000\u1058"+ - "\u1059\u0007\u0005\u0000\u0000\u1059\u105a\u0007\u0007\u0000\u0000\u105a"+ - "\u030a\u0001\u0000\u0000\u0000\u105b\u105c\u0007\u000e\u0000\u0000\u105c"+ - "\u105d\u0007\u0014\u0000\u0000\u105d\u105e\u0007\u0005\u0000\u0000\u105e"+ - "\u105f\u0007\r\u0000\u0000\u105f\u030c\u0001\u0000\u0000\u0000\u1060\u1061"+ - "\u0007\u000e\u0000\u0000\u1061\u1062\u0007\u0014\u0000\u0000\u1062\u1063"+ - "\u0007\u0005\u0000\u0000\u1063\u1064\u0007\r\u0000\u0000\u1064\u1065\u0007"+ - "\u0005\u0000\u0000\u1065\u1066\u0007\u000e\u0000\u0000\u1066\u1067\u0007"+ - "\u0010\u0000\u0000\u1067\u1068\u0007\n\u0000\u0000\u1068\u1069\u0007\r"+ - "\u0000\u0000\u1069\u030e\u0001\u0000\u0000\u0000\u106a\u106b\u0007\u000e"+ - "\u0000\u0000\u106b\u106c\u0007\u0013\u0000\u0000\u106c\u106d\u0007\u0005"+ - "\u0000\u0000\u106d\u106e\u0007\u0006\u0000\u0000\u106e\u106f\u0007\n\u0000"+ - "\u0000\u106f\u1070\u0007\t\u0000\u0000\u1070\u1071\u0007\u000e\u0000\u0000"+ - "\u1071\u1072\u0007\n\u0000\u0000\u1072\u0310\u0001\u0000\u0000\u0000\u1073"+ - "\u1074\u0007\f\u0000\u0000\u1074\u1075\u0007\n\u0000\u0000\u1075\u1076"+ - "\u0007\u000e\u0000\u0000\u1076\u0312\u0001\u0000\u0000\u0000\u1077\u1078"+ - "\u0007\f\u0000\u0000\u1078\u1079\u0007\n\u0000\u0000\u1079\u107a\u0007"+ - "\u000e\u0000\u0000\u107a\u107b\u0007\u0011\u0000\u0000\u107b\u107c\u0007"+ - "\u000f\u0000\u0000\u107c\u107d\u0007\u0005\u0000\u0000\u107d\u107e\u0007"+ - "\u0006\u0000\u0000\u107e\u0314\u0001\u0000\u0000\u0000\u107f\u1080\u0007"+ - "\n\u0000\u0000\u1080\u1081\u0007\u001a\u0000\u0000\u1081\u1082\u0007\u0011"+ - "\u0000\u0000\u1082\u1083\u0007\t\u0000\u0000\u1083\u1084\u0007\u0010\u0000"+ - "\u0000\u1084\u1085\u0007\t\u0000\u0000\u1085\u0316\u0001\u0000\u0000\u0000"+ - "\u1086\u1087\u0007\n\u0000\u0000\u1087\u1088\u0007\u001a\u0000\u0000\u1088"+ - "\u1089\u0007\u0010\u0000\u0000\u1089\u108a\u0007\r\u0000\u0000\u108a\u108b"+ - "\u0007\u0005\u0000\u0000\u108b\u108c\u0007\u000e\u0000\u0000\u108c\u108d"+ - "\u0007\u0010\u0000\u0000\u108d\u0318\u0001\u0000\u0000\u0000\u108e\u108f"+ - "\u0007\u0019\u0000\u0000\u108f\u1090\u0007\u0006\u0000\u0000\u1090\u1091"+ - "\u0007\u0013\u0000\u0000\u1091\u1092\u0007\u0005\u0000\u0000\u1092\u1093"+ - "\u0007\u0010\u0000\u0000\u1093\u031a\u0001\u0000\u0000\u0000\u1094\u1095"+ - "\u0007\u0017\u0000\u0000\u1095\u1096\u0007\r\u0000\u0000\u1096\u1097\u0007"+ - "\n\u0000\u0000\u1097\u1098\u0007\u0005\u0000\u0000\u1098\u1099\u0007\u0010"+ - "\u0000\u0000\u1099\u109a\u0007\n\u0000\u0000\u109a\u109b\u0007\t\u0000"+ - "\u0000\u109b\u109c\u0007\u0010\u0000\u0000\u109c\u031c\u0001\u0000\u0000"+ - "\u0000\u109d\u109e\u0007\u0011\u0000\u0000\u109e\u109f\u0007\u0007\u0000"+ - "\u0000\u109f\u10a0\u0007\u0013\u0000\u0000\u10a0\u10a1\u0007\u0016\u0000"+ - "\u0000\u10a1\u10a2\u0007\u0010\u0000\u0000\u10a2\u031e\u0001\u0000\u0000"+ - "\u0000\u10a3\u10a4\u0007\u0011\u0000\u0000\u10a4\u10a5\u0007\u0007\u0000"+ - "\u0000\u10a5\u10a6\u0007\u0010\u0000\u0000\u10a6\u0320\u0001\u0000\u0000"+ - "\u0000\u10a7\u10a8\u0007\u0011\u0000\u0000\u10a8\u10a9\u0007\u0007\u0000"+ - "\u0000\u10a9\u10aa\u0007\u0010\u0000\u0000\u10aa\u10ab\u0007\n\u0000\u0000"+ - "\u10ab\u10ac\u0007\u0017\u0000\u0000\u10ac\u10ad\u0007\n\u0000\u0000\u10ad"+ - "\u10ae\u0007\r\u0000\u0000\u10ae\u0322\u0001\u0000\u0000\u0000\u10af\u10b0"+ - "\u0007\u0011\u0000\u0000\u10b0\u10b1\u0007\u0007\u0000\u0000\u10b1\u10b2"+ - "\u0007\u0010\u0000\u0000\u10b2\u10b3\u0007\n\u0000\u0000\u10b3\u10b4\u0007"+ - "\r\u0000\u0000\u10b4\u10b5\u0007\u001b\u0000\u0000\u10b5\u10b6\u0007\u0005"+ - "\u0000\u0000\u10b6\u10b7\u0007\u0006\u0000\u0000\u10b7\u0324\u0001\u0000"+ - "\u0000\u0000\u10b8\u10b9\u0007\u0006\u0000\u0000\u10b9\u10ba\u0007\n\u0000"+ - "\u0000\u10ba\u10bb\u0007\u0005\u0000\u0000\u10bb\u10bc\u0007\t\u0000\u0000"+ - "\u10bc\u10bd\u0007\u0010\u0000\u0000\u10bd\u0326\u0001\u0000\u0000\u0000"+ - "\u10be\u10bf\u0007\u0007\u0000\u0000\u10bf\u10c0\u0007\u0005\u0000\u0000"+ - "\u10c0\u10c1\u0007\u0010\u0000\u0000\u10c1\u10c2\u0007\u0011\u0000\u0000"+ - "\u10c2\u10c3\u0007\u0013\u0000\u0000\u10c3\u10c4\u0007\u0007\u0000\u0000"+ - "\u10c4\u10c5\u0007\u0005\u0000\u0000\u10c5\u10c6\u0007\u0006\u0000\u0000"+ - "\u10c6\u0328\u0001\u0000\u0000\u0000\u10c7\u10c8\u0007\u0007\u0000\u0000"+ - "\u10c8\u10c9\u0007\u000e\u0000\u0000\u10c9\u10ca\u0007\u0014\u0000\u0000"+ - "\u10ca\u10cb\u0007\u0005\u0000\u0000\u10cb\u10cc\u0007\r\u0000\u0000\u10cc"+ - "\u032a\u0001\u0000\u0000\u0000\u10cd\u10ce\u0007\u0007\u0000\u0000\u10ce"+ - "\u10cf\u0007\u0013\u0000\u0000\u10cf\u10d0\u0007\u0007\u0000\u0000\u10d0"+ - "\u10d1\u0007\n\u0000\u0000\u10d1\u032c\u0001\u0000\u0000\u0000\u10d2\u10d3"+ - "\u0007\u0007\u0000\u0000\u10d3\u10d4\u0007\u0016\u0000\u0000\u10d4\u10d5"+ - "\u0007\u0006\u0000\u0000\u10d5\u10d6\u0007\u0006\u0000\u0000\u10d6\u10d7"+ - "\u0007\u0011\u0000\u0000\u10d7\u10d8\u0007\u0019\u0000\u0000\u10d8\u032e"+ - "\u0001\u0000\u0000\u0000\u10d9\u10da\u0007\u0007\u0000\u0000\u10da\u10db"+ - "\u0007\u0016\u0000\u0000\u10db\u10dc\u0007\u000f\u0000\u0000\u10dc\u10dd"+ - "\u0007\n\u0000\u0000\u10dd\u10de\u0007\r\u0000\u0000\u10de\u10df\u0007"+ - "\u0011\u0000\u0000\u10df\u10e0\u0007\u000e\u0000\u0000\u10e0\u0330\u0001"+ - "\u0000\u0000\u0000\u10e1\u10e2\u0007\u0013\u0000\u0000\u10e2\u10e3\u0007"+ - "\u001b\u0000\u0000\u10e3\u10e4\u0007\n\u0000\u0000\u10e4\u10e5\u0007\r"+ - "\u0000\u0000\u10e5\u10e6\u0007\u0006\u0000\u0000\u10e6\u10e7\u0007\u0005"+ - "\u0000\u0000\u10e7\u10e8\u0007\b\u0000\u0000\u10e8\u0332\u0001\u0000\u0000"+ - "\u0000\u10e9\u10ea\u0007\u0018\u0000\u0000\u10ea\u10eb\u0007\u0013\u0000"+ - "\u0000\u10eb\u10ec\u0007\t\u0000\u0000\u10ec\u10ed\u0007\u0011\u0000\u0000"+ - "\u10ed\u10ee\u0007\u0010\u0000\u0000\u10ee\u10ef\u0007\u0011\u0000\u0000"+ - "\u10ef\u10f0\u0007\u0013\u0000\u0000\u10f0\u10f1\u0007\u0007\u0000\u0000"+ - "\u10f1\u0334\u0001\u0000\u0000\u0000\u10f2\u10f3\u0007\u0018\u0000\u0000"+ - "\u10f3\u10f4\u0007\r\u0000\u0000\u10f4\u10f5\u0007\n\u0000\u0000\u10f5"+ - "\u10f6\u0007\u000e\u0000\u0000\u10f6\u10f7\u0007\u0011\u0000\u0000\u10f7"+ - "\u10f8\u0007\t\u0000\u0000\u10f8\u10f9\u0007\u0011\u0000\u0000\u10f9\u10fa"+ - "\u0007\u0013\u0000\u0000\u10fa\u10fb\u0007\u0007\u0000\u0000\u10fb\u0336"+ - "\u0001\u0000\u0000\u0000\u10fc\u10fd\u0007\r\u0000\u0000\u10fd\u10fe\u0007"+ - "\n\u0000\u0000\u10fe\u10ff\u0007\u0005\u0000\u0000\u10ff\u1100\u0007\u0006"+ - "\u0000\u0000\u1100\u0338\u0001\u0000\u0000\u0000\u1101\u1102\u0007\r\u0000"+ - "\u0000\u1102\u1103\u0007\u0013\u0000\u0000\u1103\u1104\u0007\u001d\u0000"+ - "\u0000\u1104\u033a\u0001\u0000\u0000\u0000\u1105\u1106\u0007\t\u0000\u0000"+ - "\u1106\u1107\u0007\n\u0000\u0000\u1107\u1108\u0007\u0010\u0000\u0000\u1108"+ - "\u1109\u0007\u0013\u0000\u0000\u1109\u110a\u0007\u0019\u0000\u0000\u110a"+ - "\u033c\u0001\u0000\u0000\u0000\u110b\u110c\u0007\t\u0000\u0000\u110c\u110d"+ - "\u0007\u000f\u0000\u0000\u110d\u110e\u0007\u0005\u0000\u0000\u110e\u110f"+ - "\u0007\u0006\u0000\u0000\u110f\u1110\u0007\u0006\u0000\u0000\u1110\u1111"+ - "\u0007\u0011\u0000\u0000\u1111\u1112\u0007\u0007\u0000\u0000\u1112\u1113"+ - "\u0007\u0010\u0000\u0000\u1113\u033e\u0001\u0000\u0000\u0000\u1114\u1115"+ - "\u0007\t\u0000\u0000\u1115\u1116\u0007\u0016\u0000\u0000\u1116\u1117\u0007"+ - "\u0012\u0000\u0000\u1117\u1118\u0007\t\u0000\u0000\u1118\u1119\u0007\u0010"+ - "\u0000\u0000\u1119\u111a\u0007\r\u0000\u0000\u111a\u111b\u0007\u0011\u0000"+ - "\u0000\u111b\u111c\u0007\u0007\u0000\u0000\u111c\u111d\u0007\u0017\u0000"+ - "\u0000\u111d\u0340\u0001\u0000\u0000\u0000\u111e\u111f\u0007\u0010\u0000"+ - "\u0000\u111f\u1120\u0007\u0011\u0000\u0000\u1120\u1121\u0007\u000f\u0000"+ - "\u0000\u1121\u1122\u0007\n\u0000\u0000\u1122\u0342\u0001\u0000\u0000\u0000"+ - "\u1123\u1124\u0007\u0010\u0000\u0000\u1124\u1125\u0007\u0011\u0000\u0000"+ - "\u1125\u1126\u0007\u000f\u0000\u0000\u1126\u1127\u0007\n\u0000\u0000\u1127"+ - "\u1128\u0007\t\u0000\u0000\u1128\u1129\u0007\u0010\u0000\u0000\u1129\u112a"+ - "\u0007\u0005\u0000\u0000\u112a\u112b\u0007\u000f\u0000\u0000\u112b\u112c"+ - "\u0007\u0018\u0000\u0000\u112c\u0344\u0001\u0000\u0000\u0000\u112d\u112e"+ - "\u0007\u0010\u0000\u0000\u112e\u112f\u0007\r\u0000\u0000\u112f\u1130\u0007"+ - "\n\u0000\u0000\u1130\u1131\u0007\u0005\u0000\u0000\u1131\u1132\u0007\u0010"+ - "\u0000\u0000\u1132\u0346\u0001\u0000\u0000\u0000\u1133\u1134\u0007\u0010"+ - "\u0000\u0000\u1134\u1135\u0007\r\u0000\u0000\u1135\u1136\u0007\u0011\u0000"+ - "\u0000\u1136\u1137\u0007\u000f\u0000\u0000\u1137\u0348\u0001\u0000\u0000"+ - "\u0000\u1138\u1139\u0007\u001b\u0000\u0000\u1139\u113a\u0007\u0005\u0000"+ - "\u0000\u113a\u113b\u0007\u0006\u0000\u0000\u113b\u113c\u0007\u0016\u0000"+ - "\u0000\u113c\u113d\u0007\n\u0000\u0000\u113d\u113e\u0007\t\u0000\u0000"+ - "\u113e\u034a\u0001\u0000\u0000\u0000\u113f\u1140\u0007\u001b\u0000\u0000"+ - "\u1140\u1141\u0007\u0005\u0000\u0000\u1141\u1142\u0007\r\u0000\u0000\u1142"+ - "\u1143\u0007\u000e\u0000\u0000\u1143\u1144\u0007\u0014\u0000\u0000\u1144"+ - "\u1145\u0007\u0005\u0000\u0000\u1145\u1146\u0007\r\u0000\u0000\u1146\u034c"+ - "\u0001\u0000\u0000\u0000\u1147\u1148\u0007\u001a\u0000\u0000\u1148\u1149"+ - "\u0007\u000f\u0000\u0000\u1149\u114a\u0007\u0006\u0000\u0000\u114a\u114b"+ - "\u0007\u0005\u0000\u0000\u114b\u114c\u0007\u0010\u0000\u0000\u114c\u114d"+ - "\u0007\u0010\u0000\u0000\u114d\u114e\u0007\r\u0000\u0000\u114e\u114f\u0007"+ - "\u0011\u0000\u0000\u114f\u1150\u0007\u0012\u0000\u0000\u1150\u1151\u0007"+ - "\u0016\u0000\u0000\u1151\u1152\u0007\u0010\u0000\u0000\u1152\u1153\u0007"+ - "\n\u0000\u0000\u1153\u1154\u0007\t\u0000\u0000\u1154\u034e\u0001\u0000"+ - "\u0000\u0000\u1155\u1156\u0007\u001a\u0000\u0000\u1156\u1157\u0007\u000f"+ - "\u0000\u0000\u1157\u1158\u0007\u0006\u0000\u0000\u1158\u1159\u0007\u000e"+ - "\u0000\u0000\u1159\u115a\u0007\u0013\u0000\u0000\u115a\u115b\u0007\u000f"+ - "\u0000\u0000\u115b\u115c\u0007\u000f\u0000\u0000\u115c\u115d\u0007\n\u0000"+ - "\u0000\u115d\u115e\u0007\u0007\u0000\u0000\u115e\u115f\u0007\u0010\u0000"+ - "\u0000\u115f\u0350\u0001\u0000\u0000\u0000\u1160\u1161\u0007\u001a\u0000"+ - "\u0000\u1161\u1162\u0007\u000f\u0000\u0000\u1162\u1163\u0007\u0006\u0000"+ - "\u0000\u1163\u1164\u0007\u0005\u0000\u0000\u1164\u1165\u0007\u0017\u0000"+ - "\u0000\u1165\u1166\u0007\u0017\u0000\u0000\u1166\u0352\u0001\u0000\u0000"+ - "\u0000\u1167\u1168\u0007\u001a\u0000\u0000\u1168\u1169\u0007\u000f\u0000"+ - "\u0000\u1169\u116a\u0007\u0006\u0000\u0000\u116a\u116b\u0005_\u0000\u0000"+ - "\u116b\u116c\u0007\u0011\u0000\u0000\u116c\u116d\u0007\t\u0000\u0000\u116d"+ - "\u116e\u0005_\u0000\u0000\u116e\u116f\u0007\u001d\u0000\u0000\u116f\u1170"+ - "\u0007\n\u0000\u0000\u1170\u1171\u0007\u0006\u0000\u0000\u1171\u1172\u0007"+ - "\u0006\u0000\u0000\u1172\u1173\u0005_\u0000\u0000\u1173\u1174\u0007\u0019"+ - "\u0000\u0000\u1174\u1175\u0007\u0013\u0000\u0000\u1175\u1176\u0007\r\u0000"+ - "\u0000\u1176\u1177\u0007\u000f\u0000\u0000\u1177\u1178\u0007\n\u0000\u0000"+ - "\u1178\u1179\u0007\f\u0000\u0000\u1179\u0354\u0001\u0000\u0000\u0000\u117a"+ - "\u117b\u0007\u001a\u0000\u0000\u117b\u117c\u0007\u000f\u0000\u0000\u117c"+ - "\u117d\u0007\u0006\u0000\u0000\u117d\u117e\u0005_\u0000\u0000\u117e\u117f"+ - "\u0007\u0011\u0000\u0000\u117f\u1180\u0007\t\u0000\u0000\u1180\u1181\u0005"+ - "_\u0000\u0000\u1181\u1182\u0007\u001d\u0000\u0000\u1182\u1183\u0007\n"+ - "\u0000\u0000\u1183\u1184\u0007\u0006\u0000\u0000\u1184\u1185\u0007\u0006"+ - "\u0000\u0000\u1185\u1186\u0005_\u0000\u0000\u1186\u1187\u0007\u0019\u0000"+ - "\u0000\u1187\u1188\u0007\u0013\u0000\u0000\u1188\u1189\u0007\r\u0000\u0000"+ - "\u1189\u118a\u0007\u000f\u0000\u0000\u118a\u118b\u0007\n\u0000\u0000\u118b"+ - "\u118c\u0007\f\u0000\u0000\u118c\u118d\u0005_\u0000\u0000\u118d\u118e"+ - "\u0007\f\u0000\u0000\u118e\u118f\u0007\u0013\u0000\u0000\u118f\u1190\u0007"+ - "\u000e\u0000\u0000\u1190\u1191\u0007\u0016\u0000\u0000\u1191\u1192\u0007"+ - "\u000f\u0000\u0000\u1192\u1193\u0007\n\u0000\u0000\u1193\u1194\u0007\u0007"+ - "\u0000\u0000\u1194\u1195\u0007\u0010\u0000\u0000\u1195\u0356\u0001\u0000"+ - "\u0000\u0000\u1196\u1197\u0007\u001a\u0000\u0000\u1197\u1198\u0007\u000f"+ - "\u0000\u0000\u1198\u1199\u0007\u0006\u0000\u0000\u1199\u119a\u0005_\u0000"+ - "\u0000\u119a\u119b\u0007\u0011\u0000\u0000\u119b\u119c\u0007\t\u0000\u0000"+ - "\u119c\u119d\u0005_\u0000\u0000\u119d\u119e\u0007\u001d\u0000\u0000\u119e"+ - "\u119f\u0007\n\u0000\u0000\u119f\u11a0\u0007\u0006\u0000\u0000\u11a0\u11a1"+ - "\u0007\u0006\u0000\u0000\u11a1\u11a2\u0005_\u0000\u0000\u11a2\u11a3\u0007"+ - "\u0019\u0000\u0000\u11a3\u11a4\u0007\u0013\u0000\u0000\u11a4\u11a5\u0007"+ - "\r\u0000\u0000\u11a5\u11a6\u0007\u000f\u0000\u0000\u11a6\u11a7\u0007\n"+ - "\u0000\u0000\u11a7\u11a8\u0007\f\u0000\u0000\u11a8\u11a9\u0005_\u0000"+ - "\u0000\u11a9\u11aa\u0007\u000e\u0000\u0000\u11aa\u11ab\u0007\u0013\u0000"+ - "\u0000\u11ab\u11ac\u0007\u0007\u0000\u0000\u11ac\u11ad\u0007\u0010\u0000"+ - "\u0000\u11ad\u11ae\u0007\n\u0000\u0000\u11ae\u11af\u0007\u0007\u0000\u0000"+ - "\u11af\u11b0\u0007\u0010\u0000\u0000\u11b0\u0358\u0001\u0000\u0000\u0000"+ - "\u11b1\u11b2\u0007\u001a\u0000\u0000\u11b2\u11b3\u0007\u0018\u0000\u0000"+ - "\u11b3\u11b4\u0007\u0005\u0000\u0000\u11b4\u11b5\u0007\u0010\u0000\u0000"+ - "\u11b5\u11b6\u0007\u0014\u0000\u0000\u11b6\u035a\u0001\u0000\u0000\u0000"+ - "\u11b7\u11b8\u0007\u001a\u0000\u0000\u11b8\u11b9\u0007\u0018\u0000\u0000"+ - "\u11b9\u11ba\u0007\u0005\u0000\u0000\u11ba\u11bb\u0007\u0010\u0000\u0000"+ - "\u11bb\u11bc\u0007\u0014\u0000\u0000\u11bc\u11bd\u0005_\u0000\u0000\u11bd"+ - "\u11be\u0007\n\u0000\u0000\u11be\u11bf\u0007\u001a\u0000\u0000\u11bf\u11c0"+ - "\u0007\u0011\u0000\u0000\u11c0\u11c1\u0007\t\u0000\u0000\u11c1\u11c2\u0007"+ - "\u0010\u0000\u0000\u11c2\u11c3\u0007\t\u0000\u0000\u11c3\u035c\u0001\u0000"+ - "\u0000\u0000\u11c4\u11c5\u0007\u001a\u0000\u0000\u11c5\u11c6\u0007\u000f"+ - "\u0000\u0000\u11c6\u11c7\u0007\u0006\u0000\u0000\u11c7\u11c8\u0007\u000e"+ - "\u0000\u0000\u11c8\u11c9\u0007\u0013\u0000\u0000\u11c9\u11ca\u0007\u0007"+ - "\u0000\u0000\u11ca\u11cb\u0007\u000e\u0000\u0000\u11cb\u11cc\u0007\u0005"+ - "\u0000\u0000\u11cc\u11cd\u0007\u0010\u0000\u0000\u11cd\u035e\u0001\u0000"+ - "\u0000\u0000\u11ce\u11cf\u0007\u001a\u0000\u0000\u11cf\u11d0\u0007\u000f"+ - "\u0000\u0000\u11d0\u11d1\u0007\u0006\u0000\u0000\u11d1\u11d2\u0007\n\u0000"+ - "\u0000\u11d2\u11d3\u0007\u0006\u0000\u0000\u11d3\u11d4\u0007\n\u0000\u0000"+ - "\u11d4\u11d5\u0007\u000f\u0000\u0000\u11d5\u11d6\u0007\n\u0000\u0000\u11d6"+ - "\u11d7\u0007\u0007\u0000\u0000\u11d7\u11d8\u0007\u0010\u0000\u0000\u11d8"+ - "\u0360\u0001\u0000\u0000\u0000\u11d9\u11da\u0007\u001a\u0000\u0000\u11da"+ - "\u11db\u0007\u000f\u0000\u0000\u11db\u11dc\u0007\u0006\u0000\u0000\u11dc"+ - "\u11dd\u0007\n\u0000\u0000\u11dd\u11de\u0007\u001a\u0000\u0000\u11de\u11df"+ - "\u0007\u0011\u0000\u0000\u11df\u11e0\u0007\t\u0000\u0000\u11e0\u11e1\u0007"+ - "\u0010\u0000\u0000\u11e1\u11e2\u0007\t\u0000\u0000\u11e2\u0362\u0001\u0000"+ - "\u0000\u0000\u11e3\u11e4\u0007\u001a\u0000\u0000\u11e4\u11e5\u0007\u000f"+ - "\u0000\u0000\u11e5\u11e6\u0007\u0006\u0000\u0000\u11e6\u11e7\u0007\u0019"+ - "\u0000\u0000\u11e7\u11e8\u0007\u0013\u0000\u0000\u11e8\u11e9\u0007\r\u0000"+ - "\u0000\u11e9\u11ea\u0007\n\u0000\u0000\u11ea\u11eb\u0007\t\u0000\u0000"+ - "\u11eb\u11ec\u0007\u0010\u0000\u0000\u11ec\u0364\u0001\u0000\u0000\u0000"+ - "\u11ed\u11ee\u0007\u001a\u0000\u0000\u11ee\u11ef\u0007\u000f\u0000\u0000"+ - "\u11ef\u11f0\u0007\u0006\u0000\u0000\u11f0\u11f1\u0007\u0018\u0000\u0000"+ - "\u11f1\u11f2\u0007\u0005\u0000\u0000\u11f2\u11f3\u0007\r\u0000\u0000\u11f3"+ - "\u11f4\u0007\t\u0000\u0000\u11f4\u11f5\u0007\n\u0000\u0000\u11f5\u0366"+ - "\u0001\u0000\u0000\u0000\u11f6\u11f7\u0007\u001a\u0000\u0000\u11f7\u11f8"+ - "\u0007\u000f\u0000\u0000\u11f8\u11f9\u0007\u0006\u0000\u0000\u11f9\u11fa"+ - "\u0007\u0018\u0000\u0000\u11fa\u11fb\u0007\u0011\u0000\u0000\u11fb\u0368"+ - "\u0001\u0000\u0000\u0000\u11fc\u11fd\u0007\u001a\u0000\u0000\u11fd\u11fe"+ - "\u0007\u000f\u0000\u0000\u11fe\u11ff\u0007\u0006\u0000\u0000\u11ff\u1200"+ - "\u0007\r\u0000\u0000\u1200\u1201\u0007\u0013\u0000\u0000\u1201\u1202\u0007"+ - "\u0013\u0000\u0000\u1202\u1203\u0007\u0010\u0000\u0000\u1203\u036a\u0001"+ - "\u0000\u0000\u0000\u1204\u1205\u0007\u001a\u0000\u0000\u1205\u1206\u0007"+ - "\u000f\u0000\u0000\u1206\u1207\u0007\u0006\u0000\u0000\u1207\u1208\u0007"+ - "\t\u0000\u0000\u1208\u1209\u0007\n\u0000\u0000\u1209\u120a\u0007\r\u0000"+ - "\u0000\u120a\u120b\u0007\u0011\u0000\u0000\u120b\u120c\u0007\u0005\u0000"+ - "\u0000\u120c\u120d\u0007\u0006\u0000\u0000\u120d\u120e\u0007\u0011\u0000"+ - "\u0000\u120e\u120f\u0007\u000b\u0000\u0000\u120f\u1210\u0007\n\u0000\u0000"+ - "\u1210\u036c\u0001\u0000\u0000\u0000\u1211\u1212\u0007\u000e\u0000\u0000"+ - "\u1212\u1213\u0007\u0005\u0000\u0000\u1213\u1214\u0007\u0006\u0000\u0000"+ - "\u1214\u1215\u0007\u0006\u0000\u0000\u1215\u036e\u0001\u0000\u0000\u0000"+ - "\u1216\u1217\u0007\u000e\u0000\u0000\u1217\u1218\u0007\u0016\u0000\u0000"+ - "\u1218\u1219\u0007\r\u0000\u0000\u1219\u121a\u0007\r\u0000\u0000\u121a"+ - "\u121b\u0007\n\u0000\u0000\u121b\u121c\u0007\u0007\u0000\u0000\u121c\u121d"+ - "\u0007\u0010\u0000\u0000\u121d\u0370\u0001\u0000\u0000\u0000\u121e\u121f"+ - "\u0007\u0005\u0000\u0000\u121f\u1220\u0007\u0010\u0000\u0000\u1220\u1221"+ - "\u0007\u0010\u0000\u0000\u1221\u1222\u0007\u0005\u0000\u0000\u1222\u1223"+ - "\u0007\u000e\u0000\u0000\u1223\u1224\u0007\u0014\u0000\u0000\u1224\u0372"+ - "\u0001\u0000\u0000\u0000\u1225\u1226\u0007\f\u0000\u0000\u1226\u1227\u0007"+ - "\n\u0000\u0000\u1227\u1228\u0007\u0010\u0000\u0000\u1228\u1229\u0007\u0005"+ - "\u0000\u0000\u1229\u122a\u0007\u000e\u0000\u0000\u122a\u122b\u0007\u0014"+ - "\u0000\u0000\u122b\u0374\u0001\u0000\u0000\u0000\u122c\u122d\u0007\n\u0000"+ - "\u0000\u122d\u122e\u0007\u001a\u0000\u0000\u122e\u122f\u0007\u0018\u0000"+ - "\u0000\u122f\u1230\u0007\r\u0000\u0000\u1230\u1231\u0007\n\u0000\u0000"+ - "\u1231\u1232\u0007\t\u0000\u0000\u1232\u1233\u0007\t\u0000\u0000\u1233"+ - "\u1234\u0007\u0011\u0000\u0000\u1234\u1235\u0007\u0013\u0000\u0000\u1235"+ - "\u1236\u0007\u0007\u0000\u0000\u1236\u0376\u0001\u0000\u0000\u0000\u1237"+ - "\u1238\u0007\u0017\u0000\u0000\u1238\u1239\u0007\n\u0000\u0000\u1239\u123a"+ - "\u0007\u0007\u0000\u0000\u123a\u123b\u0007\n\u0000\u0000\u123b\u123c\u0007"+ - "\r\u0000\u0000\u123c\u123d\u0007\u0005\u0000\u0000\u123d\u123e\u0007\u0010"+ - "\u0000\u0000\u123e\u123f\u0007\n\u0000\u0000\u123f\u1240\u0007\f\u0000"+ - "\u0000\u1240\u0378\u0001\u0000\u0000\u0000\u1241\u1242\u0007\u0006\u0000"+ - "\u0000\u1242\u1243\u0007\u0013\u0000\u0000\u1243\u1244\u0007\u0017\u0000"+ - "\u0000\u1244\u1245\u0007\u0017\u0000\u0000\u1245\u1246\u0007\n\u0000\u0000"+ - "\u1246\u1247\u0007\f\u0000\u0000\u1247\u037a\u0001\u0000\u0000\u0000\u1248"+ - "\u1249\u0007\t\u0000\u0000\u1249\u124a\u0007\u0010\u0000\u0000\u124a\u124b"+ - "\u0007\u0013\u0000\u0000\u124b\u124c\u0007\r\u0000\u0000\u124c\u124d\u0007"+ - "\n\u0000\u0000\u124d\u124e\u0007\f\u0000\u0000\u124e\u037c\u0001\u0000"+ - "\u0000\u0000\u124f\u1250\u0007\u0011\u0000\u0000\u1250\u1251\u0007\u0007"+ - "\u0000\u0000\u1251\u1252\u0007\u000e\u0000\u0000\u1252\u1253\u0007\u0006"+ - "\u0000\u0000\u1253\u1254\u0007\u0016\u0000\u0000\u1254\u1255\u0007\f\u0000"+ - "\u0000\u1255\u1256\u0007\n\u0000\u0000\u1256\u037e\u0001\u0000\u0000\u0000"+ - "\u1257\u1258\u0007\r\u0000\u0000\u1258\u1259\u0007\u0013\u0000\u0000\u1259"+ - "\u125a\u0007\u0016\u0000\u0000\u125a\u125b\u0007\u0010\u0000\u0000\u125b"+ - "\u125c\u0007\u0011\u0000\u0000\u125c\u125d\u0007\u0007\u0000\u0000\u125d"+ - "\u125e\u0007\n\u0000\u0000\u125e\u0380\u0001\u0000\u0000\u0000\u125f\u1260"+ - "\u0007\u0010\u0000\u0000\u1260\u1261\u0007\r\u0000\u0000\u1261\u1262\u0007"+ - "\u0005\u0000\u0000\u1262\u1263\u0007\u0007\u0000\u0000\u1263\u1264\u0007"+ - "\t\u0000\u0000\u1264\u1265\u0007"; - private static final String _serializedATNSegment2 = - "\u0019\u0000\u0000\u1265\u1266\u0007\u0013\u0000\u0000\u1266\u1267\u0007"+ - "\r\u0000\u0000\u1267\u1268\u0007\u000f\u0000\u0000\u1268\u0382\u0001\u0000"+ - "\u0000\u0000\u1269\u126a\u0007\u0011\u0000\u0000\u126a\u126b\u0007\u000f"+ - "\u0000\u0000\u126b\u126c\u0007\u0018\u0000\u0000\u126c\u126d\u0007\u0013"+ - "\u0000\u0000\u126d\u126e\u0007\r\u0000\u0000\u126e\u126f\u0007\u0010\u0000"+ - "\u0000\u126f\u0384\u0001\u0000\u0000\u0000\u1270\u1271\u0007\u0018\u0000"+ - "\u0000\u1271\u1272\u0007\u0013\u0000\u0000\u1272\u1273\u0007\u0006\u0000"+ - "\u0000\u1273\u1274\u0007\u0011\u0000\u0000\u1274\u1275\u0007\u000e\u0000"+ - "\u0000\u1275\u1276\u0007\b\u0000\u0000\u1276\u0386\u0001\u0000\u0000\u0000"+ - "\u1277\u1278\u0007\u000f\u0000\u0000\u1278\u1279\u0007\n\u0000\u0000\u1279"+ - "\u127a\u0007\u0010\u0000\u0000\u127a\u127b\u0007\u0014\u0000\u0000\u127b"+ - "\u127c\u0007\u0013\u0000\u0000\u127c\u127d\u0007\f\u0000\u0000\u127d\u0388"+ - "\u0001\u0000\u0000\u0000\u127e\u127f\u0007\r\u0000\u0000\u127f\u1280\u0007"+ - "\n\u0000\u0000\u1280\u1281\u0007\u0019\u0000\u0000\u1281\u1282\u0007\n"+ - "\u0000\u0000\u1282\u1283\u0007\r\u0000\u0000\u1283\u1284\u0007\n\u0000"+ - "\u0000\u1284\u1285\u0007\u0007\u0000\u0000\u1285\u1286\u0007\u000e\u0000"+ - "\u0000\u1286\u1287\u0007\u0011\u0000\u0000\u1287\u1288\u0007\u0007\u0000"+ - "\u0000\u1288\u1289\u0007\u0017\u0000\u0000\u1289\u038a\u0001\u0000\u0000"+ - "\u0000\u128a\u128b\u0007\u0007\u0000\u0000\u128b\u128c\u0007\n\u0000\u0000"+ - "\u128c\u128d\u0007\u001d\u0000\u0000\u128d\u038c\u0001\u0000\u0000\u0000"+ - "\u128e\u128f\u0007\u0013\u0000\u0000\u128f\u1290\u0007\u0006\u0000\u0000"+ - "\u1290\u1291\u0007\f\u0000\u0000\u1291\u038e\u0001\u0000\u0000\u0000\u1292"+ - "\u1293\u0007\u001b\u0000\u0000\u1293\u1294\u0007\u0005\u0000\u0000\u1294"+ - "\u1295\u0007\u0006\u0000\u0000\u1295\u1296\u0007\u0016\u0000\u0000\u1296"+ - "\u1297\u0007\n\u0000\u0000\u1297\u0390\u0001\u0000\u0000\u0000\u1298\u1299"+ - "\u0007\t\u0000\u0000\u1299\u129a\u0007\u0016\u0000\u0000\u129a\u129b\u0007"+ - "\u0012\u0000\u0000\u129b\u129c\u0007\t\u0000\u0000\u129c\u129d\u0007\u000e"+ - "\u0000\u0000\u129d\u129e\u0007\r\u0000\u0000\u129e\u129f\u0007\u0011\u0000"+ - "\u0000\u129f\u12a0\u0007\u0018\u0000\u0000\u12a0\u12a1\u0007\u0010\u0000"+ - "\u0000\u12a1\u12a2\u0007\u0011\u0000\u0000\u12a2\u12a3\u0007\u0013\u0000"+ - "\u0000\u12a3\u12a4\u0007\u0007\u0000\u0000\u12a4\u0392\u0001\u0000\u0000"+ - "\u0000\u12a5\u12a6\u0007\u0018\u0000\u0000\u12a6\u12a7\u0007\u0016\u0000"+ - "\u0000\u12a7\u12a8\u0007\u0012\u0000\u0000\u12a8\u12a9\u0007\u0006\u0000"+ - "\u0000\u12a9\u12aa\u0007\u0011\u0000\u0000\u12aa\u12ab\u0007\u000e\u0000"+ - "\u0000\u12ab\u12ac\u0007\u0005\u0000\u0000\u12ac\u12ad\u0007\u0010\u0000"+ - "\u0000\u12ad\u12ae\u0007\u0011\u0000\u0000\u12ae\u12af\u0007\u0013\u0000"+ - "\u0000\u12af\u12b0\u0007\u0007\u0000\u0000\u12b0\u0394\u0001\u0000\u0000"+ - "\u0000\u12b1\u12b2\u0007\u0013\u0000\u0000\u12b2\u12b3\u0007\u0016\u0000"+ - "\u0000\u12b3\u12b4\u0007\u0010\u0000\u0000\u12b4\u0396\u0001\u0000\u0000"+ - "\u0000\u12b5\u12b6\u0007\n\u0000\u0000\u12b6\u12b7\u0007\u0007\u0000\u0000"+ - "\u12b7\u12b8\u0007\f\u0000\u0000\u12b8\u0398\u0001\u0000\u0000\u0000\u12b9"+ - "\u12ba\u0007\r\u0000\u0000\u12ba\u12bb\u0007\u0013\u0000\u0000\u12bb\u12bc"+ - "\u0007\u0016\u0000\u0000\u12bc\u12bd\u0007\u0010\u0000\u0000\u12bd\u12be"+ - "\u0007\u0011\u0000\u0000\u12be\u12bf\u0007\u0007\u0000\u0000\u12bf\u12c0"+ - "\u0007\n\u0000\u0000\u12c0\u12c1\u0007\t\u0000\u0000\u12c1\u039a\u0001"+ - "\u0000\u0000\u0000\u12c2\u12c3\u0007\t\u0000\u0000\u12c3\u12c4\u0007\u000e"+ - "\u0000\u0000\u12c4\u12c5\u0007\u0014\u0000\u0000\u12c5\u12c6\u0007\n\u0000"+ - "\u0000\u12c6\u12c7\u0007\u000f\u0000\u0000\u12c7\u12c8\u0007\u0005\u0000"+ - "\u0000\u12c8\u12c9\u0007\t\u0000\u0000\u12c9\u039c\u0001\u0000\u0000\u0000"+ - "\u12ca\u12cb\u0007\u0018\u0000\u0000\u12cb\u12cc\u0007\r\u0000\u0000\u12cc"+ - "\u12cd\u0007\u0013\u0000\u0000\u12cd\u12ce\u0007\u000e\u0000\u0000\u12ce"+ - "\u12cf\u0007\n\u0000\u0000\u12cf\u12d0\u0007\f\u0000\u0000\u12d0\u12d1"+ - "\u0007\u0016\u0000\u0000\u12d1\u12d2\u0007\r\u0000\u0000\u12d2\u12d3\u0007"+ - "\n\u0000\u0000\u12d3\u12d4\u0007\t\u0000\u0000\u12d4\u039e\u0001\u0000"+ - "\u0000\u0000\u12d5\u12d6\u0007\u0011\u0000\u0000\u12d6\u12d7\u0007\u0007"+ - "\u0000\u0000\u12d7\u12d8\u0007\u0018\u0000\u0000\u12d8\u12d9\u0007\u0016"+ - "\u0000\u0000\u12d9\u12da\u0007\u0010\u0000\u0000\u12da\u03a0\u0001\u0000"+ - "\u0000\u0000\u12db\u12dc\u0007\t\u0000\u0000\u12dc\u12dd\u0007\u0016\u0000"+ - "\u0000\u12dd\u12de\u0007\u0018\u0000\u0000\u12de\u12df\u0007\u0018\u0000"+ - "\u0000\u12df\u12e0\u0007\u0013\u0000\u0000\u12e0\u12e1\u0007\r\u0000\u0000"+ - "\u12e1\u12e2\u0007\u0010\u0000\u0000\u12e2\u03a2\u0001\u0000\u0000\u0000"+ - "\u12e3\u12e4\u0007\u0018\u0000\u0000\u12e4\u12e5\u0007\u0005\u0000\u0000"+ - "\u12e5\u12e6\u0007\r\u0000\u0000\u12e6\u12e7\u0007\u0005\u0000\u0000\u12e7"+ - "\u12e8\u0007\u0006\u0000\u0000\u12e8\u12e9\u0007\u0006\u0000\u0000\u12e9"+ - "\u12ea\u0007\n\u0000\u0000\u12ea\u12eb\u0007\u0006\u0000\u0000\u12eb\u03a4"+ - "\u0001\u0000\u0000\u0000\u12ec\u12ed\u0007\t\u0000\u0000\u12ed\u12ee\u0007"+ - "\u001c\u0000\u0000\u12ee\u12ef\u0007\u0006\u0000\u0000\u12ef\u03a6\u0001"+ - "\u0000\u0000\u0000\u12f0\u12f1\u0007\f\u0000\u0000\u12f1\u12f2\u0007\n"+ - "\u0000\u0000\u12f2\u12f3\u0007\u0018\u0000\u0000\u12f3\u12f4\u0007\n\u0000"+ - "\u0000\u12f4\u12f5\u0007\u0007\u0000\u0000\u12f5\u12f6\u0007\f\u0000\u0000"+ - "\u12f6\u12f7\u0007\t\u0000\u0000\u12f7\u03a8\u0001\u0000\u0000\u0000\u12f8"+ - "\u12f9\u0007\u0013\u0000\u0000\u12f9\u12fa\u0007\u001b\u0000\u0000\u12fa"+ - "\u12fb\u0007\n\u0000\u0000\u12fb\u12fc\u0007\r\u0000\u0000\u12fc\u12fd"+ - "\u0007\r\u0000\u0000\u12fd\u12fe\u0007\u0011\u0000\u0000\u12fe\u12ff\u0007"+ - "\f\u0000\u0000\u12ff\u1300\u0007\u0011\u0000\u0000\u1300\u1301\u0007\u0007"+ - "\u0000\u0000\u1301\u1302\u0007\u0017\u0000\u0000\u1302\u03aa\u0001\u0000"+ - "\u0000\u0000\u1303\u1304\u0007\u000e\u0000\u0000\u1304\u1305\u0007\u0013"+ - "\u0000\u0000\u1305\u1306\u0007\u0007\u0000\u0000\u1306\u1307\u0007\u0019"+ - "\u0000\u0000\u1307\u1308\u0007\u0006\u0000\u0000\u1308\u1309\u0007\u0011"+ - "\u0000\u0000\u1309\u130a\u0007\u000e\u0000\u0000\u130a\u130b\u0007\u0010"+ - "\u0000\u0000\u130b\u03ac\u0001\u0000\u0000\u0000\u130c\u130d\u0007\t\u0000"+ - "\u0000\u130d\u130e\u0007\u0015\u0000\u0000\u130e\u130f\u0007\u0011\u0000"+ - "\u0000\u130f\u1310\u0007\u0018\u0000\u0000\u1310\u03ae\u0001\u0000\u0000"+ - "\u0000\u1311\u1312\u0007\u0006\u0000\u0000\u1312\u1313\u0007\u0013\u0000"+ - "\u0000\u1313\u1314\u0007\u000e\u0000\u0000\u1314\u1315\u0007\u0015\u0000"+ - "\u0000\u1315\u1316\u0007\n\u0000\u0000\u1316\u1317\u0007\f\u0000\u0000"+ - "\u1317\u03b0\u0001\u0000\u0000\u0000\u1318\u1319\u0007\u0010\u0000\u0000"+ - "\u1319\u131a\u0007\u0011\u0000\u0000\u131a\u131b\u0007\n\u0000\u0000\u131b"+ - "\u131c\u0007\t\u0000\u0000\u131c\u03b2\u0001\u0000\u0000\u0000\u131d\u131e"+ - "\u0007\r\u0000\u0000\u131e\u131f\u0007\u0013\u0000\u0000\u131f\u1320\u0007"+ - "\u0006\u0000\u0000\u1320\u1321\u0007\u0006\u0000\u0000\u1321\u1322\u0007"+ - "\u0016\u0000\u0000\u1322\u1323\u0007\u0018\u0000\u0000\u1323\u03b4\u0001"+ - "\u0000\u0000\u0000\u1324\u1325\u0007\u000e\u0000\u0000\u1325\u1326\u0007"+ - "\u0016\u0000\u0000\u1326\u1327\u0007\u0012\u0000\u0000\u1327\u1328\u0007"+ - "\n\u0000\u0000\u1328\u03b6\u0001\u0000\u0000\u0000\u1329\u132a\u0007\u0017"+ - "\u0000\u0000\u132a\u132b\u0007\r\u0000\u0000\u132b\u132c\u0007\u0013\u0000"+ - "\u0000\u132c\u132d\u0007\u0016\u0000\u0000\u132d\u132e\u0007\u0018\u0000"+ - "\u0000\u132e\u132f\u0007\u0011\u0000\u0000\u132f\u1330\u0007\u0007\u0000"+ - "\u0000\u1330\u1331\u0007\u0017\u0000\u0000\u1331\u03b8\u0001\u0000\u0000"+ - "\u0000\u1332\u1333\u0007\t\u0000\u0000\u1333\u1334\u0007\n\u0000\u0000"+ - "\u1334\u1335\u0007\u0010\u0000\u0000\u1335\u1336\u0007\t\u0000\u0000\u1336"+ - "\u03ba\u0001\u0000\u0000\u0000\u1337\u1338\u0007\u0010\u0000\u0000\u1338"+ - "\u1339\u0007\u0005\u0000\u0000\u1339\u133a\u0007\u0012\u0000\u0000\u133a"+ - "\u133b\u0007\u0006\u0000\u0000\u133b\u133c\u0007\n\u0000\u0000\u133c\u133d"+ - "\u0007\t\u0000\u0000\u133d\u133e\u0007\u0005\u0000\u0000\u133e\u133f\u0007"+ - "\u000f\u0000\u0000\u133f\u1340\u0007\u0018\u0000\u0000\u1340\u1341\u0007"+ - "\u0006\u0000\u0000\u1341\u1342\u0007\n\u0000\u0000\u1342\u03bc\u0001\u0000"+ - "\u0000\u0000\u1343\u1344\u0007\u0013\u0000\u0000\u1344\u1345\u0007\r\u0000"+ - "\u0000\u1345\u1346\u0007\f\u0000\u0000\u1346\u1347\u0007\u0011\u0000\u0000"+ - "\u1347\u1348\u0007\u0007\u0000\u0000\u1348\u1349\u0007\u0005\u0000\u0000"+ - "\u1349\u134a\u0007\u0006\u0000\u0000\u134a\u134b\u0007\u0011\u0000\u0000"+ - "\u134b\u134c\u0007\u0010\u0000\u0000\u134c\u134d\u0007\b\u0000\u0000\u134d"+ - "\u03be\u0001\u0000\u0000\u0000\u134e\u134f\u0007\u001a\u0000\u0000\u134f"+ - "\u1350\u0007\u000f\u0000\u0000\u1350\u1351\u0007\u0006\u0000\u0000\u1351"+ - "\u1352\u0007\u0010\u0000\u0000\u1352\u1353\u0007\u0005\u0000\u0000\u1353"+ - "\u1354\u0007\u0012\u0000\u0000\u1354\u1355\u0007\u0006\u0000\u0000\u1355"+ - "\u1356\u0007\n\u0000\u0000\u1356\u03c0\u0001\u0000\u0000\u0000\u1357\u1358"+ - "\u0007\u000e\u0000\u0000\u1358\u1359\u0007\u0013\u0000\u0000\u1359\u135a"+ - "\u0007\u0006\u0000\u0000\u135a\u135b\u0007\u0016\u0000\u0000\u135b\u135c"+ - "\u0007\u000f\u0000\u0000\u135c\u135d\u0007\u0007\u0000\u0000\u135d\u135e"+ - "\u0007\t\u0000\u0000\u135e\u03c2\u0001\u0000\u0000\u0000\u135f\u1360\u0007"+ - "\u001a\u0000\u0000\u1360\u1361\u0007\u000f\u0000\u0000\u1361\u1362\u0007"+ - "\u0006\u0000\u0000\u1362\u1363\u0007\u0007\u0000\u0000\u1363\u1364\u0007"+ - "\u0005\u0000\u0000\u1364\u1365\u0007\u000f\u0000\u0000\u1365\u1366\u0007"+ - "\n\u0000\u0000\u1366\u1367\u0007\t\u0000\u0000\u1367\u1368\u0007\u0018"+ - "\u0000\u0000\u1368\u1369\u0007\u0005\u0000\u0000\u1369\u136a\u0007\u000e"+ - "\u0000\u0000\u136a\u136b\u0007\n\u0000\u0000\u136b\u136c\u0007\t\u0000"+ - "\u0000\u136c\u03c4\u0001\u0000\u0000\u0000\u136d\u136e\u0007\r\u0000\u0000"+ - "\u136e\u136f\u0007\u0013\u0000\u0000\u136f\u1370\u0007\u001d\u0000\u0000"+ - "\u1370\u1371\u0007\u0010\u0000\u0000\u1371\u1372\u0007\b\u0000\u0000\u1372"+ - "\u1373\u0007\u0018\u0000\u0000\u1373\u1374\u0007\n\u0000\u0000\u1374\u03c6"+ - "\u0001\u0000\u0000\u0000\u1375\u1376\u0007\u0007\u0000\u0000\u1376\u1377"+ - "\u0007\u0013\u0000\u0000\u1377\u1378\u0007\r\u0000\u0000\u1378\u1379\u0007"+ - "\u000f\u0000\u0000\u1379\u137a\u0007\u0005\u0000\u0000\u137a\u137b\u0007"+ - "\u0006\u0000\u0000\u137b\u137c\u0007\u0011\u0000\u0000\u137c\u137d\u0007"+ - "\u000b\u0000\u0000\u137d\u137e\u0007\n\u0000\u0000\u137e\u137f\u0007\f"+ - "\u0000\u0000\u137f\u03c8\u0001\u0000\u0000\u0000\u1380\u1381\u0007\u001d"+ - "\u0000\u0000\u1381\u1382\u0007\u0011\u0000\u0000\u1382\u1383\u0007\u0010"+ - "\u0000\u0000\u1383\u1384\u0007\u0014\u0000\u0000\u1384\u1385\u0007\u0011"+ - "\u0000\u0000\u1385\u1386\u0007\u0007\u0000\u0000\u1386\u03ca\u0001\u0000"+ - "\u0000\u0000\u1387\u1388\u0007\u0019\u0000\u0000\u1388\u1389\u0007\u0011"+ - "\u0000\u0000\u1389\u138a\u0007\u0006\u0000\u0000\u138a\u138b\u0007\u0010"+ - "\u0000\u0000\u138b\u138c\u0007\n\u0000\u0000\u138c\u138d\u0007\r\u0000"+ - "\u0000\u138d\u03cc\u0001\u0000\u0000\u0000\u138e\u138f\u0007\u0017\u0000"+ - "\u0000\u138f\u1390\u0007\r\u0000\u0000\u1390\u1391\u0007\u0013\u0000\u0000"+ - "\u1391\u1392\u0007\u0016\u0000\u0000\u1392\u1393\u0007\u0018\u0000\u0000"+ - "\u1393\u1394\u0007\t\u0000\u0000\u1394\u03ce\u0001\u0000\u0000\u0000\u1395"+ - "\u1396\u0007\u0013\u0000\u0000\u1396\u1397\u0007\u0010\u0000\u0000\u1397"+ - "\u1398\u0007\u0014\u0000\u0000\u1398\u1399\u0007\n\u0000\u0000\u1399\u139a"+ - "\u0007\r\u0000\u0000\u139a\u139b\u0007\t\u0000\u0000\u139b\u03d0\u0001"+ - "\u0000\u0000\u0000\u139c\u139d\u0007\u0007\u0000\u0000\u139d\u139e\u0007"+ - "\u0019\u0000\u0000\u139e\u139f\u0007\u000e\u0000\u0000\u139f\u03d2\u0001"+ - "\u0000\u0000\u0000\u13a0\u13a1\u0007\u0007\u0000\u0000\u13a1\u13a2\u0007"+ - "\u0019\u0000\u0000\u13a2\u13a3\u0007\f\u0000\u0000\u13a3\u03d4\u0001\u0000"+ - "\u0000\u0000\u13a4\u13a5\u0007\u0007\u0000\u0000\u13a5\u13a6\u0007\u0019"+ - "\u0000\u0000\u13a6\u13a7\u0007\u0015\u0000\u0000\u13a7\u13a8\u0007\u000e"+ - "\u0000\u0000\u13a8\u03d6\u0001\u0000\u0000\u0000\u13a9\u13aa\u0007\u0007"+ - "\u0000\u0000\u13aa\u13ab\u0007\u0019\u0000\u0000\u13ab\u13ac\u0007\u0015"+ - "\u0000\u0000\u13ac\u13ad\u0007\f\u0000\u0000\u13ad\u03d8\u0001\u0000\u0000"+ - "\u0000\u13ae\u13af\u0007\u0016\u0000\u0000\u13af\u13b0\u0007\n\u0000\u0000"+ - "\u13b0\u13b1\u0007\t\u0000\u0000\u13b1\u13b2\u0007\u000e\u0000\u0000\u13b2"+ - "\u13b3\u0007\u0005\u0000\u0000\u13b3\u13b4\u0007\u0018\u0000\u0000\u13b4"+ - "\u13b5\u0007\n\u0000\u0000\u13b5\u03da\u0001\u0000\u0000\u0000\u13b6\u13b7"+ - "\u0007\u001b\u0000\u0000\u13b7\u13b8\u0007\u0011\u0000\u0000\u13b8\u13b9"+ - "\u0007\n\u0000\u0000\u13b9\u13ba\u0007\u001d\u0000\u0000\u13ba\u13bb\u0007"+ - "\t\u0000\u0000\u13bb\u03dc\u0001\u0000\u0000\u0000\u13bc\u13bd\u0007\u0007"+ - "\u0000\u0000\u13bd\u13be\u0007\u0013\u0000\u0000\u13be\u13bf\u0007\r\u0000"+ - "\u0000\u13bf\u13c0\u0007\u000f\u0000\u0000\u13c0\u13c1\u0007\u0005\u0000"+ - "\u0000\u13c1\u13c2\u0007\u0006\u0000\u0000\u13c2\u13c3\u0007\u0011\u0000"+ - "\u0000\u13c3\u13c4\u0007\u000b\u0000\u0000\u13c4\u13c5\u0007\n\u0000\u0000"+ - "\u13c5\u03de\u0001\u0000\u0000\u0000\u13c6\u13c7\u0007\f\u0000\u0000\u13c7"+ - "\u13c8\u0007\u0016\u0000\u0000\u13c8\u13c9\u0007\u000f\u0000\u0000\u13c9"+ - "\u13ca\u0007\u0018\u0000\u0000\u13ca\u03e0\u0001\u0000\u0000\u0000\u13cb"+ - "\u13cc\u0007\u0018\u0000\u0000\u13cc\u13cd\u0007\r\u0000\u0000\u13cd\u13ce"+ - "\u0007\u0011\u0000\u0000\u13ce\u13cf\u0007\u0007\u0000\u0000\u13cf\u13d0"+ - "\u0007\u0010\u0000\u0000\u13d0\u13d1\u0005_\u0000\u0000\u13d1\u13d2\u0007"+ - "\t\u0000\u0000\u13d2\u13d3\u0007\u0010\u0000\u0000\u13d3\u13d4\u0007\r"+ - "\u0000\u0000\u13d4\u13d5\u0007\u0011\u0000\u0000\u13d5\u13d6\u0007\u000e"+ - "\u0000\u0000\u13d6\u13d7\u0007\u0010\u0000\u0000\u13d7\u13d8\u0005_\u0000"+ - "\u0000\u13d8\u13d9\u0007\u0018\u0000\u0000\u13d9\u13da\u0007\u0005\u0000"+ - "\u0000\u13da\u13db\u0007\r\u0000\u0000\u13db\u13dc\u0007\u0005\u0000\u0000"+ - "\u13dc\u13dd\u0007\u000f\u0000\u0000\u13dd\u13de\u0007\t\u0000\u0000\u13de"+ - "\u03e2\u0001\u0000\u0000\u0000\u13df\u13e0\u0007\u001b\u0000\u0000\u13e0"+ - "\u13e1\u0007\u0005\u0000\u0000\u13e1\u13e2\u0007\r\u0000\u0000\u13e2\u13e3"+ - "\u0007\u0011\u0000\u0000\u13e3\u13e4\u0007\u0005\u0000\u0000\u13e4\u13e5"+ - "\u0007\u0012\u0000\u0000\u13e5\u13e6\u0007\u0006\u0000\u0000\u13e6\u13e7"+ - "\u0007\n\u0000\u0000\u13e7\u13e8\u0005_\u0000\u0000\u13e8\u13e9\u0007"+ - "\u000e\u0000\u0000\u13e9\u13ea\u0007\u0013\u0000\u0000\u13ea\u13eb\u0007"+ - "\u0007\u0000\u0000\u13eb\u13ec\u0007\u0019\u0000\u0000\u13ec\u13ed\u0007"+ - "\u0006\u0000\u0000\u13ed\u13ee\u0007\u0011\u0000\u0000\u13ee\u13ef\u0007"+ - "\u000e\u0000\u0000\u13ef\u13f0\u0007\u0010\u0000\u0000\u13f0\u03e4\u0001"+ - "\u0000\u0000\u0000\u13f1\u13f2\u0007\n\u0000\u0000\u13f2\u13f3\u0007\r"+ - "\u0000\u0000\u13f3\u13f4\u0007\r\u0000\u0000\u13f4\u13f5\u0007\u0013\u0000"+ - "\u0000\u13f5\u13f6\u0007\r\u0000\u0000\u13f6\u03e6\u0001\u0000\u0000\u0000"+ - "\u13f7\u13f8\u0007\u0016\u0000\u0000\u13f8\u13f9\u0007\t\u0000\u0000\u13f9"+ - "\u13fa\u0007\n\u0000\u0000\u13fa\u13fb\u0005_\u0000\u0000\u13fb\u13fc"+ - "\u0007\u001b\u0000\u0000\u13fc\u13fd\u0007\u0005\u0000\u0000\u13fd\u13fe"+ - "\u0007\r\u0000\u0000\u13fe\u13ff\u0007\u0011\u0000\u0000\u13ff\u1400\u0007"+ - "\u0005\u0000\u0000\u1400\u1401\u0007\u0012\u0000\u0000\u1401\u1402\u0007"+ - "\u0006\u0000\u0000\u1402\u1403\u0007\n\u0000\u0000\u1403\u03e8\u0001\u0000"+ - "\u0000\u0000\u1404\u1405\u0007\u0016\u0000\u0000\u1405\u1406\u0007\t\u0000"+ - "\u0000\u1406\u1407\u0007\n\u0000\u0000\u1407\u1408\u0005_\u0000\u0000"+ - "\u1408\u1409\u0007\u000e\u0000\u0000\u1409\u140a\u0007\u0013\u0000\u0000"+ - "\u140a\u140b\u0007\u0006\u0000\u0000\u140b\u140c\u0007\u0016\u0000\u0000"+ - "\u140c\u140d\u0007\u000f\u0000\u0000\u140d\u140e\u0007\u0007\u0000\u0000"+ - "\u140e\u03ea\u0001\u0000\u0000\u0000\u140f\u1410\u0007\u0005\u0000\u0000"+ - "\u1410\u1411\u0007\u0006\u0000\u0000\u1411\u1412\u0007\u0011\u0000\u0000"+ - "\u1412\u1413\u0007\u0005\u0000\u0000\u1413\u1414\u0007\t\u0000\u0000\u1414"+ - "\u03ec\u0001\u0000\u0000\u0000\u1415\u1416\u0007\u000e\u0000\u0000\u1416"+ - "\u1417\u0007\u0013\u0000\u0000\u1417\u1418\u0007\u0007\u0000\u0000\u1418"+ - "\u1419\u0007\t\u0000\u0000\u1419\u141a\u0007\u0010\u0000\u0000\u141a\u141b"+ - "\u0007\u0005\u0000\u0000\u141b\u141c\u0007\u0007\u0000\u0000\u141c\u141d"+ - "\u0007\u0010\u0000\u0000\u141d\u03ee\u0001\u0000\u0000\u0000\u141e\u141f"+ - "\u0007\u0018\u0000\u0000\u141f\u1420\u0007\n\u0000\u0000\u1420\u1421\u0007"+ - "\r\u0000\u0000\u1421\u1422\u0007\u0019\u0000\u0000\u1422\u1423\u0007\u0013"+ - "\u0000\u0000\u1423\u1424\u0007\r\u0000\u0000\u1424\u1425\u0007\u000f\u0000"+ - "\u0000\u1425\u03f0\u0001\u0000\u0000\u0000\u1426\u1427\u0007\u0017\u0000"+ - "\u0000\u1427\u1428\u0007\n\u0000\u0000\u1428\u1429\u0007\u0010\u0000\u0000"+ - "\u1429\u03f2\u0001\u0000\u0000\u0000\u142a\u142b\u0007\f\u0000\u0000\u142b"+ - "\u142c\u0007\u0011\u0000\u0000\u142c\u142d\u0007\u0005\u0000\u0000\u142d"+ - "\u142e\u0007\u0017\u0000\u0000\u142e\u142f\u0007\u0007\u0000\u0000\u142f"+ - "\u1430\u0007\u0013\u0000\u0000\u1430\u1431\u0007\t\u0000\u0000\u1431\u1432"+ - "\u0007\u0010\u0000\u0000\u1432\u1433\u0007\u0011\u0000\u0000\u1433\u1434"+ - "\u0007\u000e\u0000\u0000\u1434\u1435\u0007\t\u0000\u0000\u1435\u03f4\u0001"+ - "\u0000\u0000\u0000\u1436\u1437\u0007\t\u0000\u0000\u1437\u1438\u0007\u0010"+ - "\u0000\u0000\u1438\u1439\u0007\u0005\u0000\u0000\u1439\u143a\u0007\u000e"+ - "\u0000\u0000\u143a\u143b\u0007\u0015\u0000\u0000\u143b\u143c\u0007\n\u0000"+ - "\u0000\u143c\u143d\u0007\f\u0000\u0000\u143d\u03f6\u0001\u0000\u0000\u0000"+ - "\u143e\u143f\u0007\n\u0000\u0000\u143f\u1440\u0007\u0006\u0000\u0000\u1440"+ - "\u1441\u0007\t\u0000\u0000\u1441\u1442\u0007\u0011\u0000\u0000\u1442\u1443"+ - "\u0007\u0019\u0000\u0000\u1443\u03f8\u0001\u0000\u0000\u0000\u1444\u1445"+ - "\u0007\u001d\u0000\u0000\u1445\u1446\u0007\u0014\u0000\u0000\u1446\u1447"+ - "\u0007\u0011\u0000\u0000\u1447\u1448\u0007\u0006\u0000\u0000\u1448\u1449"+ - "\u0007\n\u0000\u0000\u1449\u03fa\u0001\u0000\u0000\u0000\u144a\u144b\u0007"+ - "\r\u0000\u0000\u144b\u144c\u0007\n\u0000\u0000\u144c\u144d\u0007\u001b"+ - "\u0000\u0000\u144d\u144e\u0007\n\u0000\u0000\u144e\u144f\u0007\r\u0000"+ - "\u0000\u144f\u1450\u0007\t\u0000\u0000\u1450\u1451\u0007\n\u0000\u0000"+ - "\u1451\u03fc\u0001\u0000\u0000\u0000\u1452\u1453\u0007\u0019\u0000\u0000"+ - "\u1453\u1454\u0007\u0013\u0000\u0000\u1454\u1455\u0007\r\u0000\u0000\u1455"+ - "\u1456\u0007\n\u0000\u0000\u1456\u1457\u0007\u0005\u0000\u0000\u1457\u1458"+ - "\u0007\u000e\u0000\u0000\u1458\u1459\u0007\u0014\u0000\u0000\u1459\u03fe"+ - "\u0001\u0000\u0000\u0000\u145a\u145b\u0007\t\u0000\u0000\u145b\u145c\u0007"+ - "\u0006\u0000\u0000\u145c\u145d\u0007\u0011\u0000\u0000\u145d\u145e\u0007"+ - "\u000e\u0000\u0000\u145e\u145f\u0007\n\u0000\u0000\u145f\u0400\u0001\u0000"+ - "\u0000\u0000\u1460\u1461\u0007\n\u0000\u0000\u1461\u1462\u0007\u001a\u0000"+ - "\u0000\u1462\u1463\u0007\u0011\u0000\u0000\u1463\u1464\u0007\u0010\u0000"+ - "\u0000\u1464\u0402\u0001\u0000\u0000\u0000\u1465\u1466\u0007\r\u0000\u0000"+ - "\u1466\u1467\u0007\n\u0000\u0000\u1467\u1468\u0007\u0010\u0000\u0000\u1468"+ - "\u1469\u0007\u0016\u0000\u0000\u1469\u146a\u0007\r\u0000\u0000\u146a\u146b"+ - "\u0007\u0007\u0000\u0000\u146b\u0404\u0001\u0000\u0000\u0000\u146c\u146d"+ - "\u0007\u001c\u0000\u0000\u146d\u146e\u0007\u0016\u0000\u0000\u146e\u146f"+ - "\u0007\n\u0000\u0000\u146f\u1470\u0007\r\u0000\u0000\u1470\u1471\u0007"+ - "\b\u0000\u0000\u1471\u0406\u0001\u0000\u0000\u0000\u1472\u1473\u0007\r"+ - "\u0000\u0000\u1473\u1474\u0007\u0005\u0000\u0000\u1474\u1475\u0007\u0011"+ - "\u0000\u0000\u1475\u1476\u0007\t\u0000\u0000\u1476\u1477\u0007\n\u0000"+ - "\u0000\u1477\u0408\u0001\u0000\u0000\u0000\u1478\u1479\u0007\t\u0000\u0000"+ - "\u1479\u147a\u0007\u001c\u0000\u0000\u147a\u147b\u0007\u0006\u0000\u0000"+ - "\u147b\u147c\u0007\t\u0000\u0000\u147c\u147d\u0007\u0010\u0000\u0000\u147d"+ - "\u147e\u0007\u0005\u0000\u0000\u147e\u147f\u0007\u0010\u0000\u0000\u147f"+ - "\u1480\u0007\n\u0000\u0000\u1480\u040a\u0001\u0000\u0000\u0000\u1481\u1482"+ - "\u0007\f\u0000\u0000\u1482\u1483\u0007\n\u0000\u0000\u1483\u1484\u0007"+ - "\u0012\u0000\u0000\u1484\u1485\u0007\u0016\u0000\u0000\u1485\u1486\u0007"+ - "\u0017\u0000\u0000\u1486\u040c\u0001\u0000\u0000\u0000\u1487\u1488\u0007"+ - "\u0006\u0000\u0000\u1488\u1489\u0007\u0013\u0000\u0000\u1489\u148a\u0007"+ - "\u0017\u0000\u0000\u148a\u040e\u0001\u0000\u0000\u0000\u148b\u148c\u0007"+ - "\u0011\u0000\u0000\u148c\u148d\u0007\u0007\u0000\u0000\u148d\u148e\u0007"+ - "\u0019\u0000\u0000\u148e\u148f\u0007\u0013\u0000\u0000\u148f\u0410\u0001"+ - "\u0000\u0000\u0000\u1490\u1491\u0007\u0007\u0000\u0000\u1491\u1492\u0007"+ - "\u0013\u0000\u0000\u1492\u1493\u0007\u0010\u0000\u0000\u1493\u1494\u0007"+ - "\u0011\u0000\u0000\u1494\u1495\u0007\u000e\u0000\u0000\u1495\u1496\u0007"+ - "\n\u0000\u0000\u1496\u0412\u0001\u0000\u0000\u0000\u1497\u1498\u0007\u001d"+ - "\u0000\u0000\u1498\u1499\u0007\u0005\u0000\u0000\u1499\u149a\u0007\r\u0000"+ - "\u0000\u149a\u149b\u0007\u0007\u0000\u0000\u149b\u149c\u0007\u0011\u0000"+ - "\u0000\u149c\u149d\u0007\u0007\u0000\u0000\u149d\u149e\u0007\u0017\u0000"+ - "\u0000\u149e\u0414\u0001\u0000\u0000\u0000\u149f\u14a0\u0007\n\u0000\u0000"+ - "\u14a0\u14a1\u0007\u001a\u0000\u0000\u14a1\u14a2\u0007\u000e\u0000\u0000"+ - "\u14a2\u14a3\u0007\n\u0000\u0000\u14a3\u14a4\u0007\u0018\u0000\u0000\u14a4"+ - "\u14a5\u0007\u0010\u0000\u0000\u14a5\u14a6\u0007\u0011\u0000\u0000\u14a6"+ - "\u14a7\u0007\u0013\u0000\u0000\u14a7\u14a8\u0007\u0007\u0000\u0000\u14a8"+ - "\u0416\u0001\u0000\u0000\u0000\u14a9\u14aa\u0007\u0005\u0000\u0000\u14aa"+ - "\u14ab\u0007\t\u0000\u0000\u14ab\u14ac\u0007\t\u0000\u0000\u14ac\u14ad"+ - "\u0007\n\u0000\u0000\u14ad\u14ae\u0007\r\u0000\u0000\u14ae\u14af\u0007"+ - "\u0010\u0000\u0000\u14af\u0418\u0001\u0000\u0000\u0000\u14b0\u14b1\u0007"+ - "\u0006\u0000\u0000\u14b1\u14b2\u0007\u0013\u0000\u0000\u14b2\u14b3\u0007"+ - "\u0013\u0000\u0000\u14b3\u14b4\u0007\u0018\u0000\u0000\u14b4\u041a\u0001"+ - "\u0000\u0000\u0000\u14b5\u14b6\u0007\u0013\u0000\u0000\u14b6\u14b7\u0007"+ - "\u0018\u0000\u0000\u14b7\u14b8\u0007\n\u0000\u0000\u14b8\u14b9\u0007\u0007"+ - "\u0000\u0000\u14b9\u041c\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007\u0005"+ - "\u0000\u0000\u14bb\u14bc\u0007\u0012\u0000\u0000\u14bc\u14bd\u0007\t\u0000"+ - "\u0000\u14bd\u041e\u0001\u0000\u0000\u0000\u14be\u14bf\u0007\u000e\u0000"+ - "\u0000\u14bf\u14c0\u0007\u0012\u0000\u0000\u14c0\u14c1\u0007\r\u0000\u0000"+ - "\u14c1\u14c2\u0007\u0010\u0000\u0000\u14c2\u0420\u0001\u0000\u0000\u0000"+ - "\u14c3\u14c4\u0007\u000e\u0000\u0000\u14c4\u14c5\u0007\n\u0000\u0000\u14c5"+ - "\u14c6\u0007\u0011\u0000\u0000\u14c6\u14c7\u0007\u0006\u0000\u0000\u14c7"+ - "\u0422\u0001\u0000\u0000\u0000\u14c8\u14c9\u0007\u000e\u0000\u0000\u14c9"+ - "\u14ca\u0007\n\u0000\u0000\u14ca\u14cb\u0007\u0011\u0000\u0000\u14cb\u14cc"+ - "\u0007\u0006\u0000\u0000\u14cc\u14cd\u0007\u0011\u0000\u0000\u14cd\u14ce"+ - "\u0007\u0007\u0000\u0000\u14ce\u14cf\u0007\u0017\u0000\u0000\u14cf\u0424"+ - "\u0001\u0000\u0000\u0000\u14d0\u14d1\u0007\f\u0000\u0000\u14d1\u14d2\u0007"+ - "\n\u0000\u0000\u14d2\u14d3\u0007\u0017\u0000\u0000\u14d3\u14d4\u0007\r"+ - "\u0000\u0000\u14d4\u14d5\u0007\n\u0000\u0000\u14d5\u14d6\u0007\n\u0000"+ - "\u0000\u14d6\u14d7\u0007\t\u0000\u0000\u14d7\u0426\u0001\u0000\u0000\u0000"+ - "\u14d8\u14d9\u0007\f\u0000\u0000\u14d9\u14da\u0007\u0011\u0000\u0000\u14da"+ - "\u14db\u0007\u001b\u0000\u0000\u14db\u0428\u0001\u0000\u0000\u0000\u14dc"+ - "\u14dd\u0007\n\u0000\u0000\u14dd\u14de\u0007\u001a\u0000\u0000\u14de\u14df"+ - "\u0007\u0018\u0000\u0000\u14df\u042a\u0001\u0000\u0000\u0000\u14e0\u14e1"+ - "\u0007\u0019\u0000\u0000\u14e1\u14e2\u0007\u0005\u0000\u0000\u14e2\u14e3"+ - "\u0007\u000e\u0000\u0000\u14e3\u14e4\u0007\u0010\u0000\u0000\u14e4\u14e5"+ - "\u0007\u0013\u0000\u0000\u14e5\u14e6\u0007\r\u0000\u0000\u14e6\u14e7\u0007"+ - "\u0011\u0000\u0000\u14e7\u14e8\u0007\u0005\u0000\u0000\u14e8\u14e9\u0007"+ - "\u0006\u0000\u0000\u14e9\u042c\u0001\u0000\u0000\u0000\u14ea\u14eb\u0007"+ - "\u0019\u0000\u0000\u14eb\u14ec\u0007\u0006\u0000\u0000\u14ec\u14ed\u0007"+ - "\u0013\u0000\u0000\u14ed\u14ee\u0007\u0013\u0000\u0000\u14ee\u14ef\u0007"+ - "\r\u0000\u0000\u14ef\u042e\u0001\u0000\u0000\u0000\u14f0\u14f1\u0007\u0017"+ - "\u0000\u0000\u14f1\u14f2\u0007\u000e\u0000\u0000\u14f2\u14f3\u0007\f\u0000"+ - "\u0000\u14f3\u0430\u0001\u0000\u0000\u0000\u14f4\u14f5\u0007\u0006\u0000"+ - "\u0000\u14f5\u14f6\u0007\u000e\u0000\u0000\u14f6\u14f7\u0007\u000f\u0000"+ - "\u0000\u14f7\u0432\u0001\u0000\u0000\u0000\u14f8\u14f9\u0007\u0006\u0000"+ - "\u0000\u14f9\u14fa\u0007\u0007\u0000\u0000\u14fa\u0434\u0001\u0000\u0000"+ - "\u0000\u14fb\u14fc\u0007\u0006\u0000\u0000\u14fc\u14fd\u0007\u0013\u0000"+ - "\u0000\u14fd\u14fe\u0007\u0017\u0000\u0000\u14fe\u14ff\u00051\u0000\u0000"+ - "\u14ff\u1500\u00050\u0000\u0000\u1500\u0436\u0001\u0000\u0000\u0000\u1501"+ - "\u1502\u0007\u000f\u0000\u0000\u1502\u1503\u0007\u0011\u0000\u0000\u1503"+ - "\u1504\u0007\u0007\u0000\u0000\u1504\u1505\u0005_\u0000\u0000\u1505\u1506"+ - "\u0007\t\u0000\u0000\u1506\u1507\u0007\u000e\u0000\u0000\u1507\u1508\u0007"+ - "\u0005\u0000\u0000\u1508\u1509\u0007\u0006\u0000\u0000\u1509\u150a\u0007"+ - "\n\u0000\u0000\u150a\u0438\u0001\u0000\u0000\u0000\u150b\u150c\u0007\u000f"+ - "\u0000\u0000\u150c\u150d\u0007\u0013\u0000\u0000\u150d\u150e\u0007\f\u0000"+ - "\u0000\u150e\u043a\u0001\u0000\u0000\u0000\u150f\u1510\u0007\u0018\u0000"+ - "\u0000\u1510\u1511\u0007\u0011\u0000\u0000\u1511\u043c\u0001\u0000\u0000"+ - "\u0000\u1512\u1513\u0007\u0018\u0000\u0000\u1513\u1514\u0007\u0013\u0000"+ - "\u0000\u1514\u1515\u0007\u001d\u0000\u0000\u1515\u1516\u0007\n\u0000\u0000"+ - "\u1516\u1517\u0007\r\u0000\u0000\u1517\u043e\u0001\u0000\u0000\u0000\u1518"+ - "\u1519\u0007\r\u0000\u0000\u1519\u151a\u0007\u0005\u0000\u0000\u151a\u151b"+ - "\u0007\f\u0000\u0000\u151b\u151c\u0007\u0011\u0000\u0000\u151c\u151d\u0007"+ - "\u0005\u0000\u0000\u151d\u151e\u0007\u0007\u0000\u0000\u151e\u151f\u0007"+ - "\t\u0000\u0000\u151f\u0440\u0001\u0000\u0000\u0000\u1520\u1521\u0007\r"+ - "\u0000\u0000\u1521\u1522\u0007\u0013\u0000\u0000\u1522\u1523\u0007\u0016"+ - "\u0000\u0000\u1523\u1524\u0007\u0007\u0000\u0000\u1524\u1525\u0007\f\u0000"+ - "\u0000\u1525\u0442\u0001\u0000\u0000\u0000\u1526\u1527\u0007\t\u0000\u0000"+ - "\u1527\u1528\u0007\u000e\u0000\u0000\u1528\u1529\u0007\u0005\u0000\u0000"+ - "\u1529\u152a\u0007\u0006\u0000\u0000\u152a\u152b\u0007\n\u0000\u0000\u152b"+ - "\u0444\u0001\u0000\u0000\u0000\u152c\u152d\u0007\t\u0000\u0000\u152d\u152e"+ - "\u0007\u0011\u0000\u0000\u152e\u152f\u0007\u0017\u0000\u0000\u152f\u1530"+ - "\u0007\u0007\u0000\u0000\u1530\u0446\u0001\u0000\u0000\u0000\u1531\u1532"+ - "\u0007\t\u0000\u0000\u1532\u1533\u0007\u001c\u0000\u0000\u1533\u1534\u0007"+ - "\r\u0000\u0000\u1534\u1535\u0007\u0010\u0000\u0000\u1535\u0448\u0001\u0000"+ - "\u0000\u0000\u1536\u1537\u0007\u0010\u0000\u0000\u1537\u1538\u0007\r\u0000"+ - "\u0000\u1538\u1539\u0007\u0011\u0000\u0000\u1539\u153a\u0007\u000f\u0000"+ - "\u0000\u153a\u153b\u0005_\u0000\u0000\u153b\u153c\u0007\t\u0000\u0000"+ - "\u153c\u153d\u0007\u000e\u0000\u0000\u153d\u153e\u0007\u0005\u0000\u0000"+ - "\u153e\u153f\u0007\u0006\u0000\u0000\u153f\u1540\u0007\n\u0000\u0000\u1540"+ - "\u044a\u0001\u0000\u0000\u0000\u1541\u1542\u0007\u0010\u0000\u0000\u1542"+ - "\u1543\u0007\r\u0000\u0000\u1543\u1544\u0007\u0016\u0000\u0000\u1544\u1545"+ - "\u0007\u0007\u0000\u0000\u1545\u1546\u0007\u000e\u0000\u0000\u1546\u044c"+ - "\u0001\u0000\u0000\u0000\u1547\u1548\u0007\u001d\u0000\u0000\u1548\u1549"+ - "\u0007\u0011\u0000\u0000\u1549\u154a\u0007\f\u0000\u0000\u154a\u154b\u0007"+ - "\u0010\u0000\u0000\u154b\u154c\u0007\u0014\u0000\u0000\u154c\u154d\u0005"+ - "_\u0000\u0000\u154d\u154e\u0007\u0012\u0000\u0000\u154e\u154f\u0007\u0016"+ - "\u0000\u0000\u154f\u1550\u0007\u000e\u0000\u0000\u1550\u1551\u0007\u0015"+ - "\u0000\u0000\u1551\u1552\u0007\n\u0000\u0000\u1552\u1553\u0007\u0010\u0000"+ - "\u0000\u1553\u044e\u0001\u0000\u0000\u0000\u1554\u1555\u0007\r\u0000\u0000"+ - "\u1555\u1556\u0007\u0005\u0000\u0000\u1556\u1557\u0007\u0007\u0000\u0000"+ - "\u1557\u1558\u0007\f\u0000\u0000\u1558\u1559\u0007\u0013\u0000\u0000\u1559"+ - "\u155a\u0007\u000f\u0000\u0000\u155a\u0450\u0001\u0000\u0000\u0000\u155b"+ - "\u155c\u0007\t\u0000\u0000\u155c\u155d\u0007\n\u0000\u0000\u155d\u155e"+ - "\u0007\u0010\u0000\u0000\u155e\u155f\u0007\t\u0000\u0000\u155f\u1560\u0007"+ - "\n\u0000\u0000\u1560\u1561\u0007\n\u0000\u0000\u1561\u1562\u0007\f\u0000"+ - "\u0000\u1562\u0452\u0001\u0000\u0000\u0000\u1563\u1564\u0007\u0005\u0000"+ - "\u0000\u1564\u1565\u0007\u000e\u0000\u0000\u1565\u1566\u0007\u0013\u0000"+ - "\u0000\u1566\u1567\u0007\t\u0000\u0000\u1567\u0454\u0001\u0000\u0000\u0000"+ - "\u1568\u1569\u0007\u0005\u0000\u0000\u1569\u156a\u0007\u000e\u0000\u0000"+ - "\u156a\u156b\u0007\u0013\u0000\u0000\u156b\u156c\u0007\t\u0000\u0000\u156c"+ - "\u156d\u0007\f\u0000\u0000\u156d\u0456\u0001\u0000\u0000\u0000\u156e\u156f"+ - "\u0007\u0005\u0000\u0000\u156f\u1570\u0007\t\u0000\u0000\u1570\u1571\u0007"+ - "\u0011\u0000\u0000\u1571\u1572\u0007\u0007\u0000\u0000\u1572\u0458\u0001"+ - "\u0000\u0000\u0000\u1573\u1574\u0007\u0005\u0000\u0000\u1574\u1575\u0007"+ - "\t\u0000\u0000\u1575\u1576\u0007\u0011\u0000\u0000\u1576\u1577\u0007\u0007"+ - "\u0000\u0000\u1577\u1578\u0007\f\u0000\u0000\u1578\u045a\u0001\u0000\u0000"+ - "\u0000\u1579\u157a\u0007\u0005\u0000\u0000\u157a\u157b\u0007\u0010\u0000"+ - "\u0000\u157b\u157c\u0007\u0005\u0000\u0000\u157c\u157d\u0007\u0007\u0000"+ - "\u0000\u157d\u045c\u0001\u0000\u0000\u0000\u157e\u157f\u0007\u0005\u0000"+ - "\u0000\u157f\u1580\u0007\u0010\u0000\u0000\u1580\u1581\u0007\u0005\u0000"+ - "\u0000\u1581\u1582\u0007\u0007\u0000\u0000\u1582\u1583\u0007\f\u0000\u0000"+ - "\u1583\u045e\u0001\u0000\u0000\u0000\u1584\u1585\u0007\u0005\u0000\u0000"+ - "\u1585\u1586\u0007\u0010\u0000\u0000\u1586\u1587\u0007\u0005\u0000\u0000"+ - "\u1587\u1588\u0007\u0007\u0000\u0000\u1588\u1589\u00052\u0000\u0000\u1589"+ - "\u0460\u0001\u0000\u0000\u0000\u158a\u158b\u0007\u0005\u0000\u0000\u158b"+ - "\u158c\u0007\u0010\u0000\u0000\u158c\u158d\u0007\u0005\u0000\u0000\u158d"+ - "\u158e\u0007\u0007\u0000\u0000\u158e\u158f\u00052\u0000\u0000\u158f\u1590"+ - "\u0007\f\u0000\u0000\u1590\u0462\u0001\u0000\u0000\u0000\u1591\u1592\u0007"+ - "\u000e\u0000\u0000\u1592\u1593\u0007\u0013\u0000\u0000\u1593\u1594\u0007"+ - "\t\u0000\u0000\u1594\u0464\u0001\u0000\u0000\u0000\u1595\u1596\u0007\u000e"+ - "\u0000\u0000\u1596\u1597\u0007\u0013\u0000\u0000\u1597\u1598\u0007\t\u0000"+ - "\u0000\u1598\u1599\u0007\f\u0000\u0000\u1599\u0466\u0001\u0000\u0000\u0000"+ - "\u159a\u159b\u0007\u000e\u0000\u0000\u159b\u159c\u0007\u0013\u0000\u0000"+ - "\u159c\u159d\u0007\u0010\u0000\u0000\u159d\u0468\u0001\u0000\u0000\u0000"+ - "\u159e\u159f\u0007\u000e\u0000\u0000\u159f\u15a0\u0007\u0013\u0000\u0000"+ - "\u15a0\u15a1\u0007\u0010\u0000\u0000\u15a1\u15a2\u0007\f\u0000\u0000\u15a2"+ - "\u046a\u0001\u0000\u0000\u0000\u15a3\u15a4\u0007\t\u0000\u0000\u15a4\u15a5"+ - "\u0007\u0011\u0000\u0000\u15a5\u15a6\u0007\u0007\u0000\u0000\u15a6\u046c"+ - "\u0001\u0000\u0000\u0000\u15a7\u15a8\u0007\t\u0000\u0000\u15a8\u15a9\u0007"+ - "\u0011\u0000\u0000\u15a9\u15aa\u0007\u0007\u0000\u0000\u15aa\u15ab\u0007"+ - "\f\u0000\u0000\u15ab\u046e\u0001\u0000\u0000\u0000\u15ac\u15ad\u0007\u0010"+ - "\u0000\u0000\u15ad\u15ae\u0007\u0005\u0000\u0000\u15ae\u15af\u0007\u0007"+ - "\u0000\u0000\u15af\u0470\u0001\u0000\u0000\u0000\u15b0\u15b1\u0007\u0010"+ - "\u0000\u0000\u15b1\u15b2\u0007\u0005\u0000\u0000\u15b2\u15b3\u0007\u0007"+ - "\u0000\u0000\u15b3\u15b4\u0007\f\u0000\u0000\u15b4\u0472\u0001\u0000\u0000"+ - "\u0000\u15b5\u15b6\u0007\t\u0000\u0000\u15b6\u15b7\u0007\u0011\u0000\u0000"+ - "\u15b7\u15b8\u0007\u0007\u0000\u0000\u15b8\u15b9\u0007\u0014\u0000\u0000"+ - "\u15b9\u0474\u0001\u0000\u0000\u0000\u15ba\u15bb\u0007\u000e\u0000\u0000"+ - "\u15bb\u15bc\u0007\u0013\u0000\u0000\u15bc\u15bd\u0007\t\u0000\u0000\u15bd"+ - "\u15be\u0007\u0014\u0000\u0000\u15be\u0476\u0001\u0000\u0000\u0000\u15bf"+ - "\u15c0\u0007\u0010\u0000\u0000\u15c0\u15c1\u0007\u0005\u0000\u0000\u15c1"+ - "\u15c2\u0007\u0007\u0000\u0000\u15c2\u15c3\u0007\u0014\u0000\u0000\u15c3"+ - "\u0478\u0001\u0000\u0000\u0000\u15c4\u15c5\u0007\u0005\u0000\u0000\u15c5"+ - "\u15c6\u0007\t\u0000\u0000\u15c6\u15c7\u0007\u0011\u0000\u0000\u15c7\u15c8"+ - "\u0007\u0007\u0000\u0000\u15c8\u15c9\u0007\u0014\u0000\u0000\u15c9\u047a"+ - "\u0001\u0000\u0000\u0000\u15ca\u15cb\u0007\u0005\u0000\u0000\u15cb\u15cc"+ - "\u0007\u000e\u0000\u0000\u15cc\u15cd\u0007\u0013\u0000\u0000\u15cd\u15ce"+ - "\u0007\t\u0000\u0000\u15ce\u15cf\u0007\u0014\u0000\u0000\u15cf\u047c\u0001"+ - "\u0000\u0000\u0000\u15d0\u15d1\u0007\u0005\u0000\u0000\u15d1\u15d2\u0007"+ - "\u0010\u0000\u0000\u15d2\u15d3\u0007\u0005\u0000\u0000\u15d3\u15d4\u0007"+ - "\u0007\u0000\u0000\u15d4\u15d5\u0007\u0014\u0000\u0000\u15d5\u047e\u0001"+ - "\u0000\u0000\u0000\u15d6\u15d7\u0007\u0012\u0000\u0000\u15d7\u15d8\u0007"+ - "\u0011\u0000\u0000\u15d8\u15d9\u0007\u0010\u0000\u0000\u15d9\u15da\u0005"+ - "_\u0000\u0000\u15da\u15db\u0007\u0006\u0000\u0000\u15db\u15dc\u0007\n"+ - "\u0000\u0000\u15dc\u15dd\u0007\u0007\u0000\u0000\u15dd\u15de\u0007\u0017"+ - "\u0000\u0000\u15de\u15df\u0007\u0010\u0000\u0000\u15df\u15e0\u0007\u0014"+ - "\u0000\u0000\u15e0\u0480\u0001\u0000\u0000\u0000\u15e1\u15e2\u0007\u000e"+ - "\u0000\u0000\u15e2\u15e3\u0007\u0014\u0000\u0000\u15e3\u15e4\u0007\u0005"+ - "\u0000\u0000\u15e4\u15e5\u0007\r\u0000\u0000\u15e5\u15e6\u0005_\u0000"+ - "\u0000\u15e6\u15e7\u0007\u0006\u0000\u0000\u15e7\u15e8\u0007\n\u0000\u0000"+ - "\u15e8\u15e9\u0007\u0007\u0000\u0000\u15e9\u15ea\u0007\u0017\u0000\u0000"+ - "\u15ea\u15eb\u0007\u0010\u0000\u0000\u15eb\u15ec\u0007\u0014\u0000\u0000"+ - "\u15ec\u0482\u0001\u0000\u0000\u0000\u15ed\u15ee\u0007\u000e\u0000\u0000"+ - "\u15ee\u15ef\u0007\u0014\u0000\u0000\u15ef\u15f0\u0007\u0005\u0000\u0000"+ - "\u15f0\u15f1\u0007\r\u0000\u0000\u15f1\u15f2\u0007\u0005\u0000\u0000\u15f2"+ - "\u15f3\u0007\u000e\u0000\u0000\u15f3\u15f4\u0007\u0010\u0000\u0000\u15f4"+ - "\u15f5\u0007\n\u0000\u0000\u15f5\u15f6\u0007\r\u0000\u0000\u15f6\u15f7"+ - "\u0005_\u0000\u0000\u15f7\u15f8\u0007\u0006\u0000\u0000\u15f8\u15f9\u0007"+ - "\n\u0000\u0000\u15f9\u15fa\u0007\u0007\u0000\u0000\u15fa\u15fb\u0007\u0017"+ - "\u0000\u0000\u15fb\u15fc\u0007\u0010\u0000\u0000\u15fc\u15fd\u0007\u0014"+ - "\u0000\u0000\u15fd\u0484\u0001\u0000\u0000\u0000\u15fe\u15ff\u0007\u0006"+ - "\u0000\u0000\u15ff\u1600\u0007\u0013\u0000\u0000\u1600\u1601\u0007\u001d"+ - "\u0000\u0000\u1601\u1602\u0007\n\u0000\u0000\u1602\u1603\u0007\r\u0000"+ - "\u0000\u1603\u0486\u0001\u0000\u0000\u0000\u1604\u1605\u0007\u0013\u0000"+ - "\u0000\u1605\u1606\u0007\u000e\u0000\u0000\u1606\u1607\u0007\u0010\u0000"+ - "\u0000\u1607\u1608\u0007\n\u0000\u0000\u1608\u1609\u0007\u0010\u0000\u0000"+ - "\u1609\u160a\u0005_\u0000\u0000\u160a\u160b\u0007\u0006\u0000\u0000\u160b"+ - "\u160c\u0007\n\u0000\u0000\u160c\u160d\u0007\u0007\u0000\u0000\u160d\u160e"+ - "\u0007\u0017\u0000\u0000\u160e\u160f\u0007\u0010\u0000\u0000\u160f\u1610"+ - "\u0007\u0014\u0000\u0000\u1610\u0488\u0001\u0000\u0000\u0000\u1611\u1612"+ - "\u0007\u0016\u0000\u0000\u1612\u1613\u0007\u0018\u0000\u0000\u1613\u1614"+ - "\u0007\u0018\u0000\u0000\u1614\u1615\u0007\n\u0000\u0000\u1615\u1616\u0007"+ - "\r\u0000\u0000\u1616\u048a\u0001\u0000\u0000\u0000\u1617\u1618\u0007\u0005"+ - "\u0000\u0000\u1618\u1619\u0007\t\u0000\u0000\u1619\u161a\u0007\u000e\u0000"+ - "\u0000\u161a\u161b\u0007\u0011\u0000\u0000\u161b\u161c\u0007\u0011\u0000"+ - "\u0000\u161c\u048c\u0001\u0000\u0000\u0000\u161d\u161e\u0007\u0012\u0000"+ - "\u0000\u161e\u161f\u0007\u0010\u0000\u0000\u161f\u1620\u0007\r\u0000\u0000"+ - "\u1620\u1621\u0007\u0011\u0000\u0000\u1621\u1622\u0007\u000f\u0000\u0000"+ - "\u1622\u048e\u0001\u0000\u0000\u0000\u1623\u1624\u0007\u000e\u0000\u0000"+ - "\u1624\u1625\u0007\u0014\u0000\u0000\u1625\u1626\u0007\r\u0000\u0000\u1626"+ - "\u0490\u0001\u0000\u0000\u0000\u1627\u1628\u0007\u000e\u0000\u0000\u1628"+ - "\u1629\u0007\u0013\u0000\u0000\u1629\u162a\u0007\u0007\u0000\u0000\u162a"+ - "\u162b\u0007\u000e\u0000\u0000\u162b\u162c\u0007\u0005\u0000\u0000\u162c"+ - "\u162d\u0007\u0010\u0000\u0000\u162d\u0492\u0001\u0000\u0000\u0000\u162e"+ - "\u162f\u0007\u000e\u0000\u0000\u162f\u1630\u0007\u0013\u0000\u0000\u1630"+ - "\u1631\u0007\u0007\u0000\u0000\u1631\u1632\u0007\u000e\u0000\u0000\u1632"+ - "\u1633\u0007\u0005\u0000\u0000\u1633\u1634\u0007\u0010\u0000\u0000\u1634"+ - "\u1635\u0005_\u0000\u0000\u1635\u1636\u0007\u001d\u0000\u0000\u1636\u1637"+ - "\u0007\t\u0000\u0000\u1637\u0494\u0001\u0000\u0000\u0000\u1638\u1639\u0007"+ - "\u0019\u0000\u0000\u1639\u163a\u0007\u0013\u0000\u0000\u163a\u163b\u0007"+ - "\r\u0000\u0000\u163b\u163c\u0007\u000f\u0000\u0000\u163c\u163d\u0007\u0005"+ - "\u0000\u0000\u163d\u163e\u0007\u0010\u0000\u0000\u163e\u0496\u0001\u0000"+ - "\u0000\u0000\u163f\u1640\u0007\u0011\u0000\u0000\u1640\u1641\u0007\u0007"+ - "\u0000\u0000\u1641\u1642\u0007\u0011\u0000\u0000\u1642\u1643\u0007\u0010"+ - "\u0000\u0000\u1643\u1644\u0007\u000e\u0000\u0000\u1644\u1645\u0007\u0005"+ - "\u0000\u0000\u1645\u1646\u0007\u0018\u0000\u0000\u1646\u0498\u0001\u0000"+ - "\u0000\u0000\u1647\u1648\u0007\u0006\u0000\u0000\u1648\u1649\u0007\n\u0000"+ - "\u0000\u1649\u164a\u0007\u0007\u0000\u0000\u164a\u164b\u0007\u0017\u0000"+ - "\u0000\u164b\u164c\u0007\u0010\u0000\u0000\u164c\u164d\u0007\u0014\u0000"+ - "\u0000\u164d\u049a\u0001\u0000\u0000\u0000\u164e\u164f\u0007\u0006\u0000"+ - "\u0000\u164f\u1650\u0007\u0018\u0000\u0000\u1650\u1651\u0007\u0005\u0000"+ - "\u0000\u1651\u1652\u0007\f\u0000\u0000\u1652\u049c\u0001\u0000\u0000\u0000"+ - "\u1653\u1654\u0007\u0006\u0000\u0000\u1654\u1655\u0007\u0010\u0000\u0000"+ - "\u1655\u1656\u0007\r\u0000\u0000\u1656\u1657\u0007\u0011\u0000\u0000\u1657"+ - "\u1658\u0007\u000f\u0000\u0000\u1658\u049e\u0001\u0000\u0000\u0000\u1659"+ - "\u165a\u0007\u000f\u0000\u0000\u165a\u165b\u0007\f\u0000\u0000\u165b\u165c"+ - "\u00055\u0000\u0000\u165c\u04a0\u0001\u0000\u0000\u0000\u165d\u165e\u0007"+ - "\u0018\u0000\u0000\u165e\u165f\u0007\u0005\u0000\u0000\u165f\u1660\u0007"+ - "\r\u0000\u0000\u1660\u1661\u0007\t\u0000\u0000\u1661\u1662\u0007\n\u0000"+ - "\u0000\u1662\u1663\u0005_\u0000\u0000\u1663\u1664\u0007\u0011\u0000\u0000"+ - "\u1664\u1665\u0007\f\u0000\u0000\u1665\u1666\u0007\n\u0000\u0000\u1666"+ - "\u1667\u0007\u0007\u0000\u0000\u1667\u1668\u0007\u0010\u0000\u0000\u1668"+ - "\u04a2\u0001\u0000\u0000\u0000\u1669\u166a\u0007\u0018\u0000\u0000\u166a"+ - "\u166b\u0007\u0017\u0000\u0000\u166b\u166c\u0005_\u0000\u0000\u166c\u166d"+ - "\u0007\u000e\u0000\u0000\u166d\u166e\u0007\u0006\u0000\u0000\u166e\u166f"+ - "\u0007\u0011\u0000\u0000\u166f\u1670\u0007\n\u0000\u0000\u1670\u1671\u0007"+ - "\u0007\u0000\u0000\u1671\u1672\u0007\u0010\u0000\u0000\u1672\u1673\u0005"+ - "_\u0000\u0000\u1673\u1674\u0007\n\u0000\u0000\u1674\u1675\u0007\u0007"+ - "\u0000\u0000\u1675\u1676\u0007\u000e\u0000\u0000\u1676\u1677\u0007\u0013"+ - "\u0000\u0000\u1677\u1678\u0007\f\u0000\u0000\u1678\u1679\u0007\u0011\u0000"+ - "\u0000\u1679\u167a\u0007\u0007\u0000\u0000\u167a\u167b\u0007\u0017\u0000"+ - "\u0000\u167b\u04a4\u0001\u0000\u0000\u0000\u167c\u167d\u0007\u001c\u0000"+ - "\u0000\u167d\u167e\u0007\u0016\u0000\u0000\u167e\u167f\u0007\u0013\u0000"+ - "\u0000\u167f\u1680\u0007\u0010\u0000\u0000\u1680\u1681\u0007\n\u0000\u0000"+ - "\u1681\u1682\u0005_\u0000\u0000\u1682\u1683\u0007\u0011\u0000\u0000\u1683"+ - "\u1684\u0007\f\u0000\u0000\u1684\u1685\u0007\n\u0000\u0000\u1685\u1686"+ - "\u0007\u0007\u0000\u0000\u1686\u1687\u0007\u0010\u0000\u0000\u1687\u04a6"+ - "\u0001\u0000\u0000\u0000\u1688\u1689\u0007\u001c\u0000\u0000\u1689\u168a"+ - "\u0007\u0016\u0000\u0000\u168a\u168b\u0007\u0013\u0000\u0000\u168b\u168c"+ - "\u0007\u0010\u0000\u0000\u168c\u168d\u0007\n\u0000\u0000\u168d\u168e\u0005"+ - "_\u0000\u0000\u168e\u168f\u0007\u0006\u0000\u0000\u168f\u1690\u0007\u0011"+ - "\u0000\u0000\u1690\u1691\u0007\u0010\u0000\u0000\u1691\u1692\u0007\n\u0000"+ - "\u0000\u1692\u1693\u0007\r\u0000\u0000\u1693\u1694\u0007\u0005\u0000\u0000"+ - "\u1694\u1695\u0007\u0006\u0000\u0000\u1695\u04a8\u0001\u0000\u0000\u0000"+ - "\u1696\u1697\u0007\u001c\u0000\u0000\u1697\u1698\u0007\u0016\u0000\u0000"+ - "\u1698\u1699\u0007\u0013\u0000\u0000\u1699\u169a\u0007\u0010\u0000\u0000"+ - "\u169a\u169b\u0007\n\u0000\u0000\u169b\u169c\u0005_\u0000\u0000\u169c"+ - "\u169d\u0007\u0007\u0000\u0000\u169d\u169e\u0007\u0016\u0000\u0000\u169e"+ - "\u169f\u0007\u0006\u0000\u0000\u169f\u16a0\u0007\u0006\u0000\u0000\u16a0"+ - "\u16a1\u0007\u0005\u0000\u0000\u16a1\u16a2\u0007\u0012\u0000\u0000\u16a2"+ - "\u16a3\u0007\u0006\u0000\u0000\u16a3\u16a4\u0007\n\u0000\u0000\u16a4\u04aa"+ - "\u0001\u0000\u0000\u0000\u16a5\u16a6\u0007\r\u0000\u0000\u16a6\u16a7\u0007"+ - "\n\u0000\u0000\u16a7\u16a8\u0007\u0017\u0000\u0000\u16a8\u16a9\u0007\n"+ - "\u0000\u0000\u16a9\u16aa\u0007\u001a\u0000\u0000\u16aa\u16ab\u0007\u0018"+ - "\u0000\u0000\u16ab\u16ac\u0005_\u0000\u0000\u16ac\u16ad\u0007\u000e\u0000"+ - "\u0000\u16ad\u16ae\u0007\u0013\u0000\u0000\u16ae\u16af\u0007\u0016\u0000"+ - "\u0000\u16af\u16b0\u0007\u0007\u0000\u0000\u16b0\u16b1\u0007\u0010\u0000"+ - "\u0000\u16b1\u04ac\u0001\u0000\u0000\u0000\u16b2\u16b3\u0007\r\u0000\u0000"+ - "\u16b3\u16b4\u0007\n\u0000\u0000\u16b4\u16b5\u0007\u0017\u0000\u0000\u16b5"+ - "\u16b6\u0007\n\u0000\u0000\u16b6\u16b7\u0007\u001a\u0000\u0000\u16b7\u16b8"+ - "\u0007\u0018\u0000\u0000\u16b8\u16b9\u0005_\u0000\u0000\u16b9\u16ba\u0007"+ - "\u0011\u0000\u0000\u16ba\u16bb\u0007\u0007\u0000\u0000\u16bb\u16bc\u0007"+ - "\t\u0000\u0000\u16bc\u16bd\u0007\u0010\u0000\u0000\u16bd\u16be\u0007\r"+ - "\u0000\u0000\u16be\u04ae\u0001\u0000\u0000\u0000\u16bf\u16c0\u0007\r\u0000"+ - "\u0000\u16c0\u16c1\u0007\n\u0000\u0000\u16c1\u16c2\u0007\u0017\u0000\u0000"+ - "\u16c2\u16c3\u0007\n\u0000\u0000\u16c3\u16c4\u0007\u001a\u0000\u0000\u16c4"+ - "\u16c5\u0007\u0018\u0000\u0000\u16c5\u16c6\u0005_\u0000\u0000\u16c6\u16c7"+ - "\u0007\u0006\u0000\u0000\u16c7\u16c8\u0007\u0011\u0000\u0000\u16c8\u16c9"+ - "\u0007\u0015\u0000\u0000\u16c9\u16ca\u0007\n\u0000\u0000\u16ca\u04b0\u0001"+ - "\u0000\u0000\u0000\u16cb\u16cc\u0007\r\u0000\u0000\u16cc\u16cd\u0007\n"+ - "\u0000\u0000\u16cd\u16ce\u0007\u0017\u0000\u0000\u16ce\u16cf\u0007\n\u0000"+ - "\u0000\u16cf\u16d0\u0007\u001a\u0000\u0000\u16d0\u16d1\u0007\u0018\u0000"+ - "\u0000\u16d1\u16d2\u0005_\u0000\u0000\u16d2\u16d3\u0007\u000f\u0000\u0000"+ - "\u16d3\u16d4\u0007\u0005\u0000\u0000\u16d4\u16d5\u0007\u0010\u0000\u0000"+ - "\u16d5\u16d6\u0007\u000e\u0000\u0000\u16d6\u16d7\u0007\u0014\u0000\u0000"+ - "\u16d7\u04b2\u0001\u0000\u0000\u0000\u16d8\u16d9\u0007\r\u0000\u0000\u16d9"+ - "\u16da\u0007\n\u0000\u0000\u16da\u16db\u0007\u0017\u0000\u0000\u16db\u16dc"+ - "\u0007\n\u0000\u0000\u16dc\u16dd\u0007\u001a\u0000\u0000\u16dd\u16de\u0007"+ - "\u0018\u0000\u0000\u16de\u16df\u0005_\u0000\u0000\u16df\u16e0\u0007\u000f"+ - "\u0000\u0000\u16e0\u16e1\u0007\u0005\u0000\u0000\u16e1\u16e2\u0007\u0010"+ - "\u0000\u0000\u16e2\u16e3\u0007\u000e\u0000\u0000\u16e3\u16e4\u0007\u0014"+ - "\u0000\u0000\u16e4\u16e5\u0007\n\u0000\u0000\u16e5\u16e6\u0007\t\u0000"+ - "\u0000\u16e6\u04b4\u0001\u0000\u0000\u0000\u16e7\u16e8\u0007\r\u0000\u0000"+ - "\u16e8\u16e9\u0007\n\u0000\u0000\u16e9\u16ea\u0007\u0017\u0000\u0000\u16ea"+ - "\u16eb\u0007\n\u0000\u0000\u16eb\u16ec\u0007\u001a\u0000\u0000\u16ec\u16ed"+ - "\u0007\u0018\u0000\u0000\u16ed\u16ee\u0005_\u0000\u0000\u16ee\u16ef\u0007"+ - "\r\u0000\u0000\u16ef\u16f0\u0007\n\u0000\u0000\u16f0\u16f1\u0007\u0018"+ - "\u0000\u0000\u16f1\u16f2\u0007\u0006\u0000\u0000\u16f2\u16f3\u0007\u0005"+ - "\u0000\u0000\u16f3\u16f4\u0007\u000e\u0000\u0000\u16f4\u16f5\u0007\n\u0000"+ - "\u0000\u16f5\u04b6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0007\r\u0000\u0000"+ - "\u16f7\u16f8\u0007\n\u0000\u0000\u16f8\u16f9\u0007\u0017\u0000\u0000\u16f9"+ - "\u16fa\u0007\n\u0000\u0000\u16fa\u16fb\u0007\u001a\u0000\u0000\u16fb\u16fc"+ - "\u0007\u0018\u0000\u0000\u16fc\u16fd\u0005_\u0000\u0000\u16fd\u16fe\u0007"+ - "\t\u0000\u0000\u16fe\u16ff\u0007\u0018\u0000\u0000\u16ff\u1700\u0007\u0006"+ - "\u0000\u0000\u1700\u1701\u0007\u0011\u0000\u0000\u1701\u1702\u0007\u0010"+ - "\u0000\u0000\u1702\u1703\u0005_\u0000\u0000\u1703\u1704\u0007\u0010\u0000"+ - "\u0000\u1704\u1705\u0007\u0013\u0000\u0000\u1705\u1706\u0005_\u0000\u0000"+ - "\u1706\u1707\u0007\u0005\u0000\u0000\u1707\u1708\u0007\r\u0000\u0000\u1708"+ - "\u1709\u0007\r\u0000\u0000\u1709\u170a\u0007\u0005\u0000\u0000\u170a\u170b"+ - "\u0007\b\u0000\u0000\u170b\u04b8\u0001\u0000\u0000\u0000\u170c\u170d\u0007"+ - "\r\u0000\u0000\u170d\u170e\u0007\n\u0000\u0000\u170e\u170f\u0007\u0017"+ - "\u0000\u0000\u170f\u1710\u0007\n\u0000\u0000\u1710\u1711\u0007\u001a\u0000"+ - "\u0000\u1711\u1712\u0007\u0018\u0000\u0000\u1712\u1713\u0005_\u0000\u0000"+ - "\u1713\u1714\u0007\t\u0000\u0000\u1714\u1715\u0007\u0018\u0000\u0000\u1715"+ - "\u1716\u0007\u0006\u0000\u0000\u1716\u1717\u0007\u0011\u0000\u0000\u1717"+ - "\u1718\u0007\u0010\u0000\u0000\u1718\u1719\u0005_\u0000\u0000\u1719\u171a"+ - "\u0007\u0010\u0000\u0000\u171a\u171b\u0007\u0013\u0000\u0000\u171b\u171c"+ - "\u0005_\u0000\u0000\u171c\u171d\u0007\u0010\u0000\u0000\u171d\u171e\u0007"+ - "\u0005\u0000\u0000\u171e\u171f\u0007\u0012\u0000\u0000\u171f\u1720\u0007"+ - "\u0006\u0000\u0000\u1720\u1721\u0007\n\u0000\u0000\u1721\u04ba\u0001\u0000"+ - "\u0000\u0000\u1722\u1723\u0007\r\u0000\u0000\u1723\u1724\u0007\n\u0000"+ - "\u0000\u1724\u1725\u0007\u0017\u0000\u0000\u1725\u1726\u0007\n\u0000\u0000"+ - "\u1726\u1727\u0007\u001a\u0000\u0000\u1727\u1728\u0007\u0018\u0000\u0000"+ - "\u1728\u1729\u0005_\u0000\u0000\u1729\u172a\u0007\t\u0000\u0000\u172a"+ - "\u172b\u0007\u0016\u0000\u0000\u172b\u172c\u0007\u0012\u0000\u0000\u172c"+ - "\u172d\u0007\t\u0000\u0000\u172d\u172e\u0007\u0010\u0000\u0000\u172e\u172f"+ - "\u0007\r\u0000\u0000\u172f\u04bc\u0001\u0000\u0000\u0000\u1730\u1731\u0007"+ - "\r\u0000\u0000\u1731\u1732\u0007\n\u0000\u0000\u1732\u1733\u0007\u0018"+ - "\u0000\u0000\u1733\u1734\u0007\n\u0000\u0000\u1734\u1735\u0007\u0005\u0000"+ - "\u0000\u1735\u1736\u0007\u0010\u0000\u0000\u1736\u04be\u0001\u0000\u0000"+ - "\u0000\u1737\u1738\u0007\r\u0000\u0000\u1738\u1739\u0007\u0018\u0000\u0000"+ - "\u1739\u173a\u0007\u0005\u0000\u0000\u173a\u173b\u0007\f\u0000\u0000\u173b"+ - "\u04c0\u0001\u0000\u0000\u0000\u173c\u173d\u0007\r\u0000\u0000\u173d\u173e"+ - "\u0007\u0010\u0000\u0000\u173e\u173f\u0007\r\u0000\u0000\u173f\u1740\u0007"+ - "\u0011\u0000\u0000\u1740\u1741\u0007\u000f\u0000\u0000\u1741\u04c2\u0001"+ - "\u0000\u0000\u0000\u1742\u1743\u0007\t\u0000\u0000\u1743\u1744\u0007\u0018"+ - "\u0000\u0000\u1744\u1745\u0007\u0006\u0000\u0000\u1745\u1746\u0007\u0011"+ - "\u0000\u0000\u1746\u1747\u0007\u0010\u0000\u0000\u1747\u1748\u0005_\u0000"+ - "\u0000\u1748\u1749\u0007\u0018\u0000\u0000\u1749\u174a\u0007\u0005\u0000"+ - "\u0000\u174a\u174b\u0007\r\u0000\u0000\u174b\u174c\u0007\u0010\u0000\u0000"+ - "\u174c\u04c4\u0001\u0000\u0000\u0000\u174d\u174e\u0007\t\u0000\u0000\u174e"+ - "\u174f\u0007\u0010\u0000\u0000\u174f\u1750\u0007\u0005\u0000\u0000\u1750"+ - "\u1751\u0007\r\u0000\u0000\u1751\u1752\u0007\u0010\u0000\u0000\u1752\u1753"+ - "\u0007\t\u0000\u0000\u1753\u1754\u0005_\u0000\u0000\u1754\u1755\u0007"+ - "\u001d\u0000\u0000\u1755\u1756\u0007\u0011\u0000\u0000\u1756\u1757\u0007"+ - "\u0010\u0000\u0000\u1757\u1758\u0007\u0014\u0000\u0000\u1758\u04c6\u0001"+ - "\u0000\u0000\u0000\u1759\u175a\u0007\t\u0000\u0000\u175a\u175b\u0007\u0010"+ - "\u0000\u0000\u175b\u175c\u0007\r\u0000\u0000\u175c\u175d\u0007\u0011\u0000"+ - "\u0000\u175d\u175e\u0007\u0007\u0000\u0000\u175e\u175f\u0007\u0017\u0000"+ - "\u0000\u175f\u1760\u0005_\u0000\u0000\u1760\u1761\u0007\u0010\u0000\u0000"+ - "\u1761\u1762\u0007\u0013\u0000\u0000\u1762\u1763\u0005_\u0000\u0000\u1763"+ - "\u1764\u0007\u0005\u0000\u0000\u1764\u1765\u0007\r\u0000\u0000\u1765\u1766"+ - "\u0007\r\u0000\u0000\u1766\u1767\u0007\u0005\u0000\u0000\u1767\u1768\u0007"+ - "\b\u0000\u0000\u1768\u04c8\u0001\u0000\u0000\u0000\u1769\u176a\u0007\t"+ - "\u0000\u0000\u176a\u176b\u0007\u0010\u0000\u0000\u176b\u176c\u0007\r\u0000"+ - "\u0000\u176c\u176d\u0007\u0011\u0000\u0000\u176d\u176e\u0007\u0007\u0000"+ - "\u0000\u176e\u176f\u0007\u0017\u0000\u0000\u176f\u1770\u0005_\u0000\u0000"+ - "\u1770\u1771\u0007\u0010\u0000\u0000\u1771\u1772\u0007\u0013\u0000\u0000"+ - "\u1772\u1773\u0005_\u0000\u0000\u1773\u1774\u0007\u0010\u0000\u0000\u1774"+ - "\u1775\u0007\u0005\u0000\u0000\u1775\u1776\u0007\u0012\u0000\u0000\u1776"+ - "\u1777\u0007\u0006\u0000\u0000\u1777\u1778\u0007\n\u0000\u0000\u1778\u04ca"+ - "\u0001\u0000\u0000\u0000\u1779\u177a\u0007\t\u0000\u0000\u177a\u177b\u0007"+ - "\u0010\u0000\u0000\u177b\u177c\u0007\r\u0000\u0000\u177c\u177d\u0007\u0018"+ - "\u0000\u0000\u177d\u177e\u0007\u0013\u0000\u0000\u177e\u177f\u0007\t\u0000"+ - "\u0000\u177f\u04cc\u0001\u0000\u0000\u0000\u1780\u1781\u0007\t\u0000\u0000"+ - "\u1781\u1782\u0007\u0016\u0000\u0000\u1782\u1783\u0007\u0012\u0000\u0000"+ - "\u1783\u1784\u0007\t\u0000\u0000\u1784\u1785\u0007\u0010\u0000\u0000\u1785"+ - "\u1786\u0007\r\u0000\u0000\u1786\u04ce\u0001\u0000\u0000\u0000\u1787\u1788"+ - "\u0007\u0010\u0000\u0000\u1788\u1789\u0007\u0013\u0000\u0000\u1789\u178a"+ - "\u0005_\u0000\u0000\u178a\u178b\u0007\u0005\u0000\u0000\u178b\u178c\u0007"+ - "\t\u0000\u0000\u178c\u178d\u0007\u000e\u0000\u0000\u178d\u178e\u0007\u0011"+ - "\u0000\u0000\u178e\u178f\u0007\u0011\u0000\u0000\u178f\u04d0\u0001\u0000"+ - "\u0000\u0000\u1790\u1791\u0007\u0010\u0000\u0000\u1791\u1792\u0007\u0013"+ - "\u0000\u0000\u1792\u1793\u0005_\u0000\u0000\u1793\u1794\u0007\u0014\u0000"+ - "\u0000\u1794\u1795\u0007\n\u0000\u0000\u1795\u1796\u0007\u001a\u0000\u0000"+ - "\u1796\u04d2\u0001\u0000\u0000\u0000\u1797\u1798\u0007\u0010\u0000\u0000"+ - "\u1798\u1799\u0007\r\u0000\u0000\u1799\u179a\u0007\u0005\u0000\u0000\u179a"+ - "\u179b\u0007\u0007\u0000\u0000\u179b\u179c\u0007\t\u0000\u0000\u179c\u179d"+ - "\u0007\u0006\u0000\u0000\u179d\u179e\u0007\u0005\u0000\u0000\u179e\u179f"+ - "\u0007\u0010\u0000\u0000\u179f\u17a0\u0007\n\u0000\u0000\u17a0\u04d4\u0001"+ - "\u0000\u0000\u0000\u17a1\u17a2\u0007\u0016\u0000\u0000\u17a2\u17a3\u0007"+ - "\u0007\u0000\u0000\u17a3\u17a4\u0007\u0011\u0000\u0000\u17a4\u17a5\u0007"+ - "\t\u0000\u0000\u17a5\u17a6\u0007\u0010\u0000\u0000\u17a6\u17a7\u0007\r"+ - "\u0000\u0000\u17a7\u04d6\u0001\u0000\u0000\u0000\u17a8\u17a9\u0007\u0005"+ - "\u0000\u0000\u17a9\u17aa\u0007\u0017\u0000\u0000\u17aa\u17ab\u0007\n\u0000"+ - "\u0000\u17ab\u04d8\u0001\u0000\u0000\u0000\u17ac\u17ad\u0007\u000e\u0000"+ - "\u0000\u17ad\u17ae\u0007\u0006\u0000\u0000\u17ae\u17af\u0007\u0013\u0000"+ - "\u0000\u17af\u17b0\u0007\u000e\u0000\u0000\u17b0\u17b1\u0007\u0015\u0000"+ - "\u0000\u17b1\u17b2\u0005_\u0000\u0000\u17b2\u17b3\u0007\u0010\u0000\u0000"+ - "\u17b3\u17b4\u0007\u0011\u0000\u0000\u17b4\u17b5\u0007\u000f\u0000\u0000"+ - "\u17b5\u17b6\u0007\n\u0000\u0000\u17b6\u17b7\u0007\t\u0000\u0000\u17b7"+ - "\u17b8\u0007\u0010\u0000\u0000\u17b8\u17b9\u0007\u0005\u0000\u0000\u17b9"+ - "\u17ba\u0007\u000f\u0000\u0000\u17ba\u17bb\u0007\u0018\u0000\u0000\u17bb"+ - "\u04da\u0001\u0000\u0000\u0000\u17bc\u17bd\u0007\f\u0000\u0000\u17bd\u17be"+ - "\u0007\u0005\u0000\u0000\u17be\u17bf\u0007\u0010\u0000\u0000\u17bf\u17c0"+ - "\u0007\n\u0000\u0000\u17c0\u17c1\u0005_\u0000\u0000\u17c1\u17c2\u0007"+ - "\u0012\u0000\u0000\u17c2\u17c3\u0007\u0011\u0000\u0000\u17c3\u17c4\u0007"+ - "\u0007\u0000\u0000\u17c4\u04dc\u0001\u0000\u0000\u0000\u17c5\u17c6\u0007"+ - "\f\u0000\u0000\u17c6\u17c7\u0007\u0005\u0000\u0000\u17c7\u17c8\u0007\u0010"+ - "\u0000\u0000\u17c8\u17c9\u0007\n\u0000\u0000\u17c9\u17ca\u0005_\u0000"+ - "\u0000\u17ca\u17cb\u0007\u0018\u0000\u0000\u17cb\u17cc\u0007\u0005\u0000"+ - "\u0000\u17cc\u17cd\u0007\r\u0000\u0000\u17cd\u17ce\u0007\u0010\u0000\u0000"+ - "\u17ce\u04de\u0001\u0000\u0000\u0000\u17cf\u17d0\u0007\f\u0000\u0000\u17d0"+ - "\u17d1\u0007\u0005\u0000\u0000\u17d1\u17d2\u0007\u0010\u0000\u0000\u17d2"+ - "\u17d3\u0007\n\u0000\u0000\u17d3\u17d4\u0005_\u0000\u0000\u17d4\u17d5"+ - "\u0007\u0010\u0000\u0000\u17d5\u17d6\u0007\r\u0000\u0000\u17d6\u17d7\u0007"+ - "\u0016\u0000\u0000\u17d7\u17d8\u0007\u0007\u0000\u0000\u17d8\u17d9\u0007"+ - "\u000e\u0000\u0000\u17d9\u04e0\u0001\u0000\u0000\u0000\u17da\u17db\u0007"+ - "\u0011\u0000\u0000\u17db\u17dc\u0007\t\u0000\u0000\u17dc\u17dd\u0007\u0019"+ - "\u0000\u0000\u17dd\u17de\u0007\u0011\u0000\u0000\u17de\u17df\u0007\u0007"+ - "\u0000\u0000\u17df\u17e0\u0007\u0011\u0000\u0000\u17e0\u17e1\u0007\u0010"+ - "\u0000\u0000\u17e1\u17e2\u0007\n\u0000\u0000\u17e2\u04e2\u0001\u0000\u0000"+ - "\u0000\u17e3\u17e4\u0007\u001e\u0000\u0000\u17e4\u17e5\u0007\u0016\u0000"+ - "\u0000\u17e5\u17e6\u0007\t\u0000\u0000\u17e6\u17e7\u0007\u0010\u0000\u0000"+ - "\u17e7\u17e8\u0007\u0011\u0000\u0000\u17e8\u17e9\u0007\u0019\u0000\u0000"+ - "\u17e9\u17ea\u0007\b\u0000\u0000\u17ea\u17eb\u0005_\u0000\u0000\u17eb"+ - "\u17ec\u0007\f\u0000\u0000\u17ec\u17ed\u0007\u0005\u0000\u0000\u17ed\u17ee"+ - "\u0007\b\u0000\u0000\u17ee\u17ef\u0007\t\u0000\u0000\u17ef\u04e4\u0001"+ - "\u0000\u0000\u0000\u17f0\u17f1\u0007\u001e\u0000\u0000\u17f1\u17f2\u0007"+ - "\u0016\u0000\u0000\u17f2\u17f3\u0007\t\u0000\u0000\u17f3\u17f4\u0007\u0010"+ - "\u0000\u0000\u17f4\u17f5\u0007\u0011\u0000\u0000\u17f5\u17f6\u0007\u0019"+ - "\u0000\u0000\u17f6\u17f7\u0007\b\u0000\u0000\u17f7\u17f8\u0005_\u0000"+ - "\u0000\u17f8\u17f9\u0007\u0014\u0000\u0000\u17f9\u17fa\u0007\u0013\u0000"+ - "\u0000\u17fa\u17fb\u0007\u0016\u0000\u0000\u17fb\u17fc\u0007\r\u0000\u0000"+ - "\u17fc\u17fd\u0007\t\u0000\u0000\u17fd\u04e6\u0001\u0000\u0000\u0000\u17fe"+ - "\u17ff\u0007\u001e\u0000\u0000\u17ff\u1800\u0007\u0016\u0000\u0000\u1800"+ - "\u1801\u0007\t\u0000\u0000\u1801\u1802\u0007\u0010\u0000\u0000\u1802\u1803"+ - "\u0007\u0011\u0000\u0000\u1803\u1804\u0007\u0019\u0000\u0000\u1804\u1805"+ - "\u0007\b\u0000\u0000\u1805\u1806\u0005_\u0000\u0000\u1806\u1807\u0007"+ - "\u0011\u0000\u0000\u1807\u1808\u0007\u0007\u0000\u0000\u1808\u1809\u0007"+ - "\u0010\u0000\u0000\u1809\u180a\u0007\n\u0000\u0000\u180a\u180b\u0007\r"+ - "\u0000\u0000\u180b\u180c\u0007\u001b\u0000\u0000\u180c\u180d\u0007\u0005"+ - "\u0000\u0000\u180d\u180e\u0007\u0006\u0000\u0000\u180e\u04e8\u0001\u0000"+ - "\u0000\u0000\u180f\u1810\u0007\u000f\u0000\u0000\u1810\u1811\u0007\u0005"+ - "\u0000\u0000\u1811\u1812\u0007\u0015\u0000\u0000\u1812\u1813\u0007\n\u0000"+ - "\u0000\u1813\u1814\u0005_\u0000\u0000\u1814\u1815\u0007\f\u0000\u0000"+ - "\u1815\u1816\u0007\u0005\u0000\u0000\u1816\u1817\u0007\u0010\u0000\u0000"+ - "\u1817\u1818\u0007\n\u0000\u0000\u1818\u04ea\u0001\u0000\u0000\u0000\u1819"+ - "\u181a\u0007\u000f\u0000\u0000\u181a\u181b\u0007\u0005\u0000\u0000\u181b"+ - "\u181c\u0007\u0015\u0000\u0000\u181c\u181d\u0007\n\u0000\u0000\u181d\u181e"+ - "\u0005_\u0000\u0000\u181e\u181f\u0007\u0011\u0000\u0000\u181f\u1820\u0007"+ - "\u0007\u0000\u0000\u1820\u1821\u0007\u0010\u0000\u0000\u1821\u1822\u0007"+ - "\n\u0000\u0000\u1822\u1823\u0007\r\u0000\u0000\u1823\u1824\u0007\u001b"+ - "\u0000\u0000\u1824\u1825\u0007\u0005\u0000\u0000\u1825\u1826\u0007\u0006"+ - "\u0000\u0000\u1826\u04ec\u0001\u0000\u0000\u0000\u1827\u1828\u0007\u000f"+ - "\u0000\u0000\u1828\u1829\u0007\u0005\u0000\u0000\u1829\u182a\u0007\u0015"+ - "\u0000\u0000\u182a\u182b\u0007\n\u0000\u0000\u182b\u182c\u0005_\u0000"+ - "\u0000\u182c\u182d\u0007\u0010\u0000\u0000\u182d\u182e\u0007\u0011\u0000"+ - "\u0000\u182e\u182f\u0007\u000f\u0000\u0000\u182f\u1830\u0007\n\u0000\u0000"+ - "\u1830\u04ee\u0001\u0000\u0000\u0000\u1831\u1832\u0007\u000f\u0000\u0000"+ - "\u1832\u1833\u0007\u0005\u0000\u0000\u1833\u1834\u0007\u0015\u0000\u0000"+ - "\u1834\u1835\u0007\n\u0000\u0000\u1835\u1836\u0005_\u0000\u0000\u1836"+ - "\u1837\u0007\u0010\u0000\u0000\u1837\u1838\u0007\u0011\u0000\u0000\u1838"+ - "\u1839\u0007\u000f\u0000\u0000\u1839\u183a\u0007\n\u0000\u0000\u183a\u183b"+ - "\u0007\t\u0000\u0000\u183b\u183c\u0007\u0010\u0000\u0000\u183c\u183d\u0007"+ - "\u0005\u0000\u0000\u183d\u183e\u0007\u000f\u0000\u0000\u183e\u183f\u0007"+ - "\u0018\u0000\u0000\u183f\u04f0\u0001\u0000\u0000\u0000\u1840\u1841\u0007"+ - "\u000f\u0000\u0000\u1841\u1842\u0007\u0005\u0000\u0000\u1842\u1843\u0007"+ - "\u0015\u0000\u0000\u1843\u1844\u0007\n\u0000\u0000\u1844\u1845\u0005_"+ - "\u0000\u0000\u1845\u1846\u0007\u0010\u0000\u0000\u1846\u1847\u0007\u0011"+ - "\u0000\u0000\u1847\u1848\u0007\u000f\u0000\u0000\u1848\u1849\u0007\n\u0000"+ - "\u0000\u1849\u184a\u0007\t\u0000\u0000\u184a\u184b\u0007\u0010\u0000\u0000"+ - "\u184b\u184c\u0007\u0005\u0000\u0000\u184c\u184d\u0007\u000f\u0000\u0000"+ - "\u184d\u184e\u0007\u0018\u0000\u0000\u184e\u184f\u0007\u0010\u0000\u0000"+ - "\u184f\u1850\u0007\u000b\u0000\u0000\u1850\u04f2\u0001\u0000\u0000\u0000"+ - "\u1851\u1852\u0007\u0007\u0000\u0000\u1852\u1853\u0007\u0013\u0000\u0000"+ - "\u1853\u1854\u0007\u001d\u0000\u0000\u1854\u04f4\u0001\u0000\u0000\u0000"+ - "\u1855\u1856\u0007\t\u0000\u0000\u1856\u1857\u0007\u0010\u0000\u0000\u1857"+ - "\u1858\u0007\u0005\u0000\u0000\u1858\u1859\u0007\u0010\u0000\u0000\u1859"+ - "\u185a\u0007\n\u0000\u0000\u185a\u185b\u0007\u000f\u0000\u0000\u185b\u185c"+ - "\u0007\n\u0000\u0000\u185c\u185d\u0007\u0007\u0000\u0000\u185d\u185e\u0007"+ - "\u0010\u0000\u0000\u185e\u185f\u0005_\u0000\u0000\u185f\u1860\u0007\u0010"+ - "\u0000\u0000\u1860\u1861\u0007\u0011\u0000\u0000\u1861\u1862\u0007\u000f"+ - "\u0000\u0000\u1862\u1863\u0007\n\u0000\u0000\u1863\u1864\u0007\t\u0000"+ - "\u0000\u1864\u1865\u0007\u0010\u0000\u0000\u1865\u1866\u0007\u0005\u0000"+ - "\u0000\u1866\u1867\u0007\u000f\u0000\u0000\u1867\u1868\u0007\u0018\u0000"+ - "\u0000\u1868\u04f6\u0001\u0000\u0000\u0000\u1869\u186a\u0007\u0010\u0000"+ - "\u0000\u186a\u186b\u0007\u0011\u0000\u0000\u186b\u186c\u0007\u000f\u0000"+ - "\u0000\u186c\u186d\u0007\n\u0000\u0000\u186d\u186e\u0007\u0013\u0000\u0000"+ - "\u186e\u186f\u0007\u0019\u0000\u0000\u186f\u1870\u0007\f\u0000\u0000\u1870"+ - "\u1871\u0007\u0005\u0000\u0000\u1871\u1872\u0007\b\u0000\u0000\u1872\u04f8"+ - "\u0001\u0000\u0000\u0000\u1873\u1874\u0007\u0010\u0000\u0000\u1874\u1875"+ - "\u0007\r\u0000\u0000\u1875\u1876\u0007\u0005\u0000\u0000\u1876\u1877\u0007"+ - "\u0007\u0000\u0000\u1877\u1878\u0007\t\u0000\u0000\u1878\u1879\u0007\u0005"+ - "\u0000\u0000\u1879\u187a\u0007\u000e\u0000\u0000\u187a\u187b\u0007\u0010"+ - "\u0000\u0000\u187b\u187c\u0007\u0011\u0000\u0000\u187c\u187d\u0007\u0013"+ - "\u0000\u0000\u187d\u187e\u0007\u0007\u0000\u0000\u187e\u187f\u0005_\u0000"+ - "\u0000\u187f\u1880\u0007\u0010\u0000\u0000\u1880\u1881\u0007\u0011\u0000"+ - "\u0000\u1881\u1882\u0007\u000f\u0000\u0000\u1882\u1883\u0007\n\u0000\u0000"+ - "\u1883\u1884\u0007\t\u0000\u0000\u1884\u1885\u0007\u0010\u0000\u0000\u1885"+ - "\u1886\u0007\u0005\u0000\u0000\u1886\u1887\u0007\u000f\u0000\u0000\u1887"+ - "\u1888\u0007\u0018\u0000\u0000\u1888\u04fa\u0001\u0000\u0000\u0000\u1889"+ - "\u188a\u0007\u0010\u0000\u0000\u188a\u188b\u0007\u0013\u0000\u0000\u188b"+ - "\u188c\u0005_\u0000\u0000\u188c\u188d\u0007\u0010\u0000\u0000\u188d\u188e"+ - "\u0007\u0011\u0000\u0000\u188e\u188f\u0007\u000f\u0000\u0000\u188f\u1890"+ - "\u0007\n\u0000\u0000\u1890\u1891\u0007\t\u0000\u0000\u1891\u1892\u0007"+ - "\u0010\u0000\u0000\u1892\u1893\u0007\u0005\u0000\u0000\u1893\u1894\u0007"+ - "\u000f\u0000\u0000\u1894\u1895\u0007\u0018\u0000\u0000\u1895\u04fc\u0001"+ - "\u0000\u0000\u0000\u1896\u1897\u0007\u0010\u0000\u0000\u1897\u1898\u0007"+ - "\u0013\u0000\u0000\u1898\u1899\u0005_\u0000\u0000\u1899\u189a\u0007\u000e"+ - "\u0000\u0000\u189a\u189b\u0007\u0014\u0000\u0000\u189b\u189c\u0007\u0005"+ - "\u0000\u0000\u189c\u189d\u0007\r\u0000\u0000\u189d\u04fe\u0001\u0000\u0000"+ - "\u0000\u189e\u189f\u0007\u0010\u0000\u0000\u189f\u18a0\u0007\u0013\u0000"+ - "\u0000\u18a0\u18a1\u0005_\u0000\u0000\u18a1\u18a2\u0007\f\u0000\u0000"+ - "\u18a2\u18a3\u0007\u0005\u0000\u0000\u18a3\u18a4\u0007\u0010\u0000\u0000"+ - "\u18a4\u18a5\u0007\n\u0000\u0000\u18a5\u0500\u0001\u0000\u0000\u0000\u18a6"+ - "\u18a7\u0007\u0010\u0000\u0000\u18a7\u18a8\u0007\u0013\u0000\u0000\u18a8"+ - "\u18a9\u0005_\u0000\u0000\u18a9\u18aa\u0007\u0007\u0000\u0000\u18aa\u18ab"+ - "\u0007\u0016\u0000\u0000\u18ab\u18ac\u0007\u000f\u0000\u0000\u18ac\u18ad"+ - "\u0007\u0012\u0000\u0000\u18ad\u18ae\u0007\n\u0000\u0000\u18ae\u18af\u0007"+ - "\r\u0000\u0000\u18af\u0502\u0001\u0000\u0000\u0000\u18b0\u18b4\u0003\u0505"+ - "\u0280\u0000\u18b1\u18b3\u0003\u0507\u0281\u0000\u18b2\u18b1\u0001\u0000"+ - "\u0000\u0000\u18b3\u18b6\u0001\u0000\u0000\u0000\u18b4\u18b2\u0001\u0000"+ - "\u0000\u0000\u18b4\u18b5\u0001\u0000\u0000\u0000\u18b5\u0504\u0001\u0000"+ - "\u0000\u0000\u18b6\u18b4\u0001\u0000\u0000\u0000\u18b7\u18be\u0007\u001f"+ - "\u0000\u0000\u18b8\u18b9\u0007 \u0000\u0000\u18b9\u18be\u0004\u0280\u0006"+ - "\u0000\u18ba\u18bb\u0007!\u0000\u0000\u18bb\u18bc\u0007\"\u0000\u0000"+ - "\u18bc\u18be\u0004\u0280\u0007\u0000\u18bd\u18b7\u0001\u0000\u0000\u0000"+ - "\u18bd\u18b8\u0001\u0000\u0000\u0000\u18bd\u18ba\u0001\u0000\u0000\u0000"+ - "\u18be\u0506\u0001\u0000\u0000\u0000\u18bf\u18c2\u0003\u0509\u0282\u0000"+ - "\u18c0\u18c2\u0005$\u0000\u0000\u18c1\u18bf\u0001\u0000\u0000\u0000\u18c1"+ - "\u18c0\u0001\u0000\u0000\u0000\u18c2\u0508\u0001\u0000\u0000\u0000\u18c3"+ - "\u18c6\u0003\u0505\u0280\u0000\u18c4\u18c6\u0007\u0000\u0000\u0000\u18c5"+ - "\u18c3\u0001\u0000\u0000\u0000\u18c5\u18c4\u0001\u0000\u0000\u0000\u18c6"+ - "\u050a\u0001\u0000\u0000\u0000\u18c7\u18c8\u0003\u050d\u0284\u0000\u18c8"+ - "\u18c9\u0005\"\u0000\u0000\u18c9\u050c\u0001\u0000\u0000\u0000\u18ca\u18d0"+ - "\u0005\"\u0000\u0000\u18cb\u18cc\u0005\"\u0000\u0000\u18cc\u18cf\u0005"+ - "\"\u0000\u0000\u18cd\u18cf\b#\u0000\u0000\u18ce\u18cb\u0001\u0000\u0000"+ - "\u0000\u18ce\u18cd\u0001\u0000\u0000\u0000\u18cf\u18d2\u0001\u0000\u0000"+ - "\u0000\u18d0\u18ce\u0001\u0000\u0000\u0000\u18d0\u18d1\u0001\u0000\u0000"+ - "\u0000\u18d1\u050e\u0001\u0000\u0000\u0000\u18d2\u18d0\u0001\u0000\u0000"+ - "\u0000\u18d3\u18d4\u0003\u0511\u0286\u0000\u18d4\u18d5\u0005\"\u0000\u0000"+ - "\u18d5\u0510\u0001\u0000\u0000\u0000\u18d6\u18dc\u0005\"\u0000\u0000\u18d7"+ - "\u18d8\u0005\"\u0000\u0000\u18d8\u18db\u0005\"\u0000\u0000\u18d9\u18db"+ - "\b$\u0000\u0000\u18da\u18d7\u0001\u0000\u0000\u0000\u18da\u18d9\u0001"+ - "\u0000\u0000\u0000\u18db\u18de\u0001\u0000\u0000\u0000\u18dc\u18da\u0001"+ - "\u0000\u0000\u0000\u18dc\u18dd\u0001\u0000\u0000\u0000\u18dd\u0512\u0001"+ - "\u0000\u0000\u0000\u18de\u18dc\u0001\u0000\u0000\u0000\u18df\u18e0\u0007"+ - "\u0016\u0000\u0000\u18e0\u18e1\u0005&\u0000\u0000\u18e1\u18e2\u0003\u050b"+ - "\u0283\u0000\u18e2\u0514\u0001\u0000\u0000\u0000\u18e3\u18e4\u0007\u0016"+ - "\u0000\u0000\u18e4\u18e5\u0005&\u0000\u0000\u18e5\u18e6\u0003\u050d\u0284"+ - "\u0000\u18e6\u0516\u0001\u0000\u0000\u0000\u18e7\u18e8\u0007\u0016\u0000"+ - "\u0000\u18e8\u18e9\u0005&\u0000\u0000\u18e9\u18ea\u0003\u050f\u0285\u0000"+ - "\u18ea\u0518\u0001\u0000\u0000\u0000\u18eb\u18ec\u0007\u0016\u0000\u0000"+ - "\u18ec\u18ed\u0005&\u0000\u0000\u18ed\u18ee\u0003\u0511\u0286\u0000\u18ee"+ - "\u051a\u0001\u0000\u0000\u0000\u18ef\u18f0\u0003\u051d\u028c\u0000\u18f0"+ - "\u18f1\u0005\'\u0000\u0000\u18f1\u051c\u0001\u0000\u0000\u0000\u18f2\u18f8"+ - "\u0005\'\u0000\u0000\u18f3\u18f4\u0005\'\u0000\u0000\u18f4\u18f7\u0005"+ - "\'\u0000\u0000\u18f5\u18f7\b%\u0000\u0000\u18f6\u18f3\u0001\u0000\u0000"+ - "\u0000\u18f6\u18f5\u0001\u0000\u0000\u0000\u18f7\u18fa\u0001\u0000\u0000"+ - "\u0000\u18f8\u18f6\u0001\u0000\u0000\u0000\u18f8\u18f9\u0001\u0000\u0000"+ - "\u0000\u18f9\u051e\u0001\u0000\u0000\u0000\u18fa\u18f8\u0001\u0000\u0000"+ - "\u0000\u18fb\u18fc\u0007\n\u0000\u0000\u18fc\u18fd\u0005\'\u0000\u0000"+ - "\u18fd\u18fe\u0001\u0000\u0000\u0000\u18fe\u18ff\u0006\u028d\u0002\u0000"+ - "\u18ff\u1900\u0006\u028d\u0003\u0000\u1900\u0520\u0001\u0000\u0000\u0000"+ - "\u1901\u1902\u0003\u0523\u028f\u0000\u1902\u1903\u0005\'\u0000\u0000\u1903"+ - "\u0522\u0001\u0000\u0000\u0000\u1904\u1905\u0007\u0016\u0000\u0000\u1905"+ - "\u1906\u0005&\u0000\u0000\u1906\u1907\u0003\u051d\u028c\u0000\u1907\u0524"+ - "\u0001\u0000\u0000\u0000\u1908\u190a\u0005$\u0000\u0000\u1909\u190b\u0003"+ - "\u0527\u0291\u0000\u190a\u1909\u0001\u0000\u0000\u0000\u190a\u190b\u0001"+ - "\u0000\u0000\u0000\u190b\u190c\u0001\u0000\u0000\u0000\u190c\u190d\u0005"+ - "$\u0000\u0000\u190d\u190e\u0006\u0290\u0004\u0000\u190e\u190f\u0001\u0000"+ - "\u0000\u0000\u190f\u1910\u0006\u0290\u0005\u0000\u1910\u0526\u0001\u0000"+ - "\u0000\u0000\u1911\u1915\u0003\u0505\u0280\u0000\u1912\u1914\u0003\u0509"+ - "\u0282\u0000\u1913\u1912\u0001\u0000\u0000\u0000\u1914\u1917\u0001\u0000"+ - "\u0000\u0000\u1915\u1913\u0001\u0000\u0000\u0000\u1915\u1916\u0001\u0000"+ - "\u0000\u0000\u1916\u0528\u0001\u0000\u0000\u0000\u1917\u1915\u0001\u0000"+ - "\u0000\u0000\u1918\u1919\u0003\u052b\u0293\u0000\u1919\u191a\u0005\'\u0000"+ - "\u0000\u191a\u052a\u0001\u0000\u0000\u0000\u191b\u191c\u0007\u0012\u0000"+ - "\u0000\u191c\u1920\u0005\'\u0000\u0000\u191d\u191f\u0007&\u0000\u0000"+ - "\u191e\u191d\u0001\u0000\u0000\u0000\u191f\u1922\u0001\u0000\u0000\u0000"+ - "\u1920\u191e\u0001\u0000\u0000\u0000\u1920\u1921\u0001\u0000\u0000\u0000"+ - "\u1921\u052c\u0001\u0000\u0000\u0000\u1922\u1920\u0001\u0000\u0000\u0000"+ - "\u1923\u1924\u0003\u052f\u0295\u0000\u1924\u1925\u0005\'\u0000\u0000\u1925"+ - "\u052e\u0001\u0000\u0000\u0000\u1926\u1927\u0007\u0012\u0000\u0000\u1927"+ - "\u1928\u0003\u051d\u028c\u0000\u1928\u0530\u0001\u0000\u0000\u0000\u1929"+ - "\u192a\u0003\u0533\u0297\u0000\u192a\u192b\u0005\'\u0000\u0000\u192b\u0532"+ - "\u0001\u0000\u0000\u0000\u192c\u192d\u0007\u001a\u0000\u0000\u192d\u1931"+ - "\u0005\'\u0000\u0000\u192e\u1930\u0007\'\u0000\u0000\u192f\u192e\u0001"+ - "\u0000\u0000\u0000\u1930\u1933\u0001\u0000\u0000\u0000\u1931\u192f\u0001"+ - "\u0000\u0000\u0000\u1931\u1932\u0001\u0000\u0000\u0000\u1932\u0534\u0001"+ - "\u0000\u0000\u0000\u1933\u1931\u0001\u0000\u0000\u0000\u1934\u1935\u0003"+ - "\u0537\u0299\u0000\u1935\u1936\u0005\'\u0000\u0000\u1936\u0536\u0001\u0000"+ - "\u0000\u0000\u1937\u1938\u0007\u001a\u0000\u0000\u1938\u1939\u0003\u051d"+ - "\u028c\u0000\u1939\u0538\u0001\u0000\u0000\u0000\u193a\u193b\u0003\u053f"+ - "\u029d\u0000\u193b\u053a\u0001\u0000\u0000\u0000\u193c\u193d\u0003\u053f"+ - "\u029d\u0000\u193d\u193e\u0005.\u0000\u0000\u193e\u193f\u0005.\u0000\u0000"+ - "\u193f\u1940\u0001\u0000\u0000\u0000\u1940\u1941\u0006\u029b\u0006\u0000"+ - "\u1941\u053c\u0001\u0000\u0000\u0000\u1942\u1943\u0003\u053f\u029d\u0000"+ - "\u1943\u1945\u0005.\u0000\u0000\u1944\u1946\u0003\u053f\u029d\u0000\u1945"+ - "\u1944\u0001\u0000\u0000\u0000\u1945\u1946\u0001\u0000\u0000\u0000\u1946"+ - "\u194c\u0001\u0000\u0000\u0000\u1947\u1949\u0007\n\u0000\u0000\u1948\u194a"+ - "\u0007\u0001\u0000\u0000\u1949\u1948\u0001\u0000\u0000\u0000\u1949\u194a"+ - "\u0001\u0000\u0000\u0000\u194a\u194b\u0001\u0000\u0000\u0000\u194b\u194d"+ - "\u0003\u053f\u029d\u0000\u194c\u1947\u0001\u0000\u0000\u0000\u194c\u194d"+ - "\u0001\u0000\u0000\u0000\u194d\u195f\u0001\u0000\u0000\u0000\u194e\u194f"+ - "\u0005.\u0000\u0000\u194f\u1955\u0003\u053f\u029d\u0000\u1950\u1952\u0007"+ - "\n\u0000\u0000\u1951\u1953\u0007\u0001\u0000\u0000\u1952\u1951\u0001\u0000"+ - "\u0000\u0000\u1952\u1953\u0001\u0000\u0000\u0000\u1953\u1954\u0001\u0000"+ - "\u0000\u0000\u1954\u1956\u0003\u053f\u029d\u0000\u1955\u1950\u0001\u0000"+ - "\u0000\u0000\u1955\u1956\u0001\u0000\u0000\u0000\u1956\u195f\u0001\u0000"+ - "\u0000\u0000\u1957\u1958\u0003\u053f\u029d\u0000\u1958\u195a\u0007\n\u0000"+ - "\u0000\u1959\u195b\u0007\u0001\u0000\u0000\u195a\u1959\u0001\u0000\u0000"+ - "\u0000\u195a\u195b\u0001\u0000\u0000\u0000\u195b\u195c\u0001\u0000\u0000"+ - "\u0000\u195c\u195d\u0003\u053f\u029d\u0000\u195d\u195f\u0001\u0000\u0000"+ - "\u0000\u195e\u1942\u0001\u0000\u0000\u0000\u195e\u194e\u0001\u0000\u0000"+ - "\u0000\u195e\u1957\u0001\u0000\u0000\u0000\u195f\u053e\u0001\u0000\u0000"+ - "\u0000\u1960\u1962\u0007\u0000\u0000\u0000\u1961\u1960\u0001\u0000\u0000"+ - "\u0000\u1962\u1963\u0001\u0000\u0000\u0000\u1963\u1961\u0001\u0000\u0000"+ - "\u0000\u1963\u1964\u0001\u0000\u0000\u0000\u1964\u0540\u0001\u0000\u0000"+ - "\u0000\u1965\u1966\u0005:\u0000\u0000\u1966\u196a\u0007(\u0000\u0000\u1967"+ - "\u1969\u0007)\u0000\u0000\u1968\u1967\u0001\u0000\u0000\u0000\u1969\u196c"+ - "\u0001\u0000\u0000\u0000\u196a\u1968\u0001\u0000\u0000\u0000\u196a\u196b"+ - "\u0001\u0000\u0000\u0000\u196b\u0542\u0001\u0000\u0000\u0000\u196c\u196a"+ - "\u0001\u0000\u0000\u0000\u196d\u196e\u0005:\u0000\u0000\u196e\u196f\u0005"+ - "\"\u0000\u0000\u196f\u1977\u0001\u0000\u0000\u0000\u1970\u1971\u0005\\"+ - "\u0000\u0000\u1971\u1976\t\u0000\u0000\u0000\u1972\u1973\u0005\"\u0000"+ - "\u0000\u1973\u1976\u0005\"\u0000\u0000\u1974\u1976\b*\u0000\u0000\u1975"+ - "\u1970\u0001\u0000\u0000\u0000\u1975\u1972\u0001\u0000\u0000\u0000\u1975"+ - "\u1974\u0001\u0000\u0000\u0000\u1976\u1979\u0001\u0000\u0000\u0000\u1977"+ - "\u1975\u0001\u0000\u0000\u0000\u1977\u1978\u0001\u0000\u0000\u0000\u1978"+ - "\u197a\u0001\u0000\u0000\u0000\u1979\u1977\u0001\u0000\u0000\u0000\u197a"+ - "\u197b\u0005\"\u0000\u0000\u197b\u0544\u0001\u0000\u0000\u0000\u197c\u197e"+ - "\u0007+\u0000\u0000\u197d\u197c\u0001\u0000\u0000\u0000\u197e\u197f\u0001"+ - "\u0000\u0000\u0000\u197f\u197d\u0001\u0000\u0000\u0000\u197f\u1980\u0001"+ - "\u0000\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u1982\u0006"+ - "\u02a0\u0007\u0000\u1982\u0546\u0001\u0000\u0000\u0000\u1983\u1985\u0005"+ - "\r\u0000\u0000\u1984\u1986\u0005\n\u0000\u0000\u1985\u1984\u0001\u0000"+ - "\u0000\u0000\u1985\u1986\u0001\u0000\u0000\u0000\u1986\u1989\u0001\u0000"+ - "\u0000\u0000\u1987\u1989\u0005\n\u0000\u0000\u1988\u1983\u0001\u0000\u0000"+ - "\u0000\u1988\u1987\u0001\u0000\u0000\u0000\u1989\u198a\u0001\u0000\u0000"+ - "\u0000\u198a\u198b\u0006\u02a1\u0007\u0000\u198b\u0548\u0001\u0000\u0000"+ - "\u0000\u198c\u198d\u0005-\u0000\u0000\u198d\u198e\u0005-\u0000\u0000\u198e"+ - "\u1992\u0001\u0000\u0000\u0000\u198f\u1991\b,\u0000\u0000\u1990\u198f"+ - "\u0001\u0000\u0000\u0000\u1991\u1994\u0001\u0000\u0000\u0000\u1992\u1990"+ - "\u0001\u0000\u0000\u0000\u1992\u1993\u0001\u0000\u0000\u0000\u1993\u1995"+ - "\u0001\u0000\u0000\u0000\u1994\u1992\u0001\u0000\u0000\u0000\u1995\u1996"+ - "\u0006\u02a2\u0007\u0000\u1996\u054a\u0001\u0000\u0000\u0000\u1997\u1998"+ - "\u0005/\u0000\u0000\u1998\u1999\u0005*\u0000\u0000\u1999\u19b0\u0001\u0000"+ - "\u0000\u0000\u199a\u199c\u0005/\u0000\u0000\u199b\u199a\u0001\u0000\u0000"+ - "\u0000\u199c\u199f\u0001\u0000\u0000\u0000\u199d\u199b\u0001\u0000\u0000"+ - "\u0000\u199d\u199e\u0001\u0000\u0000\u0000\u199e\u19a0\u0001\u0000\u0000"+ - "\u0000\u199f\u199d\u0001\u0000\u0000\u0000\u19a0\u19af\u0003\u054b\u02a3"+ - "\u0000\u19a1\u19af\b-\u0000\u0000\u19a2\u19a4\u0005/\u0000\u0000\u19a3"+ - "\u19a2\u0001\u0000\u0000\u0000\u19a4\u19a5\u0001\u0000\u0000\u0000\u19a5"+ - "\u19a3\u0001\u0000\u0000\u0000\u19a5\u19a6\u0001\u0000\u0000\u0000\u19a6"+ - "\u19a7\u0001\u0000\u0000\u0000\u19a7\u19af\b-\u0000\u0000\u19a8\u19aa"+ - "\u0005*\u0000\u0000\u19a9\u19a8\u0001\u0000\u0000\u0000\u19aa\u19ab\u0001"+ - "\u0000\u0000\u0000\u19ab\u19a9\u0001\u0000\u0000\u0000\u19ab\u19ac\u0001"+ - "\u0000\u0000\u0000\u19ac\u19ad\u0001\u0000\u0000\u0000\u19ad\u19af\b-"+ - "\u0000\u0000\u19ae\u199d\u0001\u0000\u0000\u0000\u19ae\u19a1\u0001\u0000"+ - "\u0000\u0000\u19ae\u19a3\u0001\u0000\u0000\u0000\u19ae\u19a9\u0001\u0000"+ - "\u0000\u0000\u19af\u19b2\u0001\u0000\u0000\u0000\u19b0\u19ae\u0001\u0000"+ - "\u0000\u0000\u19b0\u19b1\u0001\u0000\u0000\u0000\u19b1\u19b6\u0001\u0000"+ - "\u0000\u0000\u19b2\u19b0\u0001\u0000\u0000\u0000\u19b3\u19b5\u0005*\u0000"+ - "\u0000\u19b4\u19b3\u0001\u0000\u0000\u0000\u19b5\u19b8\u0001\u0000\u0000"+ - "\u0000\u19b6\u19b4\u0001\u0000\u0000\u0000\u19b6\u19b7\u0001\u0000\u0000"+ - "\u0000\u19b7\u19b9\u0001\u0000\u0000\u0000\u19b8\u19b6\u0001\u0000\u0000"+ - "\u0000\u19b9\u19ba\u0005*\u0000\u0000\u19ba\u19bb\u0005/\u0000\u0000\u19bb"+ - "\u19bc\u0001\u0000\u0000\u0000\u19bc\u19bd\u0006\u02a3\u0007\u0000\u19bd"+ - "\u054c\u0001\u0000\u0000\u0000\u19be\u19bf\u0005/\u0000\u0000\u19bf\u19c0"+ - "\u0005*\u0000\u0000\u19c0\u19d9\u0001\u0000\u0000\u0000\u19c1\u19c3\u0005"+ - "/\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000\u0000\u19c3\u19c6\u0001\u0000"+ - "\u0000\u0000\u19c4\u19c2\u0001\u0000\u0000\u0000\u19c4\u19c5\u0001\u0000"+ - "\u0000\u0000\u19c5\u19c7\u0001\u0000\u0000\u0000\u19c6\u19c4\u0001\u0000"+ - "\u0000\u0000\u19c7\u19d8\u0003\u054b\u02a3\u0000\u19c8\u19d8\b-\u0000"+ - "\u0000\u19c9\u19cb\u0005/\u0000\u0000\u19ca\u19c9\u0001\u0000\u0000\u0000"+ - "\u19cb\u19cc\u0001\u0000\u0000\u0000\u19cc\u19ca\u0001\u0000\u0000\u0000"+ - "\u19cc\u19cd\u0001\u0000\u0000\u0000\u19cd\u19ce\u0001\u0000\u0000\u0000"+ - "\u19ce\u19d6\b-\u0000\u0000\u19cf\u19d1\u0005*\u0000\u0000\u19d0\u19cf"+ - "\u0001\u0000\u0000\u0000\u19d1\u19d2\u0001\u0000\u0000\u0000\u19d2\u19d0"+ - "\u0001\u0000\u0000\u0000\u19d2\u19d3\u0001\u0000\u0000\u0000\u19d3\u19d4"+ - "\u0001\u0000\u0000\u0000\u19d4\u19d6\b-\u0000\u0000\u19d5\u19ca\u0001"+ - "\u0000\u0000\u0000\u19d5\u19d0\u0001\u0000\u0000\u0000\u19d6\u19d8\u0001"+ - "\u0000\u0000\u0000\u19d7\u19c4\u0001\u0000\u0000\u0000\u19d7\u19c8\u0001"+ - "\u0000\u0000\u0000\u19d7\u19d5\u0001\u0000\u0000\u0000\u19d8\u19db\u0001"+ - "\u0000\u0000\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19d9\u19da\u0001"+ - "\u0000\u0000\u0000\u19da\u19ed\u0001\u0000\u0000\u0000\u19db\u19d9\u0001"+ - "\u0000\u0000\u0000\u19dc\u19de\u0005/\u0000\u0000\u19dd\u19dc\u0001\u0000"+ - "\u0000\u0000\u19de\u19df\u0001\u0000\u0000\u0000\u19df\u19dd\u0001\u0000"+ - "\u0000\u0000\u19df\u19e0\u0001\u0000\u0000\u0000\u19e0\u19ee\u0001\u0000"+ - "\u0000\u0000\u19e1\u19e3\u0005*\u0000\u0000\u19e2\u19e1\u0001\u0000\u0000"+ - "\u0000\u19e3\u19e4\u0001\u0000\u0000\u0000\u19e4\u19e2\u0001\u0000\u0000"+ - "\u0000\u19e4\u19e5\u0001\u0000\u0000\u0000\u19e5\u19ee\u0001\u0000\u0000"+ - "\u0000\u19e6\u19e8\u0005/\u0000\u0000\u19e7\u19e6\u0001\u0000\u0000\u0000"+ - "\u19e8\u19eb\u0001\u0000\u0000\u0000\u19e9\u19e7\u0001\u0000\u0000\u0000"+ - "\u19e9\u19ea\u0001\u0000\u0000\u0000\u19ea\u19ec\u0001\u0000\u0000\u0000"+ - "\u19eb\u19e9\u0001\u0000\u0000\u0000\u19ec\u19ee\u0003\u054d\u02a4\u0000"+ - "\u19ed\u19dd\u0001\u0000\u0000\u0000\u19ed\u19e2\u0001\u0000\u0000\u0000"+ - "\u19ed\u19e9\u0001\u0000\u0000\u0000\u19ed\u19ee\u0001\u0000\u0000\u0000"+ - "\u19ee\u19ef\u0001\u0000\u0000\u0000\u19ef\u19f0\u0006\u02a4\b\u0000\u19f0"+ - "\u054e\u0001\u0000\u0000\u0000\u19f1\u19fd\u0005\\\u0000\u0000\u19f2\u19fc"+ - "\b.\u0000\u0000\u19f3\u19f7\u0005\"\u0000\u0000\u19f4\u19f6\b/\u0000\u0000"+ - "\u19f5\u19f4\u0001\u0000\u0000\u0000\u19f6\u19f9\u0001\u0000\u0000\u0000"+ - "\u19f7\u19f5\u0001\u0000\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000\u0000"+ - "\u19f8\u19fa\u0001\u0000\u0000\u0000\u19f9\u19f7\u0001\u0000\u0000\u0000"+ - "\u19fa\u19fc\u0005\"\u0000\u0000\u19fb\u19f2\u0001\u0000\u0000\u0000\u19fb"+ - "\u19f3\u0001\u0000\u0000\u0000\u19fc\u19ff\u0001\u0000\u0000\u0000\u19fd"+ - "\u19fb\u0001\u0000\u0000\u0000\u19fd\u19fe\u0001\u0000\u0000\u0000\u19fe"+ - "\u1a07\u0001\u0000\u0000\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u1a00"+ - "\u1a04\u0005\"\u0000\u0000\u1a01\u1a03\b/\u0000\u0000\u1a02\u1a01\u0001"+ - "\u0000\u0000\u0000\u1a03\u1a06\u0001\u0000\u0000\u0000\u1a04\u1a02\u0001"+ - "\u0000\u0000\u0000\u1a04\u1a05\u0001\u0000\u0000\u0000\u1a05\u1a08\u0001"+ - "\u0000\u0000\u0000\u1a06\u1a04\u0001\u0000\u0000\u0000\u1a07\u1a00\u0001"+ - "\u0000\u0000\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08\u0550\u0001"+ - "\u0000\u0000\u0000\u1a09\u1a0a\u0005\\\u0000\u0000\u1a0a\u1a0b\u0005\\"+ - "\u0000\u0000\u1a0b\u0552\u0001\u0000\u0000\u0000\u1a0c\u1a0d\t\u0000\u0000"+ - "\u0000\u1a0d\u0554\u0001\u0000\u0000\u0000\u1a0e\u1a0f\u0003\u0559\u02aa"+ - "\u0000\u1a0f\u1a10\u0005\'\u0000\u0000\u1a10\u1a11\u0001\u0000\u0000\u0000"+ - "\u1a11\u1a12\u0006\u02a8\t\u0000\u1a12\u0556\u0001\u0000\u0000\u0000\u1a13"+ - "\u1a15\u0003\u0559\u02aa\u0000\u1a14\u1a16\u0005\\\u0000\u0000\u1a15\u1a14"+ - "\u0001\u0000\u0000\u0000\u1a15\u1a16\u0001\u0000\u0000\u0000\u1a16\u1a17"+ - "\u0001\u0000\u0000\u0000\u1a17\u1a18\u0005\u0000\u0000\u0001\u1a18\u0558"+ - "\u0001\u0000\u0000\u0000\u1a19\u1a1a\u0005\'\u0000\u0000\u1a1a\u1a31\u0005"+ - "\'\u0000\u0000\u1a1b\u1a2d\u0005\\\u0000\u0000\u1a1c\u1a1d\u0005x\u0000"+ - "\u0000\u1a1d\u1a2e\u0007\'\u0000\u0000\u1a1e\u1a1f\u0005u\u0000\u0000"+ - "\u1a1f\u1a20\u0007\'\u0000\u0000\u1a20\u1a21\u0007\'\u0000\u0000\u1a21"+ - "\u1a22\u0007\'\u0000\u0000\u1a22\u1a2e\u0007\'\u0000\u0000\u1a23\u1a24"+ - "\u0005U\u0000\u0000\u1a24\u1a25\u0007\'\u0000\u0000\u1a25\u1a26\u0007"+ - "\'\u0000\u0000\u1a26\u1a27\u0007\'\u0000\u0000\u1a27\u1a28\u0007\'\u0000"+ - "\u0000\u1a28\u1a29\u0007\'\u0000\u0000\u1a29\u1a2a\u0007\'\u0000\u0000"+ - "\u1a2a\u1a2b\u0007\'\u0000\u0000\u1a2b\u1a2e\u0007\'\u0000\u0000\u1a2c"+ - "\u1a2e\b0\u0000\u0000\u1a2d\u1a1c\u0001\u0000\u0000\u0000\u1a2d\u1a1e"+ - "\u0001\u0000\u0000\u0000\u1a2d\u1a23\u0001\u0000\u0000\u0000\u1a2d\u1a2c"+ - "\u0001\u0000\u0000\u0000\u1a2e\u1a31\u0001\u0000\u0000\u0000\u1a2f\u1a31"+ - "\b1\u0000\u0000\u1a30\u1a19\u0001\u0000\u0000\u0000\u1a30\u1a1b\u0001"+ - "\u0000\u0000\u0000\u1a30\u1a2f\u0001\u0000\u0000\u0000\u1a31\u1a34\u0001"+ - "\u0000\u0000\u0000\u1a32\u1a30\u0001\u0000\u0000\u0000\u1a32\u1a33\u0001"+ - "\u0000\u0000\u0000\u1a33\u055a\u0001\u0000\u0000\u0000\u1a34\u1a32\u0001"+ - "\u0000\u0000\u0000\u1a35\u1a36\u0003\u055f\u02ad\u0000\u1a36\u1a37\u0005"+ - "\'\u0000\u0000\u1a37\u1a38\u0001\u0000\u0000\u0000\u1a38\u1a39\u0006\u02ab"+ - "\t\u0000\u1a39\u055c\u0001\u0000\u0000\u0000\u1a3a\u1a3c\u0003\u055f\u02ad"+ - "\u0000\u1a3b\u1a3d\u0005\\\u0000\u0000\u1a3c\u1a3b\u0001\u0000\u0000\u0000"+ - "\u1a3c\u1a3d\u0001\u0000\u0000\u0000\u1a3d\u1a3e\u0001\u0000\u0000\u0000"+ - "\u1a3e\u1a3f\u0005\u0000\u0000\u0001\u1a3f\u055e\u0001\u0000\u0000\u0000"+ - "\u1a40\u1a41\u0005\'\u0000\u0000\u1a41\u1a46\u0005\'\u0000\u0000\u1a42"+ - "\u1a43\u0005\\\u0000\u0000\u1a43\u1a46\t\u0000\u0000\u0000\u1a44\u1a46"+ - "\b1\u0000\u0000\u1a45\u1a40\u0001\u0000\u0000\u0000\u1a45\u1a42\u0001"+ - "\u0000\u0000\u0000\u1a45\u1a44\u0001\u0000\u0000\u0000\u1a46\u1a49\u0001"+ - "\u0000\u0000\u0000\u1a47\u1a45\u0001\u0000\u0000\u0000\u1a47\u1a48\u0001"+ - "\u0000\u0000\u0000\u1a48\u0560\u0001\u0000\u0000\u0000\u1a49\u1a47\u0001"+ - "\u0000\u0000\u0000\u1a4a\u1a4b\u0003\u0545\u02a0\u0000\u1a4b\u1a4c\u0001"+ - "\u0000\u0000\u0000\u1a4c\u1a4d\u0006\u02ae\n\u0000\u1a4d\u1a4e\u0006\u02ae"+ - "\u0007\u0000\u1a4e\u0562\u0001\u0000\u0000\u0000\u1a4f\u1a50\u0003\u0547"+ - "\u02a1\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51\u1a52\u0006\u02af"+ - "\u000b\u0000\u1a52\u1a53\u0006\u02af\u0007\u0000\u1a53\u1a54\u0006\u02af"+ - "\f\u0000\u1a54\u0564\u0001\u0000\u0000\u0000\u1a55\u1a56\u0006\u02b0\r"+ - "\u0000\u1a56\u1a57\u0001\u0000\u0000\u0000\u1a57\u1a58\u0006\u02b0\u000e"+ - "\u0000\u1a58\u1a59\u0006\u02b0\u000f\u0000\u1a59\u0566\u0001\u0000\u0000"+ - "\u0000\u1a5a\u1a5b\u0003\u0545\u02a0\u0000\u1a5b\u1a5c\u0001\u0000\u0000"+ - "\u0000\u1a5c\u1a5d\u0006\u02b1\n\u0000\u1a5d\u1a5e\u0006\u02b1\u0007\u0000"+ - "\u1a5e\u0568\u0001\u0000\u0000\u0000\u1a5f\u1a60\u0003\u0547\u02a1\u0000"+ - "\u1a60\u1a61\u0001\u0000\u0000\u0000\u1a61\u1a62\u0006\u02b2\u000b\u0000"+ - "\u1a62\u1a63\u0006\u02b2\u0007\u0000\u1a63\u056a\u0001\u0000\u0000\u0000"+ - "\u1a64\u1a65\u0005\'\u0000\u0000\u1a65\u1a66\u0001\u0000\u0000\u0000\u1a66"+ - "\u1a67\u0006\u02b3\u0002\u0000\u1a67\u1a68\u0006\u02b3\u0010\u0000\u1a68"+ - "\u056c\u0001\u0000\u0000\u0000\u1a69\u1a6a\u0006\u02b4\u0011\u0000\u1a6a"+ - "\u1a6b\u0001\u0000\u0000\u0000\u1a6b\u1a6c\u0006\u02b4\u000e\u0000\u1a6c"+ - "\u1a6d\u0006\u02b4\u000f\u0000\u1a6d\u056e\u0001\u0000\u0000\u0000\u1a6e"+ - "\u1a70\b2\u0000\u0000\u1a6f\u1a6e\u0001\u0000\u0000\u0000\u1a70\u1a71"+ - "\u0001\u0000\u0000\u0000\u1a71\u1a6f\u0001\u0000\u0000\u0000\u1a71\u1a72"+ - "\u0001\u0000\u0000\u0000\u1a72\u1a7b\u0001\u0000\u0000\u0000\u1a73\u1a77"+ - "\u0005$\u0000\u0000\u1a74\u1a76\b2\u0000\u0000\u1a75\u1a74\u0001\u0000"+ - "\u0000\u0000\u1a76\u1a79\u0001\u0000\u0000\u0000\u1a77\u1a75\u0001\u0000"+ - "\u0000\u0000\u1a77\u1a78\u0001\u0000\u0000\u0000\u1a78\u1a7b\u0001\u0000"+ - "\u0000\u0000\u1a79\u1a77\u0001\u0000\u0000\u0000\u1a7a\u1a6f\u0001\u0000"+ - "\u0000\u0000\u1a7a\u1a73\u0001\u0000\u0000\u0000\u1a7b\u0570\u0001\u0000"+ - "\u0000\u0000\u1a7c\u1a7e\u0005$\u0000\u0000\u1a7d\u1a7f\u0003\u0527\u0291"+ - "\u0000\u1a7e\u1a7d\u0001\u0000\u0000\u0000\u1a7e\u1a7f\u0001\u0000\u0000"+ - "\u0000\u1a7f\u1a80\u0001\u0000\u0000\u0000\u1a80\u1a81\u0005$\u0000\u0000"+ - "\u1a81\u1a82\u0001\u0000\u0000\u0000\u1a82\u1a83\u0004\u02b6\b\u0000\u1a83"+ - "\u1a84\u0006\u02b6\u0012\u0000\u1a84\u1a85\u0001\u0000\u0000\u0000\u1a85"+ - "\u1a86\u0006\u02b6\u000f\u0000\u1a86\u0572\u0001\u0000\u0000\u0000N\u0000"+ - "\u0001\u0002\u0003\u0004\u05b6\u05bc\u05be\u05c3\u05c7\u05c9\u05cc\u05d5"+ - "\u05d7\u05dc\u05e1\u05e3\u18b4\u18bd\u18c1\u18c5\u18ce\u18d0\u18da\u18dc"+ - "\u18f6\u18f8\u190a\u1915\u1920\u1931\u1945\u1949\u194c\u1952\u1955\u195a"+ - "\u195e\u1963\u196a\u1975\u1977\u197f\u1985\u1988\u1992\u199d\u19a5\u19ab"+ - "\u19ae\u19b0\u19b6\u19c4\u19cc\u19d2\u19d5\u19d7\u19d9\u19df\u19e4\u19e9"+ - "\u19ed\u19f7\u19fb\u19fd\u1a04\u1a07\u1a15\u1a2d\u1a30\u1a32\u1a3c\u1a45"+ - "\u1a47\u1a71\u1a77\u1a7a\u1a7e\u0013\u0001\u001c\u0000\u0007\u001d\u0000"+ - "\u0003\u0000\u0000\u0005\u0001\u0000\u0001\u0290\u0001\u0005\u0004\u0000"+ - "\u0001\u029b\u0002\u0000\u0001\u0000\u0001\u02a4\u0003\u0002\u0002\u0000"+ - "\u0007\u0297\u0000\u0007\u0298\u0000\u0002\u0003\u0000\u0001\u02b0\u0004"+ - "\u0006\u0000\u0000\u0004\u0000\u0000\u0002\u0001\u0000\u0001\u02b4\u0005"+ - "\u0001\u02b6\u0006"; - public static final String _serializedATN = Utils.join( - new String[] { - _serializedATNSegment0, - _serializedATNSegment1, - _serializedATNSegment2 - }, - "" - ); - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/antlr4_postgresql/.antlr/PostgreSQLLexer.tokens b/antlr4_postgresql/.antlr/PostgreSQLLexer.tokens deleted file mode 100644 index 03ca671..0000000 --- a/antlr4_postgresql/.antlr/PostgreSQLLexer.tokens +++ /dev/null @@ -1,1314 +0,0 @@ -Dollar=1 -OPEN_PAREN=2 -CLOSE_PAREN=3 -OPEN_BRACKET=4 -CLOSE_BRACKET=5 -COMMA=6 -SEMI=7 -COLON=8 -STAR=9 -EQUAL=10 -DOT=11 -PLUS=12 -MINUS=13 -SLASH=14 -CARET=15 -LT=16 -GT=17 -LESS_LESS=18 -GREATER_GREATER=19 -COLON_EQUALS=20 -LESS_EQUALS=21 -EQUALS_GREATER=22 -GREATER_EQUALS=23 -DOT_DOT=24 -NOT_EQUALS=25 -TYPECAST=26 -PERCENT=27 -PARAM=28 -Operator=29 -ALL=30 -ANALYSE=31 -ANALYZE=32 -AND=33 -ANY=34 -ARRAY=35 -AS=36 -ASC=37 -ASYMMETRIC=38 -BOTH=39 -CASE=40 -CAST=41 -CHECK=42 -COLLATE=43 -COLUMN=44 -CONSTRAINT=45 -CREATE=46 -CURRENT_CATALOG=47 -CURRENT_DATE=48 -CURRENT_ROLE=49 -CURRENT_TIME=50 -CURRENT_TIMESTAMP=51 -CURRENT_USER=52 -DEFAULT=53 -DEFERRABLE=54 -DESC=55 -DISTINCT=56 -DO=57 -ELSE=58 -EXCEPT=59 -FALSE_P=60 -FETCH=61 -FOR=62 -FOREIGN=63 -FROM=64 -GRANT=65 -GROUP_P=66 -HAVING=67 -IN_P=68 -INITIALLY=69 -INTERSECT=70 -INTO=71 -LATERAL_P=72 -LEADING=73 -LIMIT=74 -LOCALTIME=75 -LOCALTIMESTAMP=76 -NOT=77 -NULL_P=78 -OFFSET=79 -ON=80 -ONLY=81 -OR=82 -ORDER=83 -PLACING=84 -PRIMARY=85 -REFERENCES=86 -RETURNING=87 -SELECT=88 -SESSION_USER=89 -SOME=90 -SYMMETRIC=91 -TABLE=92 -THEN=93 -TO=94 -TRAILING=95 -TRUE_P=96 -UNION=97 -UNIQUE=98 -USER=99 -USING=100 -VARIADIC=101 -WHEN=102 -WHERE=103 -WINDOW=104 -WITH=105 -AUTHORIZATION=106 -BINARY=107 -COLLATION=108 -CONCURRENTLY=109 -CROSS=110 -CURRENT_SCHEMA=111 -FREEZE=112 -FULL=113 -ILIKE=114 -INNER_P=115 -IS=116 -ISNULL=117 -JOIN=118 -LEFT=119 -LIKE=120 -NATURAL=121 -NOTNULL=122 -OUTER_P=123 -OVER=124 -OVERLAPS=125 -RIGHT=126 -SIMILAR=127 -VERBOSE=128 -ABORT_P=129 -ABSOLUTE_P=130 -ACCESS=131 -ACTION=132 -ADD_P=133 -ADMIN=134 -AFTER=135 -AGGREGATE=136 -ALSO=137 -ALTER=138 -ALWAYS=139 -ASSERTION=140 -ASSIGNMENT=141 -AT=142 -ATTRIBUTE=143 -BACKWARD=144 -BEFORE=145 -BEGIN_P=146 -BY=147 -CACHE=148 -CALLED=149 -CASCADE=150 -CASCADED=151 -CATALOG=152 -CHAIN=153 -CHARACTERISTICS=154 -CHECKPOINT=155 -CLASS=156 -CLOSE=157 -CLUSTER=158 -COMMENT=159 -COMMENTS=160 -COMMIT=161 -COMMITTED=162 -CONFIGURATION=163 -CONNECTION=164 -CONSTRAINTS=165 -CONTENT_P=166 -CONTINUE_P=167 -CONVERSION_P=168 -COPY=169 -COST=170 -CSV=171 -CURSOR=172 -CYCLE=173 -DATA_P=174 -DATABASE=175 -DAY_P=176 -DEALLOCATE=177 -DECLARE=178 -DEFAULTS=179 -DEFERRED=180 -DEFINER=181 -DELETE_P=182 -DELIMITER=183 -DELIMITERS=184 -DICTIONARY=185 -DISABLE_P=186 -DISCARD=187 -DOCUMENT_P=188 -DOMAIN_P=189 -DOUBLE_P=190 -DROP=191 -EACH=192 -ENABLE_P=193 -ENCODING=194 -ENCRYPTED=195 -ENUM_P=196 -ESCAPE=197 -EVENT=198 -EXCLUDE=199 -EXCLUDING=200 -EXCLUSIVE=201 -EXECUTE=202 -EXPLAIN=203 -EXTENSION=204 -EXTERNAL=205 -FAMILY=206 -FIRST_P=207 -FOLLOWING=208 -FORCE=209 -FORWARD=210 -FUNCTION=211 -FUNCTIONS=212 -GLOBAL=213 -GRANTED=214 -HANDLER=215 -HEADER_P=216 -HOLD=217 -HOUR_P=218 -IDENTITY_P=219 -IF_P=220 -IMMEDIATE=221 -IMMUTABLE=222 -IMPLICIT_P=223 -INCLUDING=224 -INCREMENT=225 -INDEX=226 -INDEXES=227 -INHERIT=228 -INHERITS=229 -INLINE_P=230 -INSENSITIVE=231 -INSERT=232 -INSTEAD=233 -INVOKER=234 -ISOLATION=235 -KEY=236 -LABEL=237 -LANGUAGE=238 -LARGE_P=239 -LAST_P=240 -LEAKPROOF=241 -LEVEL=242 -LISTEN=243 -LOAD=244 -LOCAL=245 -LOCATION=246 -LOCK_P=247 -MAPPING=248 -MATCH=249 -MATCHED=250 -MATERIALIZED=251 -MAXVALUE=252 -MERGE=253 -MINUTE_P=254 -MINVALUE=255 -MODE=256 -MONTH_P=257 -MOVE=258 -NAME_P=259 -NAMES=260 -NEXT=261 -NO=262 -NOTHING=263 -NOTIFY=264 -NOWAIT=265 -NULLS_P=266 -OBJECT_P=267 -OF=268 -OFF=269 -OIDS=270 -OPERATOR=271 -OPTION=272 -OPTIONS=273 -OWNED=274 -OWNER=275 -PARSER=276 -PARTIAL=277 -PARTITION=278 -PASSING=279 -PASSWORD=280 -PLANS=281 -PRECEDING=282 -PREPARE=283 -PREPARED=284 -PRESERVE=285 -PRIOR=286 -PRIVILEGES=287 -PROCEDURAL=288 -PROCEDURE=289 -PROGRAM=290 -QUOTE=291 -RANGE=292 -READ=293 -REASSIGN=294 -RECHECK=295 -RECURSIVE=296 -REF=297 -REFRESH=298 -REINDEX=299 -RELATIVE_P=300 -RELEASE=301 -RENAME=302 -REPEATABLE=303 -REPLACE=304 -REPLICA=305 -RESET=306 -RESTART=307 -RESTRICT=308 -RETURNS=309 -REVOKE=310 -ROLE=311 -ROLLBACK=312 -ROWS=313 -RULE=314 -SAVEPOINT=315 -SCHEMA=316 -SCROLL=317 -SEARCH=318 -SECOND_P=319 -SECURITY=320 -SEQUENCE=321 -SEQUENCES=322 -SERIALIZABLE=323 -SERVER=324 -SESSION=325 -SET=326 -SHARE=327 -SHOW=328 -SIMPLE=329 -SNAPSHOT=330 -STABLE=331 -STANDALONE_P=332 -START=333 -STATEMENT=334 -STATISTICS=335 -STDIN=336 -STDOUT=337 -STORAGE=338 -STRICT_P=339 -STRIP_P=340 -SYSID=341 -SYSTEM_P=342 -TABLES=343 -TABLESPACE=344 -TEMP=345 -TEMPLATE=346 -TEMPORARY=347 -TEXT_P=348 -TRANSACTION=349 -TRIGGER=350 -TRUNCATE=351 -TRUSTED=352 -TYPE_P=353 -TYPES_P=354 -UNBOUNDED=355 -UNCOMMITTED=356 -UNENCRYPTED=357 -UNKNOWN=358 -UNLISTEN=359 -UNLOGGED=360 -UNTIL=361 -UPDATE=362 -VACUUM=363 -VALID=364 -VALIDATE=365 -VALIDATOR=366 -VARYING=367 -VERSION_P=368 -VIEW=369 -VOLATILE=370 -WHITESPACE_P=371 -WITHOUT=372 -WORK=373 -WRAPPER=374 -WRITE=375 -XML_P=376 -YEAR_P=377 -YES_P=378 -ZONE=379 -BETWEEN=380 -BIGINT=381 -BIT=382 -BOOLEAN_P=383 -CHAR_P=384 -CHARACTER=385 -COALESCE=386 -DEC=387 -DECIMAL_P=388 -EXISTS=389 -EXTRACT=390 -FLOAT_P=391 -GREATEST=392 -INOUT=393 -INT_P=394 -INTEGER=395 -INTERVAL=396 -LEAST=397 -NATIONAL=398 -NCHAR=399 -NONE=400 -NULLIF=401 -NUMERIC=402 -OVERLAY=403 -POSITION=404 -PRECISION=405 -REAL=406 -ROW=407 -SETOF=408 -SMALLINT=409 -SUBSTRING=410 -TIME=411 -TIMESTAMP=412 -TREAT=413 -TRIM=414 -VALUES=415 -VARCHAR=416 -XMLATTRIBUTES=417 -XMLCOMMENT=418 -XMLAGG=419 -XML_IS_WELL_FORMED=420 -XML_IS_WELL_FORMED_DOCUMENT=421 -XML_IS_WELL_FORMED_CONTENT=422 -XPATH=423 -XPATH_EXISTS=424 -XMLCONCAT=425 -XMLELEMENT=426 -XMLEXISTS=427 -XMLFOREST=428 -XMLPARSE=429 -XMLPI=430 -XMLROOT=431 -XMLSERIALIZE=432 -CALL=433 -CURRENT_P=434 -ATTACH=435 -DETACH=436 -EXPRESSION=437 -GENERATED=438 -LOGGED=439 -STORED=440 -INCLUDE=441 -ROUTINE=442 -TRANSFORM=443 -IMPORT_P=444 -POLICY=445 -METHOD=446 -REFERENCING=447 -NEW=448 -OLD=449 -VALUE_P=450 -SUBSCRIPTION=451 -PUBLICATION=452 -OUT_P=453 -END_P=454 -ROUTINES=455 -SCHEMAS=456 -PROCEDURES=457 -INPUT_P=458 -SUPPORT=459 -PARALLEL=460 -SQL_P=461 -DEPENDS=462 -OVERRIDING=463 -CONFLICT=464 -SKIP_P=465 -LOCKED=466 -TIES=467 -ROLLUP=468 -CUBE=469 -GROUPING=470 -SETS=471 -TABLESAMPLE=472 -ORDINALITY=473 -XMLTABLE=474 -COLUMNS=475 -XMLNAMESPACES=476 -ROWTYPE=477 -NORMALIZED=478 -WITHIN=479 -FILTER=480 -GROUPS=481 -OTHERS=482 -NFC=483 -NFD=484 -NFKC=485 -NFKD=486 -UESCAPE=487 -VIEWS=488 -NORMALIZE=489 -DUMP=490 -PRINT_STRICT_PARAMS=491 -VARIABLE_CONFLICT=492 -ERROR=493 -USE_VARIABLE=494 -USE_COLUMN=495 -ALIAS=496 -CONSTANT=497 -PERFORM=498 -GET=499 -DIAGNOSTICS=500 -STACKED=501 -ELSIF=502 -WHILE=503 -REVERSE=504 -FOREACH=505 -SLICE=506 -EXIT=507 -RETURN=508 -QUERY=509 -RAISE=510 -SQLSTATE=511 -DEBUG=512 -LOG=513 -INFO=514 -NOTICE=515 -WARNING=516 -EXCEPTION=517 -ASSERT=518 -LOOP=519 -OPEN=520 -ABS=521 -CBRT=522 -CEIL=523 -CEILING=524 -DEGREES=525 -DIV=526 -EXP=527 -FACTORIAL=528 -FLOOR=529 -GCD=530 -LCM=531 -LN=532 -LOG10=533 -MIN_SCALE=534 -MOD=535 -PI=536 -POWER=537 -RADIANS=538 -ROUND=539 -SCALE=540 -SIGN=541 -SQRT=542 -TRIM_SCALE=543 -TRUNC=544 -WIDTH_BUCKET=545 -RANDOM=546 -SETSEED=547 -ACOS=548 -ACOSD=549 -ASIN=550 -ASIND=551 -ATAN=552 -ATAND=553 -ATAN2=554 -ATAN2D=555 -COS=556 -COSD=557 -COT=558 -COTD=559 -SIN=560 -SIND=561 -TAN=562 -TAND=563 -SINH=564 -COSH=565 -TANH=566 -ASINH=567 -ACOSH=568 -ATANH=569 -BIT_LENGTH=570 -CHAR_LENGTH=571 -CHARACTER_LENGTH=572 -LOWER=573 -OCTET_LENGTH=574 -UPPER=575 -ASCII=576 -BTRIM=577 -CHR=578 -CONCAT=579 -CONCAT_WS=580 -FORMAT=581 -INITCAP=582 -LENGTH=583 -LPAD=584 -LTRIM=585 -MD5=586 -PARSE_IDENT=587 -PG_CLIENT_ENCODING=588 -QUOTE_IDENT=589 -QUOTE_LITERAL=590 -QUOTE_NULLABLE=591 -REGEXP_COUNT=592 -REGEXP_INSTR=593 -REGEXP_LIKE=594 -REGEXP_MATCH=595 -REGEXP_MATCHES=596 -REGEXP_REPLACE=597 -REGEXP_SPLIT_TO_ARRAY=598 -REGEXP_SPLIT_TO_TABLE=599 -REGEXP_SUBSTR=600 -REPEAT=601 -RPAD=602 -RTRIM=603 -SPLIT_PART=604 -STARTS_WITH=605 -STRING_TO_ARRAY=606 -STRING_TO_TABLE=607 -STRPOS=608 -SUBSTR=609 -TO_ASCII=610 -TO_HEX=611 -TRANSLATE=612 -UNISTR=613 -AGE=614 -CLOCK_TIMESTAMP=615 -DATE_BIN=616 -DATE_PART=617 -DATE_TRUNC=618 -ISFINITE=619 -JUSTIFY_DAYS=620 -JUSTIFY_HOURS=621 -JUSTIFY_INTERVAL=622 -MAKE_DATE=623 -MAKE_INTERVAL=624 -MAKE_TIME=625 -MAKE_TIMESTAMP=626 -MAKE_TIMESTAMPTZ=627 -NOW=628 -STATEMENT_TIMESTAMP=629 -TIMEOFDAY=630 -TRANSACTION_TIMESTAMP=631 -TO_TIMESTAMP=632 -TO_CHAR=633 -TO_DATE=634 -TO_NUMBER=635 -Identifier=636 -QuotedIdentifier=637 -UnterminatedQuotedIdentifier=638 -InvalidQuotedIdentifier=639 -InvalidUnterminatedQuotedIdentifier=640 -UnicodeQuotedIdentifier=641 -UnterminatedUnicodeQuotedIdentifier=642 -InvalidUnicodeQuotedIdentifier=643 -InvalidUnterminatedUnicodeQuotedIdentifier=644 -StringConstant=645 -UnterminatedStringConstant=646 -UnicodeEscapeStringConstant=647 -UnterminatedUnicodeEscapeStringConstant=648 -BeginDollarStringConstant=649 -BinaryStringConstant=650 -UnterminatedBinaryStringConstant=651 -InvalidBinaryStringConstant=652 -InvalidUnterminatedBinaryStringConstant=653 -HexadecimalStringConstant=654 -UnterminatedHexadecimalStringConstant=655 -InvalidHexadecimalStringConstant=656 -InvalidUnterminatedHexadecimalStringConstant=657 -Integral=658 -NumericFail=659 -Numeric=660 -PLSQLVARIABLENAME=661 -PLSQLIDENTIFIER=662 -Whitespace=663 -Newline=664 -LineComment=665 -BlockComment=666 -UnterminatedBlockComment=667 -MetaCommand=668 -EndMetaCommand=669 -ErrorCharacter=670 -EscapeStringConstant=671 -UnterminatedEscapeStringConstant=672 -InvalidEscapeStringConstant=673 -InvalidUnterminatedEscapeStringConstant=674 -AfterEscapeStringConstantMode_NotContinued=675 -AfterEscapeStringConstantWithNewlineMode_NotContinued=676 -DollarText=677 -EndDollarStringConstant=678 -AfterEscapeStringConstantWithNewlineMode_Continued=679 -'$'=1 -'('=2 -')'=3 -'['=4 -']'=5 -','=6 -';'=7 -':'=8 -'*'=9 -'='=10 -'.'=11 -'+'=12 -'-'=13 -'/'=14 -'^'=15 -'<'=16 -'>'=17 -'<<'=18 -'>>'=19 -':='=20 -'<='=21 -'=>'=22 -'>='=23 -'..'=24 -'<>'=25 -'::'=26 -'%'=27 -'ALL'=30 -'ANALYSE'=31 -'ANALYZE'=32 -'AND'=33 -'ANY'=34 -'ARRAY'=35 -'AS'=36 -'ASC'=37 -'ASYMMETRIC'=38 -'BOTH'=39 -'CASE'=40 -'CAST'=41 -'CHECK'=42 -'COLLATE'=43 -'COLUMN'=44 -'CONSTRAINT'=45 -'CREATE'=46 -'CURRENT_CATALOG'=47 -'CURRENT_DATE'=48 -'CURRENT_ROLE'=49 -'CURRENT_TIME'=50 -'CURRENT_TIMESTAMP'=51 -'CURRENT_USER'=52 -'DEFAULT'=53 -'DEFERRABLE'=54 -'DESC'=55 -'DISTINCT'=56 -'DO'=57 -'ELSE'=58 -'EXCEPT'=59 -'FALSE'=60 -'FETCH'=61 -'FOR'=62 -'FOREIGN'=63 -'FROM'=64 -'GRANT'=65 -'GROUP'=66 -'HAVING'=67 -'IN'=68 -'INITIALLY'=69 -'INTERSECT'=70 -'INTO'=71 -'LATERAL'=72 -'LEADING'=73 -'LIMIT'=74 -'LOCALTIME'=75 -'LOCALTIMESTAMP'=76 -'NOT'=77 -'NULL'=78 -'OFFSET'=79 -'ON'=80 -'ONLY'=81 -'OR'=82 -'ORDER'=83 -'PLACING'=84 -'PRIMARY'=85 -'REFERENCES'=86 -'RETURNING'=87 -'SELECT'=88 -'SESSION_USER'=89 -'SOME'=90 -'SYMMETRIC'=91 -'TABLE'=92 -'THEN'=93 -'TO'=94 -'TRAILING'=95 -'TRUE'=96 -'UNION'=97 -'UNIQUE'=98 -'USER'=99 -'USING'=100 -'VARIADIC'=101 -'WHEN'=102 -'WHERE'=103 -'WINDOW'=104 -'WITH'=105 -'AUTHORIZATION'=106 -'BINARY'=107 -'COLLATION'=108 -'CONCURRENTLY'=109 -'CROSS'=110 -'CURRENT_SCHEMA'=111 -'FREEZE'=112 -'FULL'=113 -'ILIKE'=114 -'INNER'=115 -'IS'=116 -'ISNULL'=117 -'JOIN'=118 -'LEFT'=119 -'LIKE'=120 -'NATURAL'=121 -'NOTNULL'=122 -'OUTER'=123 -'OVER'=124 -'OVERLAPS'=125 -'RIGHT'=126 -'SIMILAR'=127 -'VERBOSE'=128 -'ABORT'=129 -'ABSOLUTE'=130 -'ACCESS'=131 -'ACTION'=132 -'ADD'=133 -'ADMIN'=134 -'AFTER'=135 -'AGGREGATE'=136 -'ALSO'=137 -'ALTER'=138 -'ALWAYS'=139 -'ASSERTION'=140 -'ASSIGNMENT'=141 -'AT'=142 -'ATTRIBUTE'=143 -'BACKWARD'=144 -'BEFORE'=145 -'BEGIN'=146 -'BY'=147 -'CACHE'=148 -'CALLED'=149 -'CASCADE'=150 -'CASCADED'=151 -'CATALOG'=152 -'CHAIN'=153 -'CHARACTERISTICS'=154 -'CHECKPOINT'=155 -'CLASS'=156 -'CLOSE'=157 -'CLUSTER'=158 -'COMMENT'=159 -'COMMENTS'=160 -'COMMIT'=161 -'COMMITTED'=162 -'CONFIGURATION'=163 -'CONNECTION'=164 -'CONSTRAINTS'=165 -'CONTENT'=166 -'CONTINUE'=167 -'CONVERSION'=168 -'COPY'=169 -'COST'=170 -'CSV'=171 -'CURSOR'=172 -'CYCLE'=173 -'DATA'=174 -'DATABASE'=175 -'DAY'=176 -'DEALLOCATE'=177 -'DECLARE'=178 -'DEFAULTS'=179 -'DEFERRED'=180 -'DEFINER'=181 -'DELETE'=182 -'DELIMITER'=183 -'DELIMITERS'=184 -'DICTIONARY'=185 -'DISABLE'=186 -'DISCARD'=187 -'DOCUMENT'=188 -'DOMAIN'=189 -'DOUBLE'=190 -'DROP'=191 -'EACH'=192 -'ENABLE'=193 -'ENCODING'=194 -'ENCRYPTED'=195 -'ENUM'=196 -'ESCAPE'=197 -'EVENT'=198 -'EXCLUDE'=199 -'EXCLUDING'=200 -'EXCLUSIVE'=201 -'EXECUTE'=202 -'EXPLAIN'=203 -'EXTENSION'=204 -'EXTERNAL'=205 -'FAMILY'=206 -'FIRST'=207 -'FOLLOWING'=208 -'FORCE'=209 -'FORWARD'=210 -'FUNCTION'=211 -'FUNCTIONS'=212 -'GLOBAL'=213 -'GRANTED'=214 -'HANDLER'=215 -'HEADER'=216 -'HOLD'=217 -'HOUR'=218 -'IDENTITY'=219 -'IF'=220 -'IMMEDIATE'=221 -'IMMUTABLE'=222 -'IMPLICIT'=223 -'INCLUDING'=224 -'INCREMENT'=225 -'INDEX'=226 -'INDEXES'=227 -'INHERIT'=228 -'INHERITS'=229 -'INLINE'=230 -'INSENSITIVE'=231 -'INSERT'=232 -'INSTEAD'=233 -'INVOKER'=234 -'ISOLATION'=235 -'KEY'=236 -'LABEL'=237 -'LANGUAGE'=238 -'LARGE'=239 -'LAST'=240 -'LEAKPROOF'=241 -'LEVEL'=242 -'LISTEN'=243 -'LOAD'=244 -'LOCAL'=245 -'LOCATION'=246 -'LOCK'=247 -'MAPPING'=248 -'MATCH'=249 -'MATCHED'=250 -'MATERIALIZED'=251 -'MAXVALUE'=252 -'MERGE'=253 -'MINUTE'=254 -'MINVALUE'=255 -'MODE'=256 -'MONTH'=257 -'MOVE'=258 -'NAME'=259 -'NAMES'=260 -'NEXT'=261 -'NO'=262 -'NOTHING'=263 -'NOTIFY'=264 -'NOWAIT'=265 -'NULLS'=266 -'OBJECT'=267 -'OF'=268 -'OFF'=269 -'OIDS'=270 -'OPERATOR'=271 -'OPTION'=272 -'OPTIONS'=273 -'OWNED'=274 -'OWNER'=275 -'PARSER'=276 -'PARTIAL'=277 -'PARTITION'=278 -'PASSING'=279 -'PASSWORD'=280 -'PLANS'=281 -'PRECEDING'=282 -'PREPARE'=283 -'PREPARED'=284 -'PRESERVE'=285 -'PRIOR'=286 -'PRIVILEGES'=287 -'PROCEDURAL'=288 -'PROCEDURE'=289 -'PROGRAM'=290 -'QUOTE'=291 -'RANGE'=292 -'READ'=293 -'REASSIGN'=294 -'RECHECK'=295 -'RECURSIVE'=296 -'REF'=297 -'REFRESH'=298 -'REINDEX'=299 -'RELATIVE'=300 -'RELEASE'=301 -'RENAME'=302 -'REPEATABLE'=303 -'REPLACE'=304 -'REPLICA'=305 -'RESET'=306 -'RESTART'=307 -'RESTRICT'=308 -'RETURNS'=309 -'REVOKE'=310 -'ROLE'=311 -'ROLLBACK'=312 -'ROWS'=313 -'RULE'=314 -'SAVEPOINT'=315 -'SCHEMA'=316 -'SCROLL'=317 -'SEARCH'=318 -'SECOND'=319 -'SECURITY'=320 -'SEQUENCE'=321 -'SEQUENCES'=322 -'SERIALIZABLE'=323 -'SERVER'=324 -'SESSION'=325 -'SET'=326 -'SHARE'=327 -'SHOW'=328 -'SIMPLE'=329 -'SNAPSHOT'=330 -'STABLE'=331 -'STANDALONE'=332 -'START'=333 -'STATEMENT'=334 -'STATISTICS'=335 -'STDIN'=336 -'STDOUT'=337 -'STORAGE'=338 -'STRICT'=339 -'STRIP'=340 -'SYSID'=341 -'SYSTEM'=342 -'TABLES'=343 -'TABLESPACE'=344 -'TEMP'=345 -'TEMPLATE'=346 -'TEMPORARY'=347 -'TEXT'=348 -'TRANSACTION'=349 -'TRIGGER'=350 -'TRUNCATE'=351 -'TRUSTED'=352 -'TYPE'=353 -'TYPES'=354 -'UNBOUNDED'=355 -'UNCOMMITTED'=356 -'UNENCRYPTED'=357 -'UNKNOWN'=358 -'UNLISTEN'=359 -'UNLOGGED'=360 -'UNTIL'=361 -'UPDATE'=362 -'VACUUM'=363 -'VALID'=364 -'VALIDATE'=365 -'VALIDATOR'=366 -'VARYING'=367 -'VERSION'=368 -'VIEW'=369 -'VOLATILE'=370 -'WHITESPACE'=371 -'WITHOUT'=372 -'WORK'=373 -'WRAPPER'=374 -'WRITE'=375 -'XML'=376 -'YEAR'=377 -'YES'=378 -'ZONE'=379 -'BETWEEN'=380 -'BIGINT'=381 -'BIT'=382 -'BOOLEAN'=383 -'CHAR'=384 -'CHARACTER'=385 -'COALESCE'=386 -'DEC'=387 -'DECIMAL'=388 -'EXISTS'=389 -'EXTRACT'=390 -'FLOAT'=391 -'GREATEST'=392 -'INOUT'=393 -'INT'=394 -'INTEGER'=395 -'INTERVAL'=396 -'LEAST'=397 -'NATIONAL'=398 -'NCHAR'=399 -'NONE'=400 -'NULLIF'=401 -'NUMERIC'=402 -'OVERLAY'=403 -'POSITION'=404 -'PRECISION'=405 -'REAL'=406 -'ROW'=407 -'SETOF'=408 -'SMALLINT'=409 -'SUBSTRING'=410 -'TIME'=411 -'TIMESTAMP'=412 -'TREAT'=413 -'TRIM'=414 -'VALUES'=415 -'VARCHAR'=416 -'XMLATTRIBUTES'=417 -'XMLCOMMENT'=418 -'XMLAGG'=419 -'XML_IS_WELL_FORMED'=420 -'XML_IS_WELL_FORMED_DOCUMENT'=421 -'XML_IS_WELL_FORMED_CONTENT'=422 -'XPATH'=423 -'XPATH_EXISTS'=424 -'XMLCONCAT'=425 -'XMLELEMENT'=426 -'XMLEXISTS'=427 -'XMLFOREST'=428 -'XMLPARSE'=429 -'XMLPI'=430 -'XMLROOT'=431 -'XMLSERIALIZE'=432 -'CALL'=433 -'CURRENT'=434 -'ATTACH'=435 -'DETACH'=436 -'EXPRESSION'=437 -'GENERATED'=438 -'LOGGED'=439 -'STORED'=440 -'INCLUDE'=441 -'ROUTINE'=442 -'TRANSFORM'=443 -'IMPORT'=444 -'POLICY'=445 -'METHOD'=446 -'REFERENCING'=447 -'NEW'=448 -'OLD'=449 -'VALUE'=450 -'SUBSCRIPTION'=451 -'PUBLICATION'=452 -'OUT'=453 -'END'=454 -'ROUTINES'=455 -'SCHEMAS'=456 -'PROCEDURES'=457 -'INPUT'=458 -'SUPPORT'=459 -'PARALLEL'=460 -'SQL'=461 -'DEPENDS'=462 -'OVERRIDING'=463 -'CONFLICT'=464 -'SKIP'=465 -'LOCKED'=466 -'TIES'=467 -'ROLLUP'=468 -'CUBE'=469 -'GROUPING'=470 -'SETS'=471 -'TABLESAMPLE'=472 -'ORDINALITY'=473 -'XMLTABLE'=474 -'COLUMNS'=475 -'XMLNAMESPACES'=476 -'ROWTYPE'=477 -'NORMALIZED'=478 -'WITHIN'=479 -'FILTER'=480 -'GROUPS'=481 -'OTHERS'=482 -'NFC'=483 -'NFD'=484 -'NFKC'=485 -'NFKD'=486 -'UESCAPE'=487 -'VIEWS'=488 -'NORMALIZE'=489 -'DUMP'=490 -'PRINT_STRICT_PARAMS'=491 -'VARIABLE_CONFLICT'=492 -'ERROR'=493 -'USE_VARIABLE'=494 -'USE_COLUMN'=495 -'ALIAS'=496 -'CONSTANT'=497 -'PERFORM'=498 -'GET'=499 -'DIAGNOSTICS'=500 -'STACKED'=501 -'ELSIF'=502 -'WHILE'=503 -'REVERSE'=504 -'FOREACH'=505 -'SLICE'=506 -'EXIT'=507 -'RETURN'=508 -'QUERY'=509 -'RAISE'=510 -'SQLSTATE'=511 -'DEBUG'=512 -'LOG'=513 -'INFO'=514 -'NOTICE'=515 -'WARNING'=516 -'EXCEPTION'=517 -'ASSERT'=518 -'LOOP'=519 -'OPEN'=520 -'ABS'=521 -'CBRT'=522 -'CEIL'=523 -'CEILING'=524 -'DEGREES'=525 -'DIV'=526 -'EXP'=527 -'FACTORIAL'=528 -'FLOOR'=529 -'GCD'=530 -'LCM'=531 -'LN'=532 -'LOG10'=533 -'MIN_SCALE'=534 -'MOD'=535 -'PI'=536 -'POWER'=537 -'RADIANS'=538 -'ROUND'=539 -'SCALE'=540 -'SIGN'=541 -'SQRT'=542 -'TRIM_SCALE'=543 -'TRUNC'=544 -'WIDTH_BUCKET'=545 -'RANDOM'=546 -'SETSEED'=547 -'ACOS'=548 -'ACOSD'=549 -'ASIN'=550 -'ASIND'=551 -'ATAN'=552 -'ATAND'=553 -'ATAN2'=554 -'ATAN2D'=555 -'COS'=556 -'COSD'=557 -'COT'=558 -'COTD'=559 -'SIN'=560 -'SIND'=561 -'TAN'=562 -'TAND'=563 -'SINH'=564 -'COSH'=565 -'TANH'=566 -'ASINH'=567 -'ACOSH'=568 -'ATANH'=569 -'BIT_LENGTH'=570 -'CHAR_LENGTH'=571 -'CHARACTER_LENGTH'=572 -'LOWER'=573 -'OCTET_LENGTH'=574 -'UPPER'=575 -'ASCII'=576 -'BTRIM'=577 -'CHR'=578 -'CONCAT'=579 -'CONCAT_WS'=580 -'FORMAT'=581 -'INITCAP'=582 -'LENGTH'=583 -'LPAD'=584 -'LTRIM'=585 -'MD5'=586 -'PARSE_IDENT'=587 -'PG_CLIENT_ENCODING'=588 -'QUOTE_IDENT'=589 -'QUOTE_LITERAL'=590 -'QUOTE_NULLABLE'=591 -'REGEXP_COUNT'=592 -'REGEXP_INSTR'=593 -'REGEXP_LIKE'=594 -'REGEXP_MATCH'=595 -'REGEXP_MATCHES'=596 -'REGEXP_REPLACE'=597 -'REGEXP_SPLIT_TO_ARRAY'=598 -'REGEXP_SPLIT_TO_TABLE'=599 -'REGEXP_SUBSTR'=600 -'REPEAT'=601 -'RPAD'=602 -'RTRIM'=603 -'SPLIT_PART'=604 -'STARTS_WITH'=605 -'STRING_TO_ARRAY'=606 -'STRING_TO_TABLE'=607 -'STRPOS'=608 -'SUBSTR'=609 -'TO_ASCII'=610 -'TO_HEX'=611 -'TRANSLATE'=612 -'UNISTR'=613 -'AGE'=614 -'CLOCK_TIMESTAMP'=615 -'DATE_BIN'=616 -'DATE_PART'=617 -'DATE_TRUNC'=618 -'ISFINITE'=619 -'JUSTIFY_DAYS'=620 -'JUSTIFY_HOURS'=621 -'JUSTIFY_INTERVAL'=622 -'MAKE_DATE'=623 -'MAKE_INTERVAL'=624 -'MAKE_TIME'=625 -'MAKE_TIMESTAMP'=626 -'MAKE_TIMESTAMPTZ'=627 -'NOW'=628 -'STATEMENT_TIMESTAMP'=629 -'TIMEOFDAY'=630 -'TRANSACTION_TIMESTAMP'=631 -'TO_TIMESTAMP'=632 -'TO_CHAR'=633 -'TO_DATE'=634 -'TO_NUMBER'=635 -'\\\\'=669 -'\''=679 diff --git a/antlr4_postgresql/PostgreSQLLexer.g4 b/antlr4_postgresql/PostgreSQLLexer.g4 deleted file mode 100644 index 4948006..0000000 --- a/antlr4_postgresql/PostgreSQLLexer.g4 +++ /dev/null @@ -1,1683 +0,0 @@ -/* -based on -https://github.com/tunnelvisionlabs/antlr4-grammar-postgresql/blob/master/src/com/tunnelvisionlabs/postgresql/PostgreSqlLexer.g4 -*/ - -/* - * [The "MIT license"] - * Copyright (C) 2014 Sam Harwell, Tunnel Vision Laboratories, LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * 1. The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * 2. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * 3. Except as contained in this notice, the name of Tunnel Vision - * Laboratories, LLC. shall not be used in advertising or otherwise to - * promote the sale, use or other dealings in this Software without prior - * written authorization from Tunnel Vision Laboratories, LLC. - */ - -// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false -// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine -// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true - -lexer grammar PostgreSQLLexer; -/* Reference: - * http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html - */ - -options { - superClass = PostgreSQLLexerBase; - caseInsensitive = true; -} - -@header { -} -@members { -/* This field stores the tags which are used to detect the end of a dollar-quoted string literal. - */ -} -// - -// SPECIAL CHARACTERS (4.1.4) - -// - -// Note that Asterisk is a valid operator, but does not have the type Operator due to its syntactic use in locations - -// that are not expressions. - -Dollar: '$'; - -OPEN_PAREN: '('; - -CLOSE_PAREN: ')'; - -OPEN_BRACKET: '['; - -CLOSE_BRACKET: ']'; - -COMMA: ','; - -SEMI: ';'; - -COLON: ':'; - -STAR: '*'; - -EQUAL: '='; - -DOT: '.'; -//NamedArgument : ':='; - -PLUS: '+'; - -MINUS: '-'; - -SLASH: '/'; - -CARET: '^'; - -LT: '<'; - -GT: '>'; - -LESS_LESS: '<<'; - -GREATER_GREATER: '>>'; - -COLON_EQUALS: ':='; - -LESS_EQUALS: '<='; - -EQUALS_GREATER: '=>'; - -GREATER_EQUALS: '>='; - -DOT_DOT: '..'; - -NOT_EQUALS: '<>'; - -TYPECAST: '::'; - -PERCENT: '%'; - -PARAM: '$' ([0-9])+; -// - -// OPERATORS (4.1.3) - -// - -// this rule does not allow + or - at the end of a multi-character operator - -Operator: - ( - ( - OperatorCharacter - | ('+' | '-' {checkLA('-')}?)+ (OperatorCharacter | '/' {checkLA('*')}?) - | '/' {checkLA('*')}? - )+ - | // special handling for the single-character operators + and - - [+-] - ) - //TODO somehow rewrite this part without using Actions - { - HandleLessLessGreaterGreater(); - } -; -/* This rule handles operators which end with + or -, and sets the token type to Operator. It is comprised of four - * parts, in order: - * - * 1. A prefix, which does not contain a character from the required set which allows + or - to appear at the end of - * the operator. - * 2. A character from the required set which allows + or - to appear at the end of the operator. - * 3. An optional sub-token which takes the form of an operator which does not include a + or - at the end of the - * sub-token. - * 4. A suffix sequence of + and - characters. - */ - -OperatorEndingWithPlusMinus: - (OperatorCharacterNotAllowPlusMinusAtEnd | '-' {checkLA('-')}? | '/' {checkLA('*')}?)* OperatorCharacterAllowPlusMinusAtEnd Operator? ( - '+' - | '-' {checkLA('-')}? - )+ -> type (Operator) -; -// Each of the following fragment rules omits the +, -, and / characters, which must always be handled in a special way - -// by the operator rules above. - -fragment OperatorCharacter: [*<>=~!@%^&|`?#]; -// these are the operator characters that don't count towards one ending with + or - - -fragment OperatorCharacterNotAllowPlusMinusAtEnd: [*<>=+]; -// an operator may end with + or - if it contains one of these characters - -fragment OperatorCharacterAllowPlusMinusAtEnd: [~!@%^&|`?#]; -// - -// KEYWORDS (Appendix C) - -// - -// - -// reserved keywords - -// - -ALL: 'ALL'; - -ANALYSE: 'ANALYSE'; - -ANALYZE: 'ANALYZE'; - -AND: 'AND'; - -ANY: 'ANY'; - -ARRAY: 'ARRAY'; - -AS: 'AS'; - -ASC: 'ASC'; - -ASYMMETRIC: 'ASYMMETRIC'; - -BOTH: 'BOTH'; - -CASE: 'CASE'; - -CAST: 'CAST'; - -CHECK: 'CHECK'; - -COLLATE: 'COLLATE'; - -COLUMN: 'COLUMN'; - -CONSTRAINT: 'CONSTRAINT'; - -CREATE: 'CREATE'; - -CURRENT_CATALOG: 'CURRENT_CATALOG'; - -CURRENT_DATE: 'CURRENT_DATE'; - -CURRENT_ROLE: 'CURRENT_ROLE'; - -CURRENT_TIME: 'CURRENT_TIME'; - -CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'; - -CURRENT_USER: 'CURRENT_USER'; - -DEFAULT: 'DEFAULT'; - -DEFERRABLE: 'DEFERRABLE'; - -DESC: 'DESC'; - -DISTINCT: 'DISTINCT'; - -DO: 'DO'; - -ELSE: 'ELSE'; - -EXCEPT: 'EXCEPT'; - -FALSE_P: 'FALSE'; - -FETCH: 'FETCH'; - -FOR: 'FOR'; - -FOREIGN: 'FOREIGN'; - -FROM: 'FROM'; - -GRANT: 'GRANT'; - -GROUP_P: 'GROUP'; - -HAVING: 'HAVING'; - -IN_P: 'IN'; - -INITIALLY: 'INITIALLY'; - -INTERSECT: 'INTERSECT'; - -INTO: 'INTO'; - -LATERAL_P: 'LATERAL'; - -LEADING: 'LEADING'; - -LIMIT: 'LIMIT'; - -LOCALTIME: 'LOCALTIME'; - -LOCALTIMESTAMP: 'LOCALTIMESTAMP'; - -NOT: 'NOT'; - -NULL_P: 'NULL'; - -OFFSET: 'OFFSET'; - -ON: 'ON'; - -ONLY: 'ONLY'; - -OR: 'OR'; - -ORDER: 'ORDER'; - -PLACING: 'PLACING'; - -PRIMARY: 'PRIMARY'; - -REFERENCES: 'REFERENCES'; - -RETURNING: 'RETURNING'; - -SELECT: 'SELECT'; - -SESSION_USER: 'SESSION_USER'; - -SOME: 'SOME'; - -SYMMETRIC: 'SYMMETRIC'; - -TABLE: 'TABLE'; - -THEN: 'THEN'; - -TO: 'TO'; - -TRAILING: 'TRAILING'; - -TRUE_P: 'TRUE'; - -UNION: 'UNION'; - -UNIQUE: 'UNIQUE'; - -USER: 'USER'; - -USING: 'USING'; - -VARIADIC: 'VARIADIC'; - -WHEN: 'WHEN'; - -WHERE: 'WHERE'; - -WINDOW: 'WINDOW'; - -WITH: 'WITH'; - -// - -// reserved keywords (can be function or type) - -// - -AUTHORIZATION: 'AUTHORIZATION'; - -BINARY: 'BINARY'; - -COLLATION: 'COLLATION'; - -CONCURRENTLY: 'CONCURRENTLY'; - -CROSS: 'CROSS'; - -CURRENT_SCHEMA: 'CURRENT_SCHEMA'; - -FREEZE: 'FREEZE'; - -FULL: 'FULL'; - -ILIKE: 'ILIKE'; - -INNER_P: 'INNER'; - -IS: 'IS'; - -ISNULL: 'ISNULL'; - -JOIN: 'JOIN'; - -LEFT: 'LEFT'; - -LIKE: 'LIKE'; - -NATURAL: 'NATURAL'; - -NOTNULL: 'NOTNULL'; - -OUTER_P: 'OUTER'; - -OVER: 'OVER'; - -OVERLAPS: 'OVERLAPS'; - -RIGHT: 'RIGHT'; - -SIMILAR: 'SIMILAR'; - -VERBOSE: 'VERBOSE'; -// - -// non-reserved keywords - -// - -ABORT_P: 'ABORT'; - -ABSOLUTE_P: 'ABSOLUTE'; - -ACCESS: 'ACCESS'; - -ACTION: 'ACTION'; - -ADD_P: 'ADD'; - -ADMIN: 'ADMIN'; - -AFTER: 'AFTER'; - -AGGREGATE: 'AGGREGATE'; - -ALSO: 'ALSO'; - -ALTER: 'ALTER'; - -ALWAYS: 'ALWAYS'; - -ASSERTION: 'ASSERTION'; - -ASSIGNMENT: 'ASSIGNMENT'; - -AT: 'AT'; - -ATTRIBUTE: 'ATTRIBUTE'; - -BACKWARD: 'BACKWARD'; - -BEFORE: 'BEFORE'; - -BEGIN_P: 'BEGIN'; - -BY: 'BY'; - -CACHE: 'CACHE'; - -CALLED: 'CALLED'; - -CASCADE: 'CASCADE'; - -CASCADED: 'CASCADED'; - -CATALOG: 'CATALOG'; - -CHAIN: 'CHAIN'; - -CHARACTERISTICS: 'CHARACTERISTICS'; - -CHECKPOINT: 'CHECKPOINT'; - -CLASS: 'CLASS'; - -CLOSE: 'CLOSE'; - -CLUSTER: 'CLUSTER'; - -COMMENT: 'COMMENT'; - -COMMENTS: 'COMMENTS'; - -COMMIT: 'COMMIT'; - -COMMITTED: 'COMMITTED'; - -CONFIGURATION: 'CONFIGURATION'; - -CONNECTION: 'CONNECTION'; - -CONSTRAINTS: 'CONSTRAINTS'; - -CONTENT_P: 'CONTENT'; - -CONTINUE_P: 'CONTINUE'; - -CONVERSION_P: 'CONVERSION'; - -COPY: 'COPY'; - -COST: 'COST'; - -CSV: 'CSV'; - -CURSOR: 'CURSOR'; - -CYCLE: 'CYCLE'; - -DATA_P: 'DATA'; - -DATABASE: 'DATABASE'; - -DAY_P: 'DAY'; - -DEALLOCATE: 'DEALLOCATE'; - -DECLARE: 'DECLARE'; - -DEFAULTS: 'DEFAULTS'; - -DEFERRED: 'DEFERRED'; - -DEFINER: 'DEFINER'; - -DELETE_P: 'DELETE'; - -DELIMITER: 'DELIMITER'; - -DELIMITERS: 'DELIMITERS'; - -DICTIONARY: 'DICTIONARY'; - -DISABLE_P: 'DISABLE'; - -DISCARD: 'DISCARD'; - -DOCUMENT_P: 'DOCUMENT'; - -DOMAIN_P: 'DOMAIN'; - -DOUBLE_P: 'DOUBLE'; - -DROP: 'DROP'; - -EACH: 'EACH'; - -ENABLE_P: 'ENABLE'; - -ENCODING: 'ENCODING'; - -ENCRYPTED: 'ENCRYPTED'; - -ENUM_P: 'ENUM'; - -ESCAPE: 'ESCAPE'; - -EVENT: 'EVENT'; - -EXCLUDE: 'EXCLUDE'; - -EXCLUDING: 'EXCLUDING'; - -EXCLUSIVE: 'EXCLUSIVE'; - -EXECUTE: 'EXECUTE'; - -EXPLAIN: 'EXPLAIN'; - -EXTENSION: 'EXTENSION'; - -EXTERNAL: 'EXTERNAL'; - -FAMILY: 'FAMILY'; - -FIRST_P: 'FIRST'; - -FOLLOWING: 'FOLLOWING'; - -FORCE: 'FORCE'; - -FORWARD: 'FORWARD'; - -FUNCTION: 'FUNCTION'; - -FUNCTIONS: 'FUNCTIONS'; - -GLOBAL: 'GLOBAL'; - -GRANTED: 'GRANTED'; - -HANDLER: 'HANDLER'; - -HEADER_P: 'HEADER'; - -HOLD: 'HOLD'; - -HOUR_P: 'HOUR'; - -IDENTITY_P: 'IDENTITY'; - -IF_P: 'IF'; - -IMMEDIATE: 'IMMEDIATE'; - -IMMUTABLE: 'IMMUTABLE'; - -IMPLICIT_P: 'IMPLICIT'; - -INCLUDING: 'INCLUDING'; - -INCREMENT: 'INCREMENT'; - -INDEX: 'INDEX'; - -INDEXES: 'INDEXES'; - -INHERIT: 'INHERIT'; - -INHERITS: 'INHERITS'; - -INLINE_P: 'INLINE'; - -INSENSITIVE: 'INSENSITIVE'; - -INSERT: 'INSERT'; - -INSTEAD: 'INSTEAD'; - -INVOKER: 'INVOKER'; - -ISOLATION: 'ISOLATION'; - -KEY: 'KEY'; - -LABEL: 'LABEL'; - -LANGUAGE: 'LANGUAGE'; - -LARGE_P: 'LARGE'; - -LAST_P: 'LAST'; -//LC_COLLATE : 'LC'_'COLLATE; - -//LC_CTYPE : 'LC'_'CTYPE; - -LEAKPROOF: 'LEAKPROOF'; - -LEVEL: 'LEVEL'; - -LISTEN: 'LISTEN'; - -LOAD: 'LOAD'; - -LOCAL: 'LOCAL'; - -LOCATION: 'LOCATION'; - -LOCK_P: 'LOCK'; - -MAPPING: 'MAPPING'; - -MATCH: 'MATCH'; - -MATCHED: 'MATCHED'; - -MATERIALIZED: 'MATERIALIZED'; - -MAXVALUE: 'MAXVALUE'; - -MERGE: 'MERGE'; - -MINUTE_P: 'MINUTE'; - -MINVALUE: 'MINVALUE'; - -MODE: 'MODE'; - -MONTH_P: 'MONTH'; - -MOVE: 'MOVE'; - -NAME_P: 'NAME'; - -NAMES: 'NAMES'; - -NEXT: 'NEXT'; - -NO: 'NO'; - -NOTHING: 'NOTHING'; - -NOTIFY: 'NOTIFY'; - -NOWAIT: 'NOWAIT'; - -NULLS_P: 'NULLS'; - -OBJECT_P: 'OBJECT'; - -OF: 'OF'; - -OFF: 'OFF'; - -OIDS: 'OIDS'; - -OPERATOR: 'OPERATOR'; - -OPTION: 'OPTION'; - -OPTIONS: 'OPTIONS'; - -OWNED: 'OWNED'; - -OWNER: 'OWNER'; - -PARSER: 'PARSER'; - -PARTIAL: 'PARTIAL'; - -PARTITION: 'PARTITION'; - -PASSING: 'PASSING'; - -PASSWORD: 'PASSWORD'; - -PLANS: 'PLANS'; - -PRECEDING: 'PRECEDING'; - -PREPARE: 'PREPARE'; - -PREPARED: 'PREPARED'; - -PRESERVE: 'PRESERVE'; - -PRIOR: 'PRIOR'; - -PRIVILEGES: 'PRIVILEGES'; - -PROCEDURAL: 'PROCEDURAL'; - -PROCEDURE: 'PROCEDURE'; - -PROGRAM: 'PROGRAM'; - -QUOTE: 'QUOTE'; - -RANGE: 'RANGE'; - -READ: 'READ'; - -REASSIGN: 'REASSIGN'; - -RECHECK: 'RECHECK'; - -RECURSIVE: 'RECURSIVE'; - -REF: 'REF'; - -REFRESH: 'REFRESH'; - -REINDEX: 'REINDEX'; - -RELATIVE_P: 'RELATIVE'; - -RELEASE: 'RELEASE'; - -RENAME: 'RENAME'; - -REPEATABLE: 'REPEATABLE'; - -REPLACE: 'REPLACE'; - -REPLICA: 'REPLICA'; - -RESET: 'RESET'; - -RESTART: 'RESTART'; - -RESTRICT: 'RESTRICT'; - -RETURNS: 'RETURNS'; - -REVOKE: 'REVOKE'; - -ROLE: 'ROLE'; - -ROLLBACK: 'ROLLBACK'; - -ROWS: 'ROWS'; - -RULE: 'RULE'; - -SAVEPOINT: 'SAVEPOINT'; - -SCHEMA: 'SCHEMA'; - -SCROLL: 'SCROLL'; - -SEARCH: 'SEARCH'; - -SECOND_P: 'SECOND'; - -SECURITY: 'SECURITY'; - -SEQUENCE: 'SEQUENCE'; - -SEQUENCES: 'SEQUENCES'; - -SERIALIZABLE: 'SERIALIZABLE'; - -SERVER: 'SERVER'; - -SESSION: 'SESSION'; - -SET: 'SET'; - -SHARE: 'SHARE'; - -SHOW: 'SHOW'; - -SIMPLE: 'SIMPLE'; - -SNAPSHOT: 'SNAPSHOT'; - -STABLE: 'STABLE'; - -STANDALONE_P: 'STANDALONE'; - -START: 'START'; - -STATEMENT: 'STATEMENT'; - -STATISTICS: 'STATISTICS'; - -STDIN: 'STDIN'; - -STDOUT: 'STDOUT'; - -STORAGE: 'STORAGE'; - -STRICT_P: 'STRICT'; - -STRIP_P: 'STRIP'; - -SYSID: 'SYSID'; - -SYSTEM_P: 'SYSTEM'; - -TABLES: 'TABLES'; - -TABLESPACE: 'TABLESPACE'; - -TEMP: 'TEMP'; - -TEMPLATE: 'TEMPLATE'; - -TEMPORARY: 'TEMPORARY'; - -TEXT_P: 'TEXT'; - -TRANSACTION: 'TRANSACTION'; - -TRIGGER: 'TRIGGER'; - -TRUNCATE: 'TRUNCATE'; - -TRUSTED: 'TRUSTED'; - -TYPE_P: 'TYPE'; - -TYPES_P: 'TYPES'; - -UNBOUNDED: 'UNBOUNDED'; - -UNCOMMITTED: 'UNCOMMITTED'; - -UNENCRYPTED: 'UNENCRYPTED'; - -UNKNOWN: 'UNKNOWN'; - -UNLISTEN: 'UNLISTEN'; - -UNLOGGED: 'UNLOGGED'; - -UNTIL: 'UNTIL'; - -UPDATE: 'UPDATE'; - -VACUUM: 'VACUUM'; - -VALID: 'VALID'; - -VALIDATE: 'VALIDATE'; - -VALIDATOR: 'VALIDATOR'; -//VALUE : 'VALUE; - -VARYING: 'VARYING'; - -VERSION_P: 'VERSION'; - -VIEW: 'VIEW'; - -VOLATILE: 'VOLATILE'; - -WHITESPACE_P: 'WHITESPACE'; - -WITHOUT: 'WITHOUT'; - -WORK: 'WORK'; - -WRAPPER: 'WRAPPER'; - -WRITE: 'WRITE'; - -XML_P: 'XML'; - -YEAR_P: 'YEAR'; - -YES_P: 'YES'; - -ZONE: 'ZONE'; -// - -// non-reserved keywords (can not be function or type) - -// - -BETWEEN: 'BETWEEN'; - -BIGINT: 'BIGINT'; - -BIT: 'BIT'; - -BOOLEAN_P: 'BOOLEAN'; - -CHAR_P: 'CHAR'; - -CHARACTER: 'CHARACTER'; - -COALESCE: 'COALESCE'; - -DEC: 'DEC'; - -DECIMAL_P: 'DECIMAL'; - -EXISTS: 'EXISTS'; - -EXTRACT: 'EXTRACT'; - -FLOAT_P: 'FLOAT'; - -GREATEST: 'GREATEST'; - -INOUT: 'INOUT'; - -INT_P: 'INT'; - -INTEGER: 'INTEGER'; - -INTERVAL: 'INTERVAL'; - -LEAST: 'LEAST'; - -NATIONAL: 'NATIONAL'; - -NCHAR: 'NCHAR'; - -NONE: 'NONE'; - -NULLIF: 'NULLIF'; - -NUMERIC: 'NUMERIC'; - -OVERLAY: 'OVERLAY'; - -POSITION: 'POSITION'; - -PRECISION: 'PRECISION'; - -REAL: 'REAL'; - -ROW: 'ROW'; - -SETOF: 'SETOF'; - -SMALLINT: 'SMALLINT'; - -SUBSTRING: 'SUBSTRING'; - -TIME: 'TIME'; - -TIMESTAMP: 'TIMESTAMP'; - -TREAT: 'TREAT'; - -TRIM: 'TRIM'; - -VALUES: 'VALUES'; - -VARCHAR: 'VARCHAR'; - -XMLATTRIBUTES: 'XMLATTRIBUTES'; - -XMLCOMMENT: 'XMLCOMMENT'; - -XMLAGG: 'XMLAGG'; - -XML_IS_WELL_FORMED: 'XML_IS_WELL_FORMED'; - -XML_IS_WELL_FORMED_DOCUMENT: 'XML_IS_WELL_FORMED_DOCUMENT'; - -XML_IS_WELL_FORMED_CONTENT: 'XML_IS_WELL_FORMED_CONTENT'; - -XPATH: 'XPATH'; - -XPATH_EXISTS: 'XPATH_EXISTS'; - -XMLCONCAT: 'XMLCONCAT'; - -XMLELEMENT: 'XMLELEMENT'; - -XMLEXISTS: 'XMLEXISTS'; - -XMLFOREST: 'XMLFOREST'; - -XMLPARSE: 'XMLPARSE'; - -XMLPI: 'XMLPI'; - -XMLROOT: 'XMLROOT'; - -XMLSERIALIZE: 'XMLSERIALIZE'; -//MISSED - -CALL: 'CALL'; - -CURRENT_P: 'CURRENT'; - -ATTACH: 'ATTACH'; - -DETACH: 'DETACH'; - -EXPRESSION: 'EXPRESSION'; - -GENERATED: 'GENERATED'; - -LOGGED: 'LOGGED'; - -STORED: 'STORED'; - -INCLUDE: 'INCLUDE'; - -ROUTINE: 'ROUTINE'; - -TRANSFORM: 'TRANSFORM'; - -IMPORT_P: 'IMPORT'; - -POLICY: 'POLICY'; - -METHOD: 'METHOD'; - -REFERENCING: 'REFERENCING'; - -NEW: 'NEW'; - -OLD: 'OLD'; - -VALUE_P: 'VALUE'; - -SUBSCRIPTION: 'SUBSCRIPTION'; - -PUBLICATION: 'PUBLICATION'; - -OUT_P: 'OUT'; - -END_P: 'END'; - -ROUTINES: 'ROUTINES'; - -SCHEMAS: 'SCHEMAS'; - -PROCEDURES: 'PROCEDURES'; - -INPUT_P: 'INPUT'; - -SUPPORT: 'SUPPORT'; - -PARALLEL: 'PARALLEL'; - -SQL_P: 'SQL'; - -DEPENDS: 'DEPENDS'; - -OVERRIDING: 'OVERRIDING'; - -CONFLICT: 'CONFLICT'; - -SKIP_P: 'SKIP'; - -LOCKED: 'LOCKED'; - -TIES: 'TIES'; - -ROLLUP: 'ROLLUP'; - -CUBE: 'CUBE'; - -GROUPING: 'GROUPING'; - -SETS: 'SETS'; - -TABLESAMPLE: 'TABLESAMPLE'; - -ORDINALITY: 'ORDINALITY'; - -XMLTABLE: 'XMLTABLE'; - -COLUMNS: 'COLUMNS'; - -XMLNAMESPACES: 'XMLNAMESPACES'; - -ROWTYPE: 'ROWTYPE'; - -NORMALIZED: 'NORMALIZED'; - -WITHIN: 'WITHIN'; - -FILTER: 'FILTER'; - -GROUPS: 'GROUPS'; - -OTHERS: 'OTHERS'; - -NFC: 'NFC'; - -NFD: 'NFD'; - -NFKC: 'NFKC'; - -NFKD: 'NFKD'; - -UESCAPE: 'UESCAPE'; - -VIEWS: 'VIEWS'; - -NORMALIZE: 'NORMALIZE'; - -DUMP: 'DUMP'; - -PRINT_STRICT_PARAMS: 'PRINT_STRICT_PARAMS'; - -VARIABLE_CONFLICT: 'VARIABLE_CONFLICT'; - -ERROR: 'ERROR'; - -USE_VARIABLE: 'USE_VARIABLE'; - -USE_COLUMN: 'USE_COLUMN'; - -ALIAS: 'ALIAS'; - -CONSTANT: 'CONSTANT'; - -PERFORM: 'PERFORM'; - -GET: 'GET'; - -DIAGNOSTICS: 'DIAGNOSTICS'; - -STACKED: 'STACKED'; - -ELSIF: 'ELSIF'; - -WHILE: 'WHILE'; - -REVERSE: 'REVERSE'; - -FOREACH: 'FOREACH'; - -SLICE: 'SLICE'; - -EXIT: 'EXIT'; - -RETURN: 'RETURN'; - -QUERY: 'QUERY'; - -RAISE: 'RAISE'; - -SQLSTATE: 'SQLSTATE'; - -DEBUG: 'DEBUG'; - -LOG: 'LOG'; - -INFO: 'INFO'; - -NOTICE: 'NOTICE'; - -WARNING: 'WARNING'; - -EXCEPTION: 'EXCEPTION'; - -ASSERT: 'ASSERT'; - -LOOP: 'LOOP'; - -OPEN: 'OPEN'; -// - -// IDENTIFIERS (4.1.1) - -// - -ABS: 'ABS'; - -CBRT: 'CBRT'; - -CEIL: 'CEIL'; - -CEILING: 'CEILING'; - -DEGREES: 'DEGREES'; - -DIV: 'DIV'; - -EXP: 'EXP'; - -FACTORIAL: 'FACTORIAL'; - -FLOOR: 'FLOOR'; - -GCD: 'GCD'; - -LCM: 'LCM'; - -LN: 'LN'; - -LOG10: 'LOG10'; - -MIN_SCALE: 'MIN_SCALE'; - -MOD: 'MOD'; - -PI: 'PI'; - -POWER: 'POWER'; - -RADIANS: 'RADIANS'; - -ROUND: 'ROUND'; - -SCALE: 'SCALE'; - -SIGN: 'SIGN'; - -SQRT: 'SQRT'; - -TRIM_SCALE: 'TRIM_SCALE'; - -TRUNC: 'TRUNC'; - -WIDTH_BUCKET: 'WIDTH_BUCKET'; - -RANDOM: 'RANDOM'; - -SETSEED: 'SETSEED'; - -ACOS: 'ACOS'; - -ACOSD: 'ACOSD'; - -ASIN: 'ASIN'; - -ASIND: 'ASIND'; - -ATAN: 'ATAN'; - -ATAND: 'ATAND'; - -ATAN2: 'ATAN2'; - -ATAN2D: 'ATAN2D'; - -COS: 'COS'; - -COSD: 'COSD'; - -COT: 'COT'; - -COTD: 'COTD'; - -SIN: 'SIN'; - -SIND: 'SIND'; - -TAN: 'TAN'; - -TAND: 'TAND'; - -SINH: 'SINH'; - -COSH: 'COSH'; - -TANH: 'TANH'; - -ASINH: 'ASINH'; - -ACOSH: 'ACOSH'; - -ATANH: 'ATANH'; - -BIT_LENGTH: 'BIT_LENGTH'; - -CHAR_LENGTH: 'CHAR_LENGTH'; - -CHARACTER_LENGTH: 'CHARACTER_LENGTH'; - -LOWER: 'LOWER'; - -OCTET_LENGTH: 'OCTET_LENGTH'; - -UPPER: 'UPPER'; - -ASCII: 'ASCII'; - -BTRIM: 'BTRIM'; - -CHR: 'CHR'; - -CONCAT: 'CONCAT'; - -CONCAT_WS: 'CONCAT_WS'; - -FORMAT: 'FORMAT'; - -INITCAP: 'INITCAP'; - -LENGTH: 'LENGTH'; - -LPAD: 'LPAD'; - -LTRIM: 'LTRIM'; - -MD5: 'MD5'; - -PARSE_IDENT: 'PARSE_IDENT'; - -PG_CLIENT_ENCODING: 'PG_CLIENT_ENCODING'; - -QUOTE_IDENT: 'QUOTE_IDENT'; - -QUOTE_LITERAL: 'QUOTE_LITERAL'; - -QUOTE_NULLABLE: 'QUOTE_NULLABLE'; - -REGEXP_COUNT: 'REGEXP_COUNT'; - -REGEXP_INSTR: 'REGEXP_INSTR'; - -REGEXP_LIKE: 'REGEXP_LIKE'; - -REGEXP_MATCH: 'REGEXP_MATCH'; - -REGEXP_MATCHES: 'REGEXP_MATCHES'; - -REGEXP_REPLACE: 'REGEXP_REPLACE'; - -REGEXP_SPLIT_TO_ARRAY: 'REGEXP_SPLIT_TO_ARRAY'; - -REGEXP_SPLIT_TO_TABLE: 'REGEXP_SPLIT_TO_TABLE'; - -REGEXP_SUBSTR: 'REGEXP_SUBSTR'; - -REPEAT: 'REPEAT'; - -RPAD: 'RPAD'; - -RTRIM: 'RTRIM'; - -SPLIT_PART: 'SPLIT_PART'; - -STARTS_WITH: 'STARTS_WITH'; - -STRING_TO_ARRAY: 'STRING_TO_ARRAY'; - -STRING_TO_TABLE: 'STRING_TO_TABLE'; - -STRPOS: 'STRPOS'; - -SUBSTR: 'SUBSTR'; - -TO_ASCII: 'TO_ASCII'; - -TO_HEX: 'TO_HEX'; - -TRANSLATE: 'TRANSLATE'; - -UNISTR: 'UNISTR'; - -AGE: 'AGE'; - -CLOCK_TIMESTAMP: 'CLOCK_TIMESTAMP'; - -DATE_BIN: 'DATE_BIN'; - -DATE_PART: 'DATE_PART'; - -DATE_TRUNC: 'DATE_TRUNC'; - -ISFINITE: 'ISFINITE'; - -JUSTIFY_DAYS: 'JUSTIFY_DAYS'; - -JUSTIFY_HOURS: 'JUSTIFY_HOURS'; - -JUSTIFY_INTERVAL: 'JUSTIFY_INTERVAL'; - -MAKE_DATE: 'MAKE_DATE'; - -MAKE_INTERVAL: 'MAKE_INTERVAL'; - -MAKE_TIME: 'MAKE_TIME'; - -MAKE_TIMESTAMP: 'MAKE_TIMESTAMP'; - -MAKE_TIMESTAMPTZ: 'MAKE_TIMESTAMPTZ'; - -NOW: 'NOW'; - -STATEMENT_TIMESTAMP: 'STATEMENT_TIMESTAMP'; - -TIMEOFDAY: 'TIMEOFDAY'; - -TRANSACTION_TIMESTAMP: 'TRANSACTION_TIMESTAMP'; - -TO_TIMESTAMP: 'TO_TIMESTAMP'; - -TO_CHAR: 'TO_CHAR'; - -TO_DATE: 'TO_DATE'; - -TO_NUMBER: 'TO_NUMBER'; - -Identifier: IdentifierStartChar IdentifierChar*; - -fragment IdentifierStartChar options { - caseInsensitive = false; -}: // these are the valid identifier start characters below 0x7F - [a-zA-Z_] - | // these are the valid characters from 0x80 to 0xFF - [\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF] - | // these are the letters above 0xFF which only need a single UTF-16 code unit - [\u0100-\uD7FF\uE000-\uFFFF] {charIsLetter()}? - | // letters which require multiple UTF-16 code units - [\uD800-\uDBFF] [\uDC00-\uDFFF] { - CheckIfUtf32Letter() - }? -; - -fragment IdentifierChar: StrictIdentifierChar | '$'; - -fragment StrictIdentifierChar: IdentifierStartChar | [0-9]; -/* Quoted Identifiers - * - * These are divided into four separate tokens, allowing distinction of valid quoted identifiers from invalid quoted - * identifiers without sacrificing the ability of the lexer to reliably recover from lexical errors in the input. - */ - -QuotedIdentifier: UnterminatedQuotedIdentifier '"'; -// This is a quoted identifier which only contains valid characters but is not terminated - -UnterminatedQuotedIdentifier: '"' ('""' | ~ [\u0000"])*; -// This is a quoted identifier which is terminated but contains a \u0000 character - -InvalidQuotedIdentifier: InvalidUnterminatedQuotedIdentifier '"'; -// This is a quoted identifier which is unterminated and contains a \u0000 character - -InvalidUnterminatedQuotedIdentifier: '"' ('""' | ~ '"')*; -/* Unicode Quoted Identifiers - * - * These are divided into four separate tokens, allowing distinction of valid Unicode quoted identifiers from invalid - * Unicode quoted identifiers without sacrificing the ability of the lexer to reliably recover from lexical errors in - * the input. Note that escape sequences are never checked as part of this determination due to the ability of users - * to change the escape character with a UESCAPE clause following the Unicode quoted identifier. - * - * TODO: these rules assume "" is still a valid escape sequence within a Unicode quoted identifier. - */ - -UnicodeQuotedIdentifier: 'U' '&' QuotedIdentifier; -// This is a Unicode quoted identifier which only contains valid characters but is not terminated - -UnterminatedUnicodeQuotedIdentifier: 'U' '&' UnterminatedQuotedIdentifier; -// This is a Unicode quoted identifier which is terminated but contains a \u0000 character - -InvalidUnicodeQuotedIdentifier: 'U' '&' InvalidQuotedIdentifier; -// This is a Unicode quoted identifier which is unterminated and contains a \u0000 character - -InvalidUnterminatedUnicodeQuotedIdentifier: 'U' '&' InvalidUnterminatedQuotedIdentifier; -// - -// CONSTANTS (4.1.2) - -// - -// String Constants (4.1.2.1) - -StringConstant: UnterminatedStringConstant '\''; - -UnterminatedStringConstant: '\'' ('\'\'' | ~ '\'')*; -// String Constants with C-style Escapes (4.1.2.2) - -BeginEscapeStringConstant: 'E' '\'' -> more, pushMode (EscapeStringConstantMode); -// String Constants with Unicode Escapes (4.1.2.3) - -// - -// Note that escape sequences are never checked as part of this token due to the ability of users to change the escape - -// character with a UESCAPE clause following the Unicode string constant. - -// - -// TODO: these rules assume '' is still a valid escape sequence within a Unicode string constant. - -UnicodeEscapeStringConstant: UnterminatedUnicodeEscapeStringConstant '\''; - -UnterminatedUnicodeEscapeStringConstant: 'U' '&' UnterminatedStringConstant; -// Dollar-quoted String Constants (4.1.2.4) - -BeginDollarStringConstant: '$' Tag? '$' {pushTag();} -> pushMode (DollarQuotedStringMode); -/* "The tag, if any, of a dollar-quoted string follows the same rules as an - * unquoted identifier, except that it cannot contain a dollar sign." - */ - -fragment Tag: IdentifierStartChar StrictIdentifierChar*; -// Bit-strings Constants (4.1.2.5) - -BinaryStringConstant: UnterminatedBinaryStringConstant '\''; - -UnterminatedBinaryStringConstant: 'B' '\'' [01]*; - -InvalidBinaryStringConstant: InvalidUnterminatedBinaryStringConstant '\''; - -InvalidUnterminatedBinaryStringConstant: 'B' UnterminatedStringConstant; - -HexadecimalStringConstant: UnterminatedHexadecimalStringConstant '\''; - -UnterminatedHexadecimalStringConstant: 'X' '\'' [0-9A-F]*; - -InvalidHexadecimalStringConstant: InvalidUnterminatedHexadecimalStringConstant '\''; - -InvalidUnterminatedHexadecimalStringConstant: 'X' UnterminatedStringConstant; -// Numeric Constants (4.1.2.6) - -Integral: Digits; - -NumericFail: Digits '..' {HandleNumericFail();}; - -Numeric: - Digits '.' Digits? /*? replaced with + to solve problem with DOT_DOT .. but this surely must be rewriten */ ( - 'E' [+-]? Digits - )? - | '.' Digits ('E' [+-]? Digits)? - | Digits 'E' [+-]? Digits -; - -fragment Digits: [0-9]+; - -PLSQLVARIABLENAME: ':' [A-Z_] [A-Z_0-9$]*; - -PLSQLIDENTIFIER: ':"' ('\\' . | '""' | ~ ('"' | '\\'))* '"'; -// - -// WHITESPACE (4.1) - -// - -Whitespace: [ \t]+ -> channel (HIDDEN); - -Newline: ('\r' '\n'? | '\n') -> channel (HIDDEN); -// - -// COMMENTS (4.1.5) - -// - -LineComment: '--' ~ [\r\n]* -> channel (HIDDEN); - -BlockComment: - ('/*' ('/'* BlockComment | ~ [/*] | '/'+ ~ [/*] | '*'+ ~ [/*])* '*'* '*/') -> channel (HIDDEN) -; - -UnterminatedBlockComment: - '/*' ( - '/'* BlockComment - | // these characters are not part of special sequences in a block comment - ~ [/*] - | // handle / or * characters which are not part of /* or */ and do not appear at the end of the file - ('/'+ ~ [/*] | '*'+ ~ [/*]) - )* - // Handle the case of / or * characters at the end of the file, or a nested unterminated block comment - ('/'+ | '*'+ | '/'* UnterminatedBlockComment)? - // Optional assertion to make sure this rule is working as intended - { - UnterminatedBlockCommentDebugAssert(); - } -; -// - -// META-COMMANDS - -// - -// http://www.postgresql.org/docs/9.3/static/app-psql.html - -MetaCommand: '\\' (~ [\r\n\\"] | '"' ~ [\r\n"]* '"')* ('"' ~ [\r\n"]*)?; - -EndMetaCommand: '\\\\'; -// - -// ERROR - -// - -// Any character which does not match one of the above rules will appear in the token stream as an ErrorCharacter token. - -// This ensures the lexer itself will never encounter a syntax error, so all error handling may be performed by the - -// parser. - -ErrorCharacter: .; - -mode EscapeStringConstantMode; -EscapeStringConstant: EscapeStringText '\'' -> mode (AfterEscapeStringConstantMode); - -UnterminatedEscapeStringConstant: - EscapeStringText - // Handle a final unmatched \ character appearing at the end of the file - '\\'? EOF -; - -fragment EscapeStringText options { - caseInsensitive = false; -}: - ( - '\'\'' - | '\\' ( - // two-digit hex escapes are still valid when treated as single-digit escapes - 'x' [0-9a-fA-F] - | 'u' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] - | 'U' [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] - | // Any character other than the Unicode escapes can follow a backslash. Some have special meaning, - // but that doesn't affect the syntax. - ~ [xuU] - ) - | ~ ['\\] - )* -; - -InvalidEscapeStringConstant: InvalidEscapeStringText '\'' -> mode (AfterEscapeStringConstantMode); - -InvalidUnterminatedEscapeStringConstant: - InvalidEscapeStringText - // Handle a final unmatched \ character appearing at the end of the file - '\\'? EOF -; - -fragment InvalidEscapeStringText: ('\'\'' | '\\' . | ~ ['\\])*; - -mode AfterEscapeStringConstantMode; -AfterEscapeStringConstantMode_Whitespace: Whitespace -> type (Whitespace), channel (HIDDEN); - -AfterEscapeStringConstantMode_Newline: - Newline -> type (Newline), channel (HIDDEN), mode (AfterEscapeStringConstantWithNewlineMode) -; - -AfterEscapeStringConstantMode_NotContinued: - {} // intentionally empty - -> skip, popMode -; - -mode AfterEscapeStringConstantWithNewlineMode; -AfterEscapeStringConstantWithNewlineMode_Whitespace: - Whitespace -> type (Whitespace), channel (HIDDEN) -; - -AfterEscapeStringConstantWithNewlineMode_Newline: Newline -> type (Newline), channel (HIDDEN); - -AfterEscapeStringConstantWithNewlineMode_Continued: - '\'' -> more, mode (EscapeStringConstantMode) -; - -AfterEscapeStringConstantWithNewlineMode_NotContinued: - {} // intentionally empty - -> skip, popMode -; - -mode DollarQuotedStringMode; -DollarText: - ~ '$'+ - //| '$'([0-9])+ - | // this alternative improves the efficiency of handling $ characters within a dollar-quoted string which are - - // not part of the ending tag. - '$' ~ '$'* -; - -EndDollarStringConstant: ('$' Tag? '$') {isTag()}? {popTag();} -> popMode; \ No newline at end of file diff --git a/antlr4_postgresql/PostgreSQLLexer.interp b/antlr4_postgresql/PostgreSQLLexer.interp deleted file mode 100644 index 328130e..0000000 --- a/antlr4_postgresql/PostgreSQLLexer.interp +++ /dev/null @@ -1,2074 +0,0 @@ -token literal names: -null -'$' -'(' -')' -'[' -']' -',' -';' -':' -'*' -'=' -'.' -'+' -'-' -'/' -'^' -'<' -'>' -'<<' -'>>' -':=' -'<=' -'=>' -'>=' -'..' -'<>' -'::' -'%' -null -null -'ALL' -'ANALYSE' -'ANALYZE' -'AND' -'ANY' -'ARRAY' -'AS' -'ASC' -'ASYMMETRIC' -'BOTH' -'CASE' -'CAST' -'CHECK' -'COLLATE' -'COLUMN' -'CONSTRAINT' -'CREATE' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_ROLE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DEFAULT' -'DEFERRABLE' -'DESC' -'DISTINCT' -'DO' -'ELSE' -'EXCEPT' -'FALSE' -'FETCH' -'FOR' -'FOREIGN' -'FROM' -'GRANT' -'GROUP' -'HAVING' -'IN' -'INITIALLY' -'INTERSECT' -'INTO' -'LATERAL' -'LEADING' -'LIMIT' -'LOCALTIME' -'LOCALTIMESTAMP' -'NOT' -'NULL' -'OFFSET' -'ON' -'ONLY' -'OR' -'ORDER' -'PLACING' -'PRIMARY' -'REFERENCES' -'RETURNING' -'SELECT' -'SESSION_USER' -'SOME' -'SYMMETRIC' -'TABLE' -'THEN' -'TO' -'TRAILING' -'TRUE' -'UNION' -'UNIQUE' -'USER' -'USING' -'VARIADIC' -'WHEN' -'WHERE' -'WINDOW' -'WITH' -'AUTHORIZATION' -'BINARY' -'COLLATION' -'CONCURRENTLY' -'CROSS' -'CURRENT_SCHEMA' -'FREEZE' -'FULL' -'ILIKE' -'INNER' -'IS' -'ISNULL' -'JOIN' -'LEFT' -'LIKE' -'NATURAL' -'NOTNULL' -'OUTER' -'OVER' -'OVERLAPS' -'RIGHT' -'SIMILAR' -'VERBOSE' -'ABORT' -'ABSOLUTE' -'ACCESS' -'ACTION' -'ADD' -'ADMIN' -'AFTER' -'AGGREGATE' -'ALSO' -'ALTER' -'ALWAYS' -'ASSERTION' -'ASSIGNMENT' -'AT' -'ATTRIBUTE' -'BACKWARD' -'BEFORE' -'BEGIN' -'BY' -'CACHE' -'CALLED' -'CASCADE' -'CASCADED' -'CATALOG' -'CHAIN' -'CHARACTERISTICS' -'CHECKPOINT' -'CLASS' -'CLOSE' -'CLUSTER' -'COMMENT' -'COMMENTS' -'COMMIT' -'COMMITTED' -'CONFIGURATION' -'CONNECTION' -'CONSTRAINTS' -'CONTENT' -'CONTINUE' -'CONVERSION' -'COPY' -'COST' -'CSV' -'CURSOR' -'CYCLE' -'DATA' -'DATABASE' -'DAY' -'DEALLOCATE' -'DECLARE' -'DEFAULTS' -'DEFERRED' -'DEFINER' -'DELETE' -'DELIMITER' -'DELIMITERS' -'DICTIONARY' -'DISABLE' -'DISCARD' -'DOCUMENT' -'DOMAIN' -'DOUBLE' -'DROP' -'EACH' -'ENABLE' -'ENCODING' -'ENCRYPTED' -'ENUM' -'ESCAPE' -'EVENT' -'EXCLUDE' -'EXCLUDING' -'EXCLUSIVE' -'EXECUTE' -'EXPLAIN' -'EXTENSION' -'EXTERNAL' -'FAMILY' -'FIRST' -'FOLLOWING' -'FORCE' -'FORWARD' -'FUNCTION' -'FUNCTIONS' -'GLOBAL' -'GRANTED' -'HANDLER' -'HEADER' -'HOLD' -'HOUR' -'IDENTITY' -'IF' -'IMMEDIATE' -'IMMUTABLE' -'IMPLICIT' -'INCLUDING' -'INCREMENT' -'INDEX' -'INDEXES' -'INHERIT' -'INHERITS' -'INLINE' -'INSENSITIVE' -'INSERT' -'INSTEAD' -'INVOKER' -'ISOLATION' -'KEY' -'LABEL' -'LANGUAGE' -'LARGE' -'LAST' -'LEAKPROOF' -'LEVEL' -'LISTEN' -'LOAD' -'LOCAL' -'LOCATION' -'LOCK' -'MAPPING' -'MATCH' -'MATCHED' -'MATERIALIZED' -'MAXVALUE' -'MERGE' -'MINUTE' -'MINVALUE' -'MODE' -'MONTH' -'MOVE' -'NAME' -'NAMES' -'NEXT' -'NO' -'NOTHING' -'NOTIFY' -'NOWAIT' -'NULLS' -'OBJECT' -'OF' -'OFF' -'OIDS' -'OPERATOR' -'OPTION' -'OPTIONS' -'OWNED' -'OWNER' -'PARSER' -'PARTIAL' -'PARTITION' -'PASSING' -'PASSWORD' -'PLANS' -'PRECEDING' -'PREPARE' -'PREPARED' -'PRESERVE' -'PRIOR' -'PRIVILEGES' -'PROCEDURAL' -'PROCEDURE' -'PROGRAM' -'QUOTE' -'RANGE' -'READ' -'REASSIGN' -'RECHECK' -'RECURSIVE' -'REF' -'REFRESH' -'REINDEX' -'RELATIVE' -'RELEASE' -'RENAME' -'REPEATABLE' -'REPLACE' -'REPLICA' -'RESET' -'RESTART' -'RESTRICT' -'RETURNS' -'REVOKE' -'ROLE' -'ROLLBACK' -'ROWS' -'RULE' -'SAVEPOINT' -'SCHEMA' -'SCROLL' -'SEARCH' -'SECOND' -'SECURITY' -'SEQUENCE' -'SEQUENCES' -'SERIALIZABLE' -'SERVER' -'SESSION' -'SET' -'SHARE' -'SHOW' -'SIMPLE' -'SNAPSHOT' -'STABLE' -'STANDALONE' -'START' -'STATEMENT' -'STATISTICS' -'STDIN' -'STDOUT' -'STORAGE' -'STRICT' -'STRIP' -'SYSID' -'SYSTEM' -'TABLES' -'TABLESPACE' -'TEMP' -'TEMPLATE' -'TEMPORARY' -'TEXT' -'TRANSACTION' -'TRIGGER' -'TRUNCATE' -'TRUSTED' -'TYPE' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNENCRYPTED' -'UNKNOWN' -'UNLISTEN' -'UNLOGGED' -'UNTIL' -'UPDATE' -'VACUUM' -'VALID' -'VALIDATE' -'VALIDATOR' -'VARYING' -'VERSION' -'VIEW' -'VOLATILE' -'WHITESPACE' -'WITHOUT' -'WORK' -'WRAPPER' -'WRITE' -'XML' -'YEAR' -'YES' -'ZONE' -'BETWEEN' -'BIGINT' -'BIT' -'BOOLEAN' -'CHAR' -'CHARACTER' -'COALESCE' -'DEC' -'DECIMAL' -'EXISTS' -'EXTRACT' -'FLOAT' -'GREATEST' -'INOUT' -'INT' -'INTEGER' -'INTERVAL' -'LEAST' -'NATIONAL' -'NCHAR' -'NONE' -'NULLIF' -'NUMERIC' -'OVERLAY' -'POSITION' -'PRECISION' -'REAL' -'ROW' -'SETOF' -'SMALLINT' -'SUBSTRING' -'TIME' -'TIMESTAMP' -'TREAT' -'TRIM' -'VALUES' -'VARCHAR' -'XMLATTRIBUTES' -'XMLCOMMENT' -'XMLAGG' -'XML_IS_WELL_FORMED' -'XML_IS_WELL_FORMED_DOCUMENT' -'XML_IS_WELL_FORMED_CONTENT' -'XPATH' -'XPATH_EXISTS' -'XMLCONCAT' -'XMLELEMENT' -'XMLEXISTS' -'XMLFOREST' -'XMLPARSE' -'XMLPI' -'XMLROOT' -'XMLSERIALIZE' -'CALL' -'CURRENT' -'ATTACH' -'DETACH' -'EXPRESSION' -'GENERATED' -'LOGGED' -'STORED' -'INCLUDE' -'ROUTINE' -'TRANSFORM' -'IMPORT' -'POLICY' -'METHOD' -'REFERENCING' -'NEW' -'OLD' -'VALUE' -'SUBSCRIPTION' -'PUBLICATION' -'OUT' -'END' -'ROUTINES' -'SCHEMAS' -'PROCEDURES' -'INPUT' -'SUPPORT' -'PARALLEL' -'SQL' -'DEPENDS' -'OVERRIDING' -'CONFLICT' -'SKIP' -'LOCKED' -'TIES' -'ROLLUP' -'CUBE' -'GROUPING' -'SETS' -'TABLESAMPLE' -'ORDINALITY' -'XMLTABLE' -'COLUMNS' -'XMLNAMESPACES' -'ROWTYPE' -'NORMALIZED' -'WITHIN' -'FILTER' -'GROUPS' -'OTHERS' -'NFC' -'NFD' -'NFKC' -'NFKD' -'UESCAPE' -'VIEWS' -'NORMALIZE' -'DUMP' -'PRINT_STRICT_PARAMS' -'VARIABLE_CONFLICT' -'ERROR' -'USE_VARIABLE' -'USE_COLUMN' -'ALIAS' -'CONSTANT' -'PERFORM' -'GET' -'DIAGNOSTICS' -'STACKED' -'ELSIF' -'WHILE' -'REVERSE' -'FOREACH' -'SLICE' -'EXIT' -'RETURN' -'QUERY' -'RAISE' -'SQLSTATE' -'DEBUG' -'LOG' -'INFO' -'NOTICE' -'WARNING' -'EXCEPTION' -'ASSERT' -'LOOP' -'OPEN' -'ABS' -'CBRT' -'CEIL' -'CEILING' -'DEGREES' -'DIV' -'EXP' -'FACTORIAL' -'FLOOR' -'GCD' -'LCM' -'LN' -'LOG10' -'MIN_SCALE' -'MOD' -'PI' -'POWER' -'RADIANS' -'ROUND' -'SCALE' -'SIGN' -'SQRT' -'TRIM_SCALE' -'TRUNC' -'WIDTH_BUCKET' -'RANDOM' -'SETSEED' -'ACOS' -'ACOSD' -'ASIN' -'ASIND' -'ATAN' -'ATAND' -'ATAN2' -'ATAN2D' -'COS' -'COSD' -'COT' -'COTD' -'SIN' -'SIND' -'TAN' -'TAND' -'SINH' -'COSH' -'TANH' -'ASINH' -'ACOSH' -'ATANH' -'BIT_LENGTH' -'CHAR_LENGTH' -'CHARACTER_LENGTH' -'LOWER' -'OCTET_LENGTH' -'UPPER' -'ASCII' -'BTRIM' -'CHR' -'CONCAT' -'CONCAT_WS' -'FORMAT' -'INITCAP' -'LENGTH' -'LPAD' -'LTRIM' -'MD5' -'PARSE_IDENT' -'PG_CLIENT_ENCODING' -'QUOTE_IDENT' -'QUOTE_LITERAL' -'QUOTE_NULLABLE' -'REGEXP_COUNT' -'REGEXP_INSTR' -'REGEXP_LIKE' -'REGEXP_MATCH' -'REGEXP_MATCHES' -'REGEXP_REPLACE' -'REGEXP_SPLIT_TO_ARRAY' -'REGEXP_SPLIT_TO_TABLE' -'REGEXP_SUBSTR' -'REPEAT' -'RPAD' -'RTRIM' -'SPLIT_PART' -'STARTS_WITH' -'STRING_TO_ARRAY' -'STRING_TO_TABLE' -'STRPOS' -'SUBSTR' -'TO_ASCII' -'TO_HEX' -'TRANSLATE' -'UNISTR' -'AGE' -'CLOCK_TIMESTAMP' -'DATE_BIN' -'DATE_PART' -'DATE_TRUNC' -'ISFINITE' -'JUSTIFY_DAYS' -'JUSTIFY_HOURS' -'JUSTIFY_INTERVAL' -'MAKE_DATE' -'MAKE_INTERVAL' -'MAKE_TIME' -'MAKE_TIMESTAMP' -'MAKE_TIMESTAMPTZ' -'NOW' -'STATEMENT_TIMESTAMP' -'TIMEOFDAY' -'TRANSACTION_TIMESTAMP' -'TO_TIMESTAMP' -'TO_CHAR' -'TO_DATE' -'TO_NUMBER' -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 -'\'' - -token symbolic names: -null -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant -AfterEscapeStringConstantWithNewlineMode_Continued - -rule names: -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -OperatorEndingWithPlusMinus -OperatorCharacter -OperatorCharacterNotAllowPlusMinusAtEnd -OperatorCharacterAllowPlusMinusAtEnd -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -IdentifierStartChar -IdentifierChar -StrictIdentifierChar -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -BeginEscapeStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -Tag -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -Digits -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -EscapeStringText -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -InvalidEscapeStringText -AfterEscapeStringConstantMode_Whitespace -AfterEscapeStringConstantMode_Newline -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_Whitespace -AfterEscapeStringConstantWithNewlineMode_Newline -AfterEscapeStringConstantWithNewlineMode_Continued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE -EscapeStringConstantMode -AfterEscapeStringConstantMode -AfterEscapeStringConstantWithNewlineMode -DollarQuotedStringMode - -atn: -[4, 0, 679, 6791, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 4, 27, 1461, 8, 27, 11, 27, 12, 27, 1462, 1, 28, 1, 28, 1, 28, 1, 28, 4, 28, 1469, 8, 28, 11, 28, 12, 28, 1470, 1, 28, 1, 28, 1, 28, 3, 28, 1476, 8, 28, 1, 28, 1, 28, 4, 28, 1480, 8, 28, 11, 28, 12, 28, 1481, 1, 28, 3, 28, 1485, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1494, 8, 29, 10, 29, 12, 29, 1497, 9, 29, 1, 29, 1, 29, 3, 29, 1501, 8, 29, 1, 29, 1, 29, 1, 29, 4, 29, 1506, 8, 29, 11, 29, 12, 29, 1507, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 1, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 503, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 506, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 1, 524, 1, 525, 1, 525, 1, 525, 1, 525, 1, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 527, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 528, 1, 529, 1, 529, 1, 529, 1, 529, 1, 530, 1, 530, 1, 530, 1, 530, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 532, 1, 533, 1, 533, 1, 533, 1, 533, 1, 534, 1, 534, 1, 534, 1, 534, 1, 535, 1, 535, 1, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 538, 1, 538, 1, 538, 1, 538, 1, 539, 1, 539, 1, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 1, 544, 1, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 546, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 549, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 1, 553, 1, 553, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 1, 555, 1, 555, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 559, 1, 559, 1, 559, 1, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 562, 1, 562, 1, 562, 1, 562, 1, 562, 1, 563, 1, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 1, 567, 1, 567, 1, 567, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 580, 1, 581, 1, 581, 1, 581, 1, 581, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 582, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 583, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 584, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 585, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 586, 1, 587, 1, 587, 1, 587, 1, 587, 1, 587, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 588, 1, 589, 1, 589, 1, 589, 1, 589, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 592, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 593, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 595, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 596, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 597, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 600, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 612, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 613, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 617, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 620, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 625, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 631, 1, 631, 1, 631, 1, 631, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 634, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 635, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 639, 1, 639, 5, 639, 6323, 8, 639, 10, 639, 12, 639, 6326, 9, 639, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 1, 640, 3, 640, 6334, 8, 640, 1, 641, 1, 641, 3, 641, 6338, 8, 641, 1, 642, 1, 642, 3, 642, 6342, 8, 642, 1, 643, 1, 643, 1, 643, 1, 644, 1, 644, 1, 644, 1, 644, 5, 644, 6351, 8, 644, 10, 644, 12, 644, 6354, 9, 644, 1, 645, 1, 645, 1, 645, 1, 646, 1, 646, 1, 646, 1, 646, 5, 646, 6363, 8, 646, 10, 646, 12, 646, 6366, 9, 646, 1, 647, 1, 647, 1, 647, 1, 647, 1, 648, 1, 648, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 651, 1, 651, 1, 651, 1, 652, 1, 652, 1, 652, 1, 652, 5, 652, 6391, 8, 652, 10, 652, 12, 652, 6394, 9, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 1, 654, 1, 654, 1, 654, 1, 655, 1, 655, 1, 655, 1, 655, 1, 656, 1, 656, 3, 656, 6411, 8, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 5, 657, 6420, 8, 657, 10, 657, 12, 657, 6423, 9, 657, 1, 658, 1, 658, 1, 658, 1, 659, 1, 659, 1, 659, 5, 659, 6431, 8, 659, 10, 659, 12, 659, 6434, 9, 659, 1, 660, 1, 660, 1, 660, 1, 661, 1, 661, 1, 661, 1, 662, 1, 662, 1, 662, 1, 663, 1, 663, 1, 663, 5, 663, 6448, 8, 663, 10, 663, 12, 663, 6451, 9, 663, 1, 664, 1, 664, 1, 664, 1, 665, 1, 665, 1, 665, 1, 666, 1, 666, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 667, 1, 668, 1, 668, 1, 668, 3, 668, 6470, 8, 668, 1, 668, 1, 668, 3, 668, 6474, 8, 668, 1, 668, 3, 668, 6477, 8, 668, 1, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6483, 8, 668, 1, 668, 3, 668, 6486, 8, 668, 1, 668, 1, 668, 1, 668, 3, 668, 6491, 8, 668, 1, 668, 1, 668, 3, 668, 6495, 8, 668, 1, 669, 4, 669, 6498, 8, 669, 11, 669, 12, 669, 6499, 1, 670, 1, 670, 1, 670, 5, 670, 6505, 8, 670, 10, 670, 12, 670, 6508, 9, 670, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 1, 671, 5, 671, 6518, 8, 671, 10, 671, 12, 671, 6521, 9, 671, 1, 671, 1, 671, 1, 672, 4, 672, 6526, 8, 672, 11, 672, 12, 672, 6527, 1, 672, 1, 672, 1, 673, 1, 673, 3, 673, 6534, 8, 673, 1, 673, 3, 673, 6537, 8, 673, 1, 673, 1, 673, 1, 674, 1, 674, 1, 674, 1, 674, 5, 674, 6545, 8, 674, 10, 674, 12, 674, 6548, 9, 674, 1, 674, 1, 674, 1, 675, 1, 675, 1, 675, 1, 675, 5, 675, 6556, 8, 675, 10, 675, 12, 675, 6559, 9, 675, 1, 675, 1, 675, 1, 675, 4, 675, 6564, 8, 675, 11, 675, 12, 675, 6565, 1, 675, 1, 675, 4, 675, 6570, 8, 675, 11, 675, 12, 675, 6571, 1, 675, 5, 675, 6575, 8, 675, 10, 675, 12, 675, 6578, 9, 675, 1, 675, 5, 675, 6581, 8, 675, 10, 675, 12, 675, 6584, 9, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 675, 1, 676, 1, 676, 1, 676, 1, 676, 5, 676, 6595, 8, 676, 10, 676, 12, 676, 6598, 9, 676, 1, 676, 1, 676, 1, 676, 4, 676, 6603, 8, 676, 11, 676, 12, 676, 6604, 1, 676, 1, 676, 4, 676, 6609, 8, 676, 11, 676, 12, 676, 6610, 1, 676, 3, 676, 6614, 8, 676, 5, 676, 6616, 8, 676, 10, 676, 12, 676, 6619, 9, 676, 1, 676, 4, 676, 6622, 8, 676, 11, 676, 12, 676, 6623, 1, 676, 4, 676, 6627, 8, 676, 11, 676, 12, 676, 6628, 1, 676, 5, 676, 6632, 8, 676, 10, 676, 12, 676, 6635, 9, 676, 1, 676, 3, 676, 6638, 8, 676, 1, 676, 1, 676, 1, 677, 1, 677, 1, 677, 1, 677, 5, 677, 6646, 8, 677, 10, 677, 12, 677, 6649, 9, 677, 1, 677, 5, 677, 6652, 8, 677, 10, 677, 12, 677, 6655, 9, 677, 1, 677, 1, 677, 5, 677, 6659, 8, 677, 10, 677, 12, 677, 6662, 9, 677, 3, 677, 6664, 8, 677, 1, 678, 1, 678, 1, 678, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 1, 680, 1, 681, 1, 681, 3, 681, 6678, 8, 681, 1, 681, 1, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 3, 682, 6702, 8, 682, 1, 682, 5, 682, 6705, 8, 682, 10, 682, 12, 682, 6708, 9, 682, 1, 683, 1, 683, 1, 683, 1, 683, 1, 683, 1, 684, 1, 684, 3, 684, 6717, 8, 684, 1, 684, 1, 684, 1, 685, 1, 685, 1, 685, 1, 685, 1, 685, 5, 685, 6726, 8, 685, 10, 685, 12, 685, 6729, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 687, 1, 688, 1, 688, 1, 688, 1, 688, 1, 688, 1, 689, 1, 689, 1, 689, 1, 689, 1, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 692, 1, 692, 1, 692, 1, 692, 1, 692, 1, 693, 4, 693, 6768, 8, 693, 11, 693, 12, 693, 6769, 1, 693, 1, 693, 5, 693, 6774, 8, 693, 10, 693, 12, 693, 6777, 9, 693, 3, 693, 6779, 8, 693, 1, 694, 1, 694, 3, 694, 6783, 8, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 0, 0, 695, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 0, 65, 0, 67, 0, 69, 0, 71, 30, 73, 31, 75, 32, 77, 33, 79, 34, 81, 35, 83, 36, 85, 37, 87, 38, 89, 39, 91, 40, 93, 41, 95, 42, 97, 43, 99, 44, 101, 45, 103, 46, 105, 47, 107, 48, 109, 49, 111, 50, 113, 51, 115, 52, 117, 53, 119, 54, 121, 55, 123, 56, 125, 57, 127, 58, 129, 59, 131, 60, 133, 61, 135, 62, 137, 63, 139, 64, 141, 65, 143, 66, 145, 67, 147, 68, 149, 69, 151, 70, 153, 71, 155, 72, 157, 73, 159, 74, 161, 75, 163, 76, 165, 77, 167, 78, 169, 79, 171, 80, 173, 81, 175, 82, 177, 83, 179, 84, 181, 85, 183, 86, 185, 87, 187, 88, 189, 89, 191, 90, 193, 91, 195, 92, 197, 93, 199, 94, 201, 95, 203, 96, 205, 97, 207, 98, 209, 99, 211, 100, 213, 101, 215, 102, 217, 103, 219, 104, 221, 105, 223, 106, 225, 107, 227, 108, 229, 109, 231, 110, 233, 111, 235, 112, 237, 113, 239, 114, 241, 115, 243, 116, 245, 117, 247, 118, 249, 119, 251, 120, 253, 121, 255, 122, 257, 123, 259, 124, 261, 125, 263, 126, 265, 127, 267, 128, 269, 129, 271, 130, 273, 131, 275, 132, 277, 133, 279, 134, 281, 135, 283, 136, 285, 137, 287, 138, 289, 139, 291, 140, 293, 141, 295, 142, 297, 143, 299, 144, 301, 145, 303, 146, 305, 147, 307, 148, 309, 149, 311, 150, 313, 151, 315, 152, 317, 153, 319, 154, 321, 155, 323, 156, 325, 157, 327, 158, 329, 159, 331, 160, 333, 161, 335, 162, 337, 163, 339, 164, 341, 165, 343, 166, 345, 167, 347, 168, 349, 169, 351, 170, 353, 171, 355, 172, 357, 173, 359, 174, 361, 175, 363, 176, 365, 177, 367, 178, 369, 179, 371, 180, 373, 181, 375, 182, 377, 183, 379, 184, 381, 185, 383, 186, 385, 187, 387, 188, 389, 189, 391, 190, 393, 191, 395, 192, 397, 193, 399, 194, 401, 195, 403, 196, 405, 197, 407, 198, 409, 199, 411, 200, 413, 201, 415, 202, 417, 203, 419, 204, 421, 205, 423, 206, 425, 207, 427, 208, 429, 209, 431, 210, 433, 211, 435, 212, 437, 213, 439, 214, 441, 215, 443, 216, 445, 217, 447, 218, 449, 219, 451, 220, 453, 221, 455, 222, 457, 223, 459, 224, 461, 225, 463, 226, 465, 227, 467, 228, 469, 229, 471, 230, 473, 231, 475, 232, 477, 233, 479, 234, 481, 235, 483, 236, 485, 237, 487, 238, 489, 239, 491, 240, 493, 241, 495, 242, 497, 243, 499, 244, 501, 245, 503, 246, 505, 247, 507, 248, 509, 249, 511, 250, 513, 251, 515, 252, 517, 253, 519, 254, 521, 255, 523, 256, 525, 257, 527, 258, 529, 259, 531, 260, 533, 261, 535, 262, 537, 263, 539, 264, 541, 265, 543, 266, 545, 267, 547, 268, 549, 269, 551, 270, 553, 271, 555, 272, 557, 273, 559, 274, 561, 275, 563, 276, 565, 277, 567, 278, 569, 279, 571, 280, 573, 281, 575, 282, 577, 283, 579, 284, 581, 285, 583, 286, 585, 287, 587, 288, 589, 289, 591, 290, 593, 291, 595, 292, 597, 293, 599, 294, 601, 295, 603, 296, 605, 297, 607, 298, 609, 299, 611, 300, 613, 301, 615, 302, 617, 303, 619, 304, 621, 305, 623, 306, 625, 307, 627, 308, 629, 309, 631, 310, 633, 311, 635, 312, 637, 313, 639, 314, 641, 315, 643, 316, 645, 317, 647, 318, 649, 319, 651, 320, 653, 321, 655, 322, 657, 323, 659, 324, 661, 325, 663, 326, 665, 327, 667, 328, 669, 329, 671, 330, 673, 331, 675, 332, 677, 333, 679, 334, 681, 335, 683, 336, 685, 337, 687, 338, 689, 339, 691, 340, 693, 341, 695, 342, 697, 343, 699, 344, 701, 345, 703, 346, 705, 347, 707, 348, 709, 349, 711, 350, 713, 351, 715, 352, 717, 353, 719, 354, 721, 355, 723, 356, 725, 357, 727, 358, 729, 359, 731, 360, 733, 361, 735, 362, 737, 363, 739, 364, 741, 365, 743, 366, 745, 367, 747, 368, 749, 369, 751, 370, 753, 371, 755, 372, 757, 373, 759, 374, 761, 375, 763, 376, 765, 377, 767, 378, 769, 379, 771, 380, 773, 381, 775, 382, 777, 383, 779, 384, 781, 385, 783, 386, 785, 387, 787, 388, 789, 389, 791, 390, 793, 391, 795, 392, 797, 393, 799, 394, 801, 395, 803, 396, 805, 397, 807, 398, 809, 399, 811, 400, 813, 401, 815, 402, 817, 403, 819, 404, 821, 405, 823, 406, 825, 407, 827, 408, 829, 409, 831, 410, 833, 411, 835, 412, 837, 413, 839, 414, 841, 415, 843, 416, 845, 417, 847, 418, 849, 419, 851, 420, 853, 421, 855, 422, 857, 423, 859, 424, 861, 425, 863, 426, 865, 427, 867, 428, 869, 429, 871, 430, 873, 431, 875, 432, 877, 433, 879, 434, 881, 435, 883, 436, 885, 437, 887, 438, 889, 439, 891, 440, 893, 441, 895, 442, 897, 443, 899, 444, 901, 445, 903, 446, 905, 447, 907, 448, 909, 449, 911, 450, 913, 451, 915, 452, 917, 453, 919, 454, 921, 455, 923, 456, 925, 457, 927, 458, 929, 459, 931, 460, 933, 461, 935, 462, 937, 463, 939, 464, 941, 465, 943, 466, 945, 467, 947, 468, 949, 469, 951, 470, 953, 471, 955, 472, 957, 473, 959, 474, 961, 475, 963, 476, 965, 477, 967, 478, 969, 479, 971, 480, 973, 481, 975, 482, 977, 483, 979, 484, 981, 485, 983, 486, 985, 487, 987, 488, 989, 489, 991, 490, 993, 491, 995, 492, 997, 493, 999, 494, 1001, 495, 1003, 496, 1005, 497, 1007, 498, 1009, 499, 1011, 500, 1013, 501, 1015, 502, 1017, 503, 1019, 504, 1021, 505, 1023, 506, 1025, 507, 1027, 508, 1029, 509, 1031, 510, 1033, 511, 1035, 512, 1037, 513, 1039, 514, 1041, 515, 1043, 516, 1045, 517, 1047, 518, 1049, 519, 1051, 520, 1053, 521, 1055, 522, 1057, 523, 1059, 524, 1061, 525, 1063, 526, 1065, 527, 1067, 528, 1069, 529, 1071, 530, 1073, 531, 1075, 532, 1077, 533, 1079, 534, 1081, 535, 1083, 536, 1085, 537, 1087, 538, 1089, 539, 1091, 540, 1093, 541, 1095, 542, 1097, 543, 1099, 544, 1101, 545, 1103, 546, 1105, 547, 1107, 548, 1109, 549, 1111, 550, 1113, 551, 1115, 552, 1117, 553, 1119, 554, 1121, 555, 1123, 556, 1125, 557, 1127, 558, 1129, 559, 1131, 560, 1133, 561, 1135, 562, 1137, 563, 1139, 564, 1141, 565, 1143, 566, 1145, 567, 1147, 568, 1149, 569, 1151, 570, 1153, 571, 1155, 572, 1157, 573, 1159, 574, 1161, 575, 1163, 576, 1165, 577, 1167, 578, 1169, 579, 1171, 580, 1173, 581, 1175, 582, 1177, 583, 1179, 584, 1181, 585, 1183, 586, 1185, 587, 1187, 588, 1189, 589, 1191, 590, 1193, 591, 1195, 592, 1197, 593, 1199, 594, 1201, 595, 1203, 596, 1205, 597, 1207, 598, 1209, 599, 1211, 600, 1213, 601, 1215, 602, 1217, 603, 1219, 604, 1221, 605, 1223, 606, 1225, 607, 1227, 608, 1229, 609, 1231, 610, 1233, 611, 1235, 612, 1237, 613, 1239, 614, 1241, 615, 1243, 616, 1245, 617, 1247, 618, 1249, 619, 1251, 620, 1253, 621, 1255, 622, 1257, 623, 1259, 624, 1261, 625, 1263, 626, 1265, 627, 1267, 628, 1269, 629, 1271, 630, 1273, 631, 1275, 632, 1277, 633, 1279, 634, 1281, 635, 1283, 636, 1285, 0, 1287, 0, 1289, 0, 1291, 637, 1293, 638, 1295, 639, 1297, 640, 1299, 641, 1301, 642, 1303, 643, 1305, 644, 1307, 645, 1309, 646, 1311, 0, 1313, 647, 1315, 648, 1317, 649, 1319, 0, 1321, 650, 1323, 651, 1325, 652, 1327, 653, 1329, 654, 1331, 655, 1333, 656, 1335, 657, 1337, 658, 1339, 659, 1341, 660, 1343, 0, 1345, 661, 1347, 662, 1349, 663, 1351, 664, 1353, 665, 1355, 666, 1357, 667, 1359, 668, 1361, 669, 1363, 670, 1365, 671, 1367, 672, 1369, 0, 1371, 673, 1373, 674, 1375, 0, 1377, 0, 1379, 0, 1381, 675, 1383, 0, 1385, 0, 1387, 679, 1389, 676, 1391, 677, 1393, 678, 5, 0, 1, 2, 3, 4, 51, 1, 0, 48, 57, 2, 0, 43, 43, 45, 45, 9, 0, 33, 33, 35, 35, 37, 38, 42, 42, 60, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 42, 43, 60, 62, 8, 0, 33, 33, 35, 35, 37, 38, 63, 64, 94, 94, 96, 96, 124, 124, 126, 126, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 78, 78, 110, 110, 2, 0, 89, 89, 121, 121, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 90, 90, 122, 122, 2, 0, 68, 68, 100, 100, 2, 0, 82, 82, 114, 114, 2, 0, 67, 67, 99, 99, 2, 0, 77, 77, 109, 109, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 72, 72, 104, 104, 2, 0, 75, 75, 107, 107, 2, 0, 85, 85, 117, 117, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 70, 70, 102, 102, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 81, 81, 113, 113, 2, 0, 87, 87, 119, 119, 2, 0, 74, 74, 106, 106, 9, 0, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 255, 2, 0, 256, 55295, 57344, 65535, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 2, 0, 0, 0, 34, 34, 1, 0, 34, 34, 1, 0, 39, 39, 1, 0, 48, 49, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 13, 13, 2, 0, 42, 42, 47, 47, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 85, 85, 117, 117, 120, 120, 2, 0, 39, 39, 92, 92, 1, 0, 36, 36, 6863, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 709, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 713, 1, 0, 0, 0, 0, 715, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 721, 1, 0, 0, 0, 0, 723, 1, 0, 0, 0, 0, 725, 1, 0, 0, 0, 0, 727, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 847, 1, 0, 0, 0, 0, 849, 1, 0, 0, 0, 0, 851, 1, 0, 0, 0, 0, 853, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 0, 865, 1, 0, 0, 0, 0, 867, 1, 0, 0, 0, 0, 869, 1, 0, 0, 0, 0, 871, 1, 0, 0, 0, 0, 873, 1, 0, 0, 0, 0, 875, 1, 0, 0, 0, 0, 877, 1, 0, 0, 0, 0, 879, 1, 0, 0, 0, 0, 881, 1, 0, 0, 0, 0, 883, 1, 0, 0, 0, 0, 885, 1, 0, 0, 0, 0, 887, 1, 0, 0, 0, 0, 889, 1, 0, 0, 0, 0, 891, 1, 0, 0, 0, 0, 893, 1, 0, 0, 0, 0, 895, 1, 0, 0, 0, 0, 897, 1, 0, 0, 0, 0, 899, 1, 0, 0, 0, 0, 901, 1, 0, 0, 0, 0, 903, 1, 0, 0, 0, 0, 905, 1, 0, 0, 0, 0, 907, 1, 0, 0, 0, 0, 909, 1, 0, 0, 0, 0, 911, 1, 0, 0, 0, 0, 913, 1, 0, 0, 0, 0, 915, 1, 0, 0, 0, 0, 917, 1, 0, 0, 0, 0, 919, 1, 0, 0, 0, 0, 921, 1, 0, 0, 0, 0, 923, 1, 0, 0, 0, 0, 925, 1, 0, 0, 0, 0, 927, 1, 0, 0, 0, 0, 929, 1, 0, 0, 0, 0, 931, 1, 0, 0, 0, 0, 933, 1, 0, 0, 0, 0, 935, 1, 0, 0, 0, 0, 937, 1, 0, 0, 0, 0, 939, 1, 0, 0, 0, 0, 941, 1, 0, 0, 0, 0, 943, 1, 0, 0, 0, 0, 945, 1, 0, 0, 0, 0, 947, 1, 0, 0, 0, 0, 949, 1, 0, 0, 0, 0, 951, 1, 0, 0, 0, 0, 953, 1, 0, 0, 0, 0, 955, 1, 0, 0, 0, 0, 957, 1, 0, 0, 0, 0, 959, 1, 0, 0, 0, 0, 961, 1, 0, 0, 0, 0, 963, 1, 0, 0, 0, 0, 965, 1, 0, 0, 0, 0, 967, 1, 0, 0, 0, 0, 969, 1, 0, 0, 0, 0, 971, 1, 0, 0, 0, 0, 973, 1, 0, 0, 0, 0, 975, 1, 0, 0, 0, 0, 977, 1, 0, 0, 0, 0, 979, 1, 0, 0, 0, 0, 981, 1, 0, 0, 0, 0, 983, 1, 0, 0, 0, 0, 985, 1, 0, 0, 0, 0, 987, 1, 0, 0, 0, 0, 989, 1, 0, 0, 0, 0, 991, 1, 0, 0, 0, 0, 993, 1, 0, 0, 0, 0, 995, 1, 0, 0, 0, 0, 997, 1, 0, 0, 0, 0, 999, 1, 0, 0, 0, 0, 1001, 1, 0, 0, 0, 0, 1003, 1, 0, 0, 0, 0, 1005, 1, 0, 0, 0, 0, 1007, 1, 0, 0, 0, 0, 1009, 1, 0, 0, 0, 0, 1011, 1, 0, 0, 0, 0, 1013, 1, 0, 0, 0, 0, 1015, 1, 0, 0, 0, 0, 1017, 1, 0, 0, 0, 0, 1019, 1, 0, 0, 0, 0, 1021, 1, 0, 0, 0, 0, 1023, 1, 0, 0, 0, 0, 1025, 1, 0, 0, 0, 0, 1027, 1, 0, 0, 0, 0, 1029, 1, 0, 0, 0, 0, 1031, 1, 0, 0, 0, 0, 1033, 1, 0, 0, 0, 0, 1035, 1, 0, 0, 0, 0, 1037, 1, 0, 0, 0, 0, 1039, 1, 0, 0, 0, 0, 1041, 1, 0, 0, 0, 0, 1043, 1, 0, 0, 0, 0, 1045, 1, 0, 0, 0, 0, 1047, 1, 0, 0, 0, 0, 1049, 1, 0, 0, 0, 0, 1051, 1, 0, 0, 0, 0, 1053, 1, 0, 0, 0, 0, 1055, 1, 0, 0, 0, 0, 1057, 1, 0, 0, 0, 0, 1059, 1, 0, 0, 0, 0, 1061, 1, 0, 0, 0, 0, 1063, 1, 0, 0, 0, 0, 1065, 1, 0, 0, 0, 0, 1067, 1, 0, 0, 0, 0, 1069, 1, 0, 0, 0, 0, 1071, 1, 0, 0, 0, 0, 1073, 1, 0, 0, 0, 0, 1075, 1, 0, 0, 0, 0, 1077, 1, 0, 0, 0, 0, 1079, 1, 0, 0, 0, 0, 1081, 1, 0, 0, 0, 0, 1083, 1, 0, 0, 0, 0, 1085, 1, 0, 0, 0, 0, 1087, 1, 0, 0, 0, 0, 1089, 1, 0, 0, 0, 0, 1091, 1, 0, 0, 0, 0, 1093, 1, 0, 0, 0, 0, 1095, 1, 0, 0, 0, 0, 1097, 1, 0, 0, 0, 0, 1099, 1, 0, 0, 0, 0, 1101, 1, 0, 0, 0, 0, 1103, 1, 0, 0, 0, 0, 1105, 1, 0, 0, 0, 0, 1107, 1, 0, 0, 0, 0, 1109, 1, 0, 0, 0, 0, 1111, 1, 0, 0, 0, 0, 1113, 1, 0, 0, 0, 0, 1115, 1, 0, 0, 0, 0, 1117, 1, 0, 0, 0, 0, 1119, 1, 0, 0, 0, 0, 1121, 1, 0, 0, 0, 0, 1123, 1, 0, 0, 0, 0, 1125, 1, 0, 0, 0, 0, 1127, 1, 0, 0, 0, 0, 1129, 1, 0, 0, 0, 0, 1131, 1, 0, 0, 0, 0, 1133, 1, 0, 0, 0, 0, 1135, 1, 0, 0, 0, 0, 1137, 1, 0, 0, 0, 0, 1139, 1, 0, 0, 0, 0, 1141, 1, 0, 0, 0, 0, 1143, 1, 0, 0, 0, 0, 1145, 1, 0, 0, 0, 0, 1147, 1, 0, 0, 0, 0, 1149, 1, 0, 0, 0, 0, 1151, 1, 0, 0, 0, 0, 1153, 1, 0, 0, 0, 0, 1155, 1, 0, 0, 0, 0, 1157, 1, 0, 0, 0, 0, 1159, 1, 0, 0, 0, 0, 1161, 1, 0, 0, 0, 0, 1163, 1, 0, 0, 0, 0, 1165, 1, 0, 0, 0, 0, 1167, 1, 0, 0, 0, 0, 1169, 1, 0, 0, 0, 0, 1171, 1, 0, 0, 0, 0, 1173, 1, 0, 0, 0, 0, 1175, 1, 0, 0, 0, 0, 1177, 1, 0, 0, 0, 0, 1179, 1, 0, 0, 0, 0, 1181, 1, 0, 0, 0, 0, 1183, 1, 0, 0, 0, 0, 1185, 1, 0, 0, 0, 0, 1187, 1, 0, 0, 0, 0, 1189, 1, 0, 0, 0, 0, 1191, 1, 0, 0, 0, 0, 1193, 1, 0, 0, 0, 0, 1195, 1, 0, 0, 0, 0, 1197, 1, 0, 0, 0, 0, 1199, 1, 0, 0, 0, 0, 1201, 1, 0, 0, 0, 0, 1203, 1, 0, 0, 0, 0, 1205, 1, 0, 0, 0, 0, 1207, 1, 0, 0, 0, 0, 1209, 1, 0, 0, 0, 0, 1211, 1, 0, 0, 0, 0, 1213, 1, 0, 0, 0, 0, 1215, 1, 0, 0, 0, 0, 1217, 1, 0, 0, 0, 0, 1219, 1, 0, 0, 0, 0, 1221, 1, 0, 0, 0, 0, 1223, 1, 0, 0, 0, 0, 1225, 1, 0, 0, 0, 0, 1227, 1, 0, 0, 0, 0, 1229, 1, 0, 0, 0, 0, 1231, 1, 0, 0, 0, 0, 1233, 1, 0, 0, 0, 0, 1235, 1, 0, 0, 0, 0, 1237, 1, 0, 0, 0, 0, 1239, 1, 0, 0, 0, 0, 1241, 1, 0, 0, 0, 0, 1243, 1, 0, 0, 0, 0, 1245, 1, 0, 0, 0, 0, 1247, 1, 0, 0, 0, 0, 1249, 1, 0, 0, 0, 0, 1251, 1, 0, 0, 0, 0, 1253, 1, 0, 0, 0, 0, 1255, 1, 0, 0, 0, 0, 1257, 1, 0, 0, 0, 0, 1259, 1, 0, 0, 0, 0, 1261, 1, 0, 0, 0, 0, 1263, 1, 0, 0, 0, 0, 1265, 1, 0, 0, 0, 0, 1267, 1, 0, 0, 0, 0, 1269, 1, 0, 0, 0, 0, 1271, 1, 0, 0, 0, 0, 1273, 1, 0, 0, 0, 0, 1275, 1, 0, 0, 0, 0, 1277, 1, 0, 0, 0, 0, 1279, 1, 0, 0, 0, 0, 1281, 1, 0, 0, 0, 0, 1283, 1, 0, 0, 0, 0, 1291, 1, 0, 0, 0, 0, 1293, 1, 0, 0, 0, 0, 1295, 1, 0, 0, 0, 0, 1297, 1, 0, 0, 0, 0, 1299, 1, 0, 0, 0, 0, 1301, 1, 0, 0, 0, 0, 1303, 1, 0, 0, 0, 0, 1305, 1, 0, 0, 0, 0, 1307, 1, 0, 0, 0, 0, 1309, 1, 0, 0, 0, 0, 1311, 1, 0, 0, 0, 0, 1313, 1, 0, 0, 0, 0, 1315, 1, 0, 0, 0, 0, 1317, 1, 0, 0, 0, 0, 1321, 1, 0, 0, 0, 0, 1323, 1, 0, 0, 0, 0, 1325, 1, 0, 0, 0, 0, 1327, 1, 0, 0, 0, 0, 1329, 1, 0, 0, 0, 0, 1331, 1, 0, 0, 0, 0, 1333, 1, 0, 0, 0, 0, 1335, 1, 0, 0, 0, 0, 1337, 1, 0, 0, 0, 0, 1339, 1, 0, 0, 0, 0, 1341, 1, 0, 0, 0, 0, 1345, 1, 0, 0, 0, 0, 1347, 1, 0, 0, 0, 0, 1349, 1, 0, 0, 0, 0, 1351, 1, 0, 0, 0, 0, 1353, 1, 0, 0, 0, 0, 1355, 1, 0, 0, 0, 0, 1357, 1, 0, 0, 0, 0, 1359, 1, 0, 0, 0, 0, 1361, 1, 0, 0, 0, 0, 1363, 1, 0, 0, 0, 1, 1365, 1, 0, 0, 0, 1, 1367, 1, 0, 0, 0, 1, 1371, 1, 0, 0, 0, 1, 1373, 1, 0, 0, 0, 2, 1377, 1, 0, 0, 0, 2, 1379, 1, 0, 0, 0, 2, 1381, 1, 0, 0, 0, 3, 1383, 1, 0, 0, 0, 3, 1385, 1, 0, 0, 0, 3, 1387, 1, 0, 0, 0, 3, 1389, 1, 0, 0, 0, 4, 1391, 1, 0, 0, 0, 4, 1393, 1, 0, 0, 0, 5, 1395, 1, 0, 0, 0, 7, 1397, 1, 0, 0, 0, 9, 1399, 1, 0, 0, 0, 11, 1401, 1, 0, 0, 0, 13, 1403, 1, 0, 0, 0, 15, 1405, 1, 0, 0, 0, 17, 1407, 1, 0, 0, 0, 19, 1409, 1, 0, 0, 0, 21, 1411, 1, 0, 0, 0, 23, 1413, 1, 0, 0, 0, 25, 1415, 1, 0, 0, 0, 27, 1417, 1, 0, 0, 0, 29, 1419, 1, 0, 0, 0, 31, 1421, 1, 0, 0, 0, 33, 1423, 1, 0, 0, 0, 35, 1425, 1, 0, 0, 0, 37, 1427, 1, 0, 0, 0, 39, 1429, 1, 0, 0, 0, 41, 1432, 1, 0, 0, 0, 43, 1435, 1, 0, 0, 0, 45, 1438, 1, 0, 0, 0, 47, 1441, 1, 0, 0, 0, 49, 1444, 1, 0, 0, 0, 51, 1447, 1, 0, 0, 0, 53, 1450, 1, 0, 0, 0, 55, 1453, 1, 0, 0, 0, 57, 1456, 1, 0, 0, 0, 59, 1458, 1, 0, 0, 0, 61, 1484, 1, 0, 0, 0, 63, 1495, 1, 0, 0, 0, 65, 1511, 1, 0, 0, 0, 67, 1513, 1, 0, 0, 0, 69, 1515, 1, 0, 0, 0, 71, 1517, 1, 0, 0, 0, 73, 1521, 1, 0, 0, 0, 75, 1529, 1, 0, 0, 0, 77, 1537, 1, 0, 0, 0, 79, 1541, 1, 0, 0, 0, 81, 1545, 1, 0, 0, 0, 83, 1551, 1, 0, 0, 0, 85, 1554, 1, 0, 0, 0, 87, 1558, 1, 0, 0, 0, 89, 1569, 1, 0, 0, 0, 91, 1574, 1, 0, 0, 0, 93, 1579, 1, 0, 0, 0, 95, 1584, 1, 0, 0, 0, 97, 1590, 1, 0, 0, 0, 99, 1598, 1, 0, 0, 0, 101, 1605, 1, 0, 0, 0, 103, 1616, 1, 0, 0, 0, 105, 1623, 1, 0, 0, 0, 107, 1639, 1, 0, 0, 0, 109, 1652, 1, 0, 0, 0, 111, 1665, 1, 0, 0, 0, 113, 1678, 1, 0, 0, 0, 115, 1696, 1, 0, 0, 0, 117, 1709, 1, 0, 0, 0, 119, 1717, 1, 0, 0, 0, 121, 1728, 1, 0, 0, 0, 123, 1733, 1, 0, 0, 0, 125, 1742, 1, 0, 0, 0, 127, 1745, 1, 0, 0, 0, 129, 1750, 1, 0, 0, 0, 131, 1757, 1, 0, 0, 0, 133, 1763, 1, 0, 0, 0, 135, 1769, 1, 0, 0, 0, 137, 1773, 1, 0, 0, 0, 139, 1781, 1, 0, 0, 0, 141, 1786, 1, 0, 0, 0, 143, 1792, 1, 0, 0, 0, 145, 1798, 1, 0, 0, 0, 147, 1805, 1, 0, 0, 0, 149, 1808, 1, 0, 0, 0, 151, 1818, 1, 0, 0, 0, 153, 1828, 1, 0, 0, 0, 155, 1833, 1, 0, 0, 0, 157, 1841, 1, 0, 0, 0, 159, 1849, 1, 0, 0, 0, 161, 1855, 1, 0, 0, 0, 163, 1865, 1, 0, 0, 0, 165, 1880, 1, 0, 0, 0, 167, 1884, 1, 0, 0, 0, 169, 1889, 1, 0, 0, 0, 171, 1896, 1, 0, 0, 0, 173, 1899, 1, 0, 0, 0, 175, 1904, 1, 0, 0, 0, 177, 1907, 1, 0, 0, 0, 179, 1913, 1, 0, 0, 0, 181, 1921, 1, 0, 0, 0, 183, 1929, 1, 0, 0, 0, 185, 1940, 1, 0, 0, 0, 187, 1950, 1, 0, 0, 0, 189, 1957, 1, 0, 0, 0, 191, 1970, 1, 0, 0, 0, 193, 1975, 1, 0, 0, 0, 195, 1985, 1, 0, 0, 0, 197, 1991, 1, 0, 0, 0, 199, 1996, 1, 0, 0, 0, 201, 1999, 1, 0, 0, 0, 203, 2008, 1, 0, 0, 0, 205, 2013, 1, 0, 0, 0, 207, 2019, 1, 0, 0, 0, 209, 2026, 1, 0, 0, 0, 211, 2031, 1, 0, 0, 0, 213, 2037, 1, 0, 0, 0, 215, 2046, 1, 0, 0, 0, 217, 2051, 1, 0, 0, 0, 219, 2057, 1, 0, 0, 0, 221, 2064, 1, 0, 0, 0, 223, 2069, 1, 0, 0, 0, 225, 2083, 1, 0, 0, 0, 227, 2090, 1, 0, 0, 0, 229, 2100, 1, 0, 0, 0, 231, 2113, 1, 0, 0, 0, 233, 2119, 1, 0, 0, 0, 235, 2134, 1, 0, 0, 0, 237, 2141, 1, 0, 0, 0, 239, 2146, 1, 0, 0, 0, 241, 2152, 1, 0, 0, 0, 243, 2158, 1, 0, 0, 0, 245, 2161, 1, 0, 0, 0, 247, 2168, 1, 0, 0, 0, 249, 2173, 1, 0, 0, 0, 251, 2178, 1, 0, 0, 0, 253, 2183, 1, 0, 0, 0, 255, 2191, 1, 0, 0, 0, 257, 2199, 1, 0, 0, 0, 259, 2205, 1, 0, 0, 0, 261, 2210, 1, 0, 0, 0, 263, 2219, 1, 0, 0, 0, 265, 2225, 1, 0, 0, 0, 267, 2233, 1, 0, 0, 0, 269, 2241, 1, 0, 0, 0, 271, 2247, 1, 0, 0, 0, 273, 2256, 1, 0, 0, 0, 275, 2263, 1, 0, 0, 0, 277, 2270, 1, 0, 0, 0, 279, 2274, 1, 0, 0, 0, 281, 2280, 1, 0, 0, 0, 283, 2286, 1, 0, 0, 0, 285, 2296, 1, 0, 0, 0, 287, 2301, 1, 0, 0, 0, 289, 2307, 1, 0, 0, 0, 291, 2314, 1, 0, 0, 0, 293, 2324, 1, 0, 0, 0, 295, 2335, 1, 0, 0, 0, 297, 2338, 1, 0, 0, 0, 299, 2348, 1, 0, 0, 0, 301, 2357, 1, 0, 0, 0, 303, 2364, 1, 0, 0, 0, 305, 2370, 1, 0, 0, 0, 307, 2373, 1, 0, 0, 0, 309, 2379, 1, 0, 0, 0, 311, 2386, 1, 0, 0, 0, 313, 2394, 1, 0, 0, 0, 315, 2403, 1, 0, 0, 0, 317, 2411, 1, 0, 0, 0, 319, 2417, 1, 0, 0, 0, 321, 2433, 1, 0, 0, 0, 323, 2444, 1, 0, 0, 0, 325, 2450, 1, 0, 0, 0, 327, 2456, 1, 0, 0, 0, 329, 2464, 1, 0, 0, 0, 331, 2472, 1, 0, 0, 0, 333, 2481, 1, 0, 0, 0, 335, 2488, 1, 0, 0, 0, 337, 2498, 1, 0, 0, 0, 339, 2512, 1, 0, 0, 0, 341, 2523, 1, 0, 0, 0, 343, 2535, 1, 0, 0, 0, 345, 2543, 1, 0, 0, 0, 347, 2552, 1, 0, 0, 0, 349, 2563, 1, 0, 0, 0, 351, 2568, 1, 0, 0, 0, 353, 2573, 1, 0, 0, 0, 355, 2577, 1, 0, 0, 0, 357, 2584, 1, 0, 0, 0, 359, 2590, 1, 0, 0, 0, 361, 2595, 1, 0, 0, 0, 363, 2604, 1, 0, 0, 0, 365, 2608, 1, 0, 0, 0, 367, 2619, 1, 0, 0, 0, 369, 2627, 1, 0, 0, 0, 371, 2636, 1, 0, 0, 0, 373, 2645, 1, 0, 0, 0, 375, 2653, 1, 0, 0, 0, 377, 2660, 1, 0, 0, 0, 379, 2670, 1, 0, 0, 0, 381, 2681, 1, 0, 0, 0, 383, 2692, 1, 0, 0, 0, 385, 2700, 1, 0, 0, 0, 387, 2708, 1, 0, 0, 0, 389, 2717, 1, 0, 0, 0, 391, 2724, 1, 0, 0, 0, 393, 2731, 1, 0, 0, 0, 395, 2736, 1, 0, 0, 0, 397, 2741, 1, 0, 0, 0, 399, 2748, 1, 0, 0, 0, 401, 2757, 1, 0, 0, 0, 403, 2767, 1, 0, 0, 0, 405, 2772, 1, 0, 0, 0, 407, 2779, 1, 0, 0, 0, 409, 2785, 1, 0, 0, 0, 411, 2793, 1, 0, 0, 0, 413, 2803, 1, 0, 0, 0, 415, 2813, 1, 0, 0, 0, 417, 2821, 1, 0, 0, 0, 419, 2829, 1, 0, 0, 0, 421, 2839, 1, 0, 0, 0, 423, 2848, 1, 0, 0, 0, 425, 2855, 1, 0, 0, 0, 427, 2861, 1, 0, 0, 0, 429, 2871, 1, 0, 0, 0, 431, 2877, 1, 0, 0, 0, 433, 2885, 1, 0, 0, 0, 435, 2894, 1, 0, 0, 0, 437, 2904, 1, 0, 0, 0, 439, 2911, 1, 0, 0, 0, 441, 2919, 1, 0, 0, 0, 443, 2927, 1, 0, 0, 0, 445, 2934, 1, 0, 0, 0, 447, 2939, 1, 0, 0, 0, 449, 2944, 1, 0, 0, 0, 451, 2953, 1, 0, 0, 0, 453, 2956, 1, 0, 0, 0, 455, 2966, 1, 0, 0, 0, 457, 2976, 1, 0, 0, 0, 459, 2985, 1, 0, 0, 0, 461, 2995, 1, 0, 0, 0, 463, 3005, 1, 0, 0, 0, 465, 3011, 1, 0, 0, 0, 467, 3019, 1, 0, 0, 0, 469, 3027, 1, 0, 0, 0, 471, 3036, 1, 0, 0, 0, 473, 3043, 1, 0, 0, 0, 475, 3055, 1, 0, 0, 0, 477, 3062, 1, 0, 0, 0, 479, 3070, 1, 0, 0, 0, 481, 3078, 1, 0, 0, 0, 483, 3088, 1, 0, 0, 0, 485, 3092, 1, 0, 0, 0, 487, 3098, 1, 0, 0, 0, 489, 3107, 1, 0, 0, 0, 491, 3113, 1, 0, 0, 0, 493, 3118, 1, 0, 0, 0, 495, 3128, 1, 0, 0, 0, 497, 3134, 1, 0, 0, 0, 499, 3141, 1, 0, 0, 0, 501, 3146, 1, 0, 0, 0, 503, 3152, 1, 0, 0, 0, 505, 3161, 1, 0, 0, 0, 507, 3166, 1, 0, 0, 0, 509, 3174, 1, 0, 0, 0, 511, 3180, 1, 0, 0, 0, 513, 3188, 1, 0, 0, 0, 515, 3201, 1, 0, 0, 0, 517, 3210, 1, 0, 0, 0, 519, 3216, 1, 0, 0, 0, 521, 3223, 1, 0, 0, 0, 523, 3232, 1, 0, 0, 0, 525, 3237, 1, 0, 0, 0, 527, 3243, 1, 0, 0, 0, 529, 3248, 1, 0, 0, 0, 531, 3253, 1, 0, 0, 0, 533, 3259, 1, 0, 0, 0, 535, 3264, 1, 0, 0, 0, 537, 3267, 1, 0, 0, 0, 539, 3275, 1, 0, 0, 0, 541, 3282, 1, 0, 0, 0, 543, 3289, 1, 0, 0, 0, 545, 3295, 1, 0, 0, 0, 547, 3302, 1, 0, 0, 0, 549, 3305, 1, 0, 0, 0, 551, 3309, 1, 0, 0, 0, 553, 3314, 1, 0, 0, 0, 555, 3323, 1, 0, 0, 0, 557, 3330, 1, 0, 0, 0, 559, 3338, 1, 0, 0, 0, 561, 3344, 1, 0, 0, 0, 563, 3350, 1, 0, 0, 0, 565, 3357, 1, 0, 0, 0, 567, 3365, 1, 0, 0, 0, 569, 3375, 1, 0, 0, 0, 571, 3383, 1, 0, 0, 0, 573, 3392, 1, 0, 0, 0, 575, 3398, 1, 0, 0, 0, 577, 3408, 1, 0, 0, 0, 579, 3416, 1, 0, 0, 0, 581, 3425, 1, 0, 0, 0, 583, 3434, 1, 0, 0, 0, 585, 3440, 1, 0, 0, 0, 587, 3451, 1, 0, 0, 0, 589, 3462, 1, 0, 0, 0, 591, 3472, 1, 0, 0, 0, 593, 3480, 1, 0, 0, 0, 595, 3486, 1, 0, 0, 0, 597, 3492, 1, 0, 0, 0, 599, 3497, 1, 0, 0, 0, 601, 3506, 1, 0, 0, 0, 603, 3514, 1, 0, 0, 0, 605, 3524, 1, 0, 0, 0, 607, 3528, 1, 0, 0, 0, 609, 3536, 1, 0, 0, 0, 611, 3544, 1, 0, 0, 0, 613, 3553, 1, 0, 0, 0, 615, 3561, 1, 0, 0, 0, 617, 3568, 1, 0, 0, 0, 619, 3579, 1, 0, 0, 0, 621, 3587, 1, 0, 0, 0, 623, 3595, 1, 0, 0, 0, 625, 3601, 1, 0, 0, 0, 627, 3609, 1, 0, 0, 0, 629, 3618, 1, 0, 0, 0, 631, 3626, 1, 0, 0, 0, 633, 3633, 1, 0, 0, 0, 635, 3638, 1, 0, 0, 0, 637, 3647, 1, 0, 0, 0, 639, 3652, 1, 0, 0, 0, 641, 3657, 1, 0, 0, 0, 643, 3667, 1, 0, 0, 0, 645, 3674, 1, 0, 0, 0, 647, 3681, 1, 0, 0, 0, 649, 3688, 1, 0, 0, 0, 651, 3695, 1, 0, 0, 0, 653, 3704, 1, 0, 0, 0, 655, 3713, 1, 0, 0, 0, 657, 3723, 1, 0, 0, 0, 659, 3736, 1, 0, 0, 0, 661, 3743, 1, 0, 0, 0, 663, 3751, 1, 0, 0, 0, 665, 3755, 1, 0, 0, 0, 667, 3761, 1, 0, 0, 0, 669, 3766, 1, 0, 0, 0, 671, 3773, 1, 0, 0, 0, 673, 3782, 1, 0, 0, 0, 675, 3789, 1, 0, 0, 0, 677, 3800, 1, 0, 0, 0, 679, 3806, 1, 0, 0, 0, 681, 3816, 1, 0, 0, 0, 683, 3827, 1, 0, 0, 0, 685, 3833, 1, 0, 0, 0, 687, 3840, 1, 0, 0, 0, 689, 3848, 1, 0, 0, 0, 691, 3855, 1, 0, 0, 0, 693, 3861, 1, 0, 0, 0, 695, 3867, 1, 0, 0, 0, 697, 3874, 1, 0, 0, 0, 699, 3881, 1, 0, 0, 0, 701, 3892, 1, 0, 0, 0, 703, 3897, 1, 0, 0, 0, 705, 3906, 1, 0, 0, 0, 707, 3916, 1, 0, 0, 0, 709, 3921, 1, 0, 0, 0, 711, 3933, 1, 0, 0, 0, 713, 3941, 1, 0, 0, 0, 715, 3950, 1, 0, 0, 0, 717, 3958, 1, 0, 0, 0, 719, 3963, 1, 0, 0, 0, 721, 3969, 1, 0, 0, 0, 723, 3979, 1, 0, 0, 0, 725, 3991, 1, 0, 0, 0, 727, 4003, 1, 0, 0, 0, 729, 4011, 1, 0, 0, 0, 731, 4020, 1, 0, 0, 0, 733, 4029, 1, 0, 0, 0, 735, 4035, 1, 0, 0, 0, 737, 4042, 1, 0, 0, 0, 739, 4049, 1, 0, 0, 0, 741, 4055, 1, 0, 0, 0, 743, 4064, 1, 0, 0, 0, 745, 4074, 1, 0, 0, 0, 747, 4082, 1, 0, 0, 0, 749, 4090, 1, 0, 0, 0, 751, 4095, 1, 0, 0, 0, 753, 4104, 1, 0, 0, 0, 755, 4115, 1, 0, 0, 0, 757, 4123, 1, 0, 0, 0, 759, 4128, 1, 0, 0, 0, 761, 4136, 1, 0, 0, 0, 763, 4142, 1, 0, 0, 0, 765, 4146, 1, 0, 0, 0, 767, 4151, 1, 0, 0, 0, 769, 4155, 1, 0, 0, 0, 771, 4160, 1, 0, 0, 0, 773, 4168, 1, 0, 0, 0, 775, 4175, 1, 0, 0, 0, 777, 4179, 1, 0, 0, 0, 779, 4187, 1, 0, 0, 0, 781, 4192, 1, 0, 0, 0, 783, 4202, 1, 0, 0, 0, 785, 4211, 1, 0, 0, 0, 787, 4215, 1, 0, 0, 0, 789, 4223, 1, 0, 0, 0, 791, 4230, 1, 0, 0, 0, 793, 4238, 1, 0, 0, 0, 795, 4244, 1, 0, 0, 0, 797, 4253, 1, 0, 0, 0, 799, 4259, 1, 0, 0, 0, 801, 4263, 1, 0, 0, 0, 803, 4271, 1, 0, 0, 0, 805, 4280, 1, 0, 0, 0, 807, 4286, 1, 0, 0, 0, 809, 4295, 1, 0, 0, 0, 811, 4301, 1, 0, 0, 0, 813, 4306, 1, 0, 0, 0, 815, 4313, 1, 0, 0, 0, 817, 4321, 1, 0, 0, 0, 819, 4329, 1, 0, 0, 0, 821, 4338, 1, 0, 0, 0, 823, 4348, 1, 0, 0, 0, 825, 4353, 1, 0, 0, 0, 827, 4357, 1, 0, 0, 0, 829, 4363, 1, 0, 0, 0, 831, 4372, 1, 0, 0, 0, 833, 4382, 1, 0, 0, 0, 835, 4387, 1, 0, 0, 0, 837, 4397, 1, 0, 0, 0, 839, 4403, 1, 0, 0, 0, 841, 4408, 1, 0, 0, 0, 843, 4415, 1, 0, 0, 0, 845, 4423, 1, 0, 0, 0, 847, 4437, 1, 0, 0, 0, 849, 4448, 1, 0, 0, 0, 851, 4455, 1, 0, 0, 0, 853, 4474, 1, 0, 0, 0, 855, 4502, 1, 0, 0, 0, 857, 4529, 1, 0, 0, 0, 859, 4535, 1, 0, 0, 0, 861, 4548, 1, 0, 0, 0, 863, 4558, 1, 0, 0, 0, 865, 4569, 1, 0, 0, 0, 867, 4579, 1, 0, 0, 0, 869, 4589, 1, 0, 0, 0, 871, 4598, 1, 0, 0, 0, 873, 4604, 1, 0, 0, 0, 875, 4612, 1, 0, 0, 0, 877, 4625, 1, 0, 0, 0, 879, 4630, 1, 0, 0, 0, 881, 4638, 1, 0, 0, 0, 883, 4645, 1, 0, 0, 0, 885, 4652, 1, 0, 0, 0, 887, 4663, 1, 0, 0, 0, 889, 4673, 1, 0, 0, 0, 891, 4680, 1, 0, 0, 0, 893, 4687, 1, 0, 0, 0, 895, 4695, 1, 0, 0, 0, 897, 4703, 1, 0, 0, 0, 899, 4713, 1, 0, 0, 0, 901, 4720, 1, 0, 0, 0, 903, 4727, 1, 0, 0, 0, 905, 4734, 1, 0, 0, 0, 907, 4746, 1, 0, 0, 0, 909, 4750, 1, 0, 0, 0, 911, 4754, 1, 0, 0, 0, 913, 4760, 1, 0, 0, 0, 915, 4773, 1, 0, 0, 0, 917, 4785, 1, 0, 0, 0, 919, 4789, 1, 0, 0, 0, 921, 4793, 1, 0, 0, 0, 923, 4802, 1, 0, 0, 0, 925, 4810, 1, 0, 0, 0, 927, 4821, 1, 0, 0, 0, 929, 4827, 1, 0, 0, 0, 931, 4835, 1, 0, 0, 0, 933, 4844, 1, 0, 0, 0, 935, 4848, 1, 0, 0, 0, 937, 4856, 1, 0, 0, 0, 939, 4867, 1, 0, 0, 0, 941, 4876, 1, 0, 0, 0, 943, 4881, 1, 0, 0, 0, 945, 4888, 1, 0, 0, 0, 947, 4893, 1, 0, 0, 0, 949, 4900, 1, 0, 0, 0, 951, 4905, 1, 0, 0, 0, 953, 4914, 1, 0, 0, 0, 955, 4919, 1, 0, 0, 0, 957, 4931, 1, 0, 0, 0, 959, 4942, 1, 0, 0, 0, 961, 4951, 1, 0, 0, 0, 963, 4959, 1, 0, 0, 0, 965, 4973, 1, 0, 0, 0, 967, 4981, 1, 0, 0, 0, 969, 4992, 1, 0, 0, 0, 971, 4999, 1, 0, 0, 0, 973, 5006, 1, 0, 0, 0, 975, 5013, 1, 0, 0, 0, 977, 5020, 1, 0, 0, 0, 979, 5024, 1, 0, 0, 0, 981, 5028, 1, 0, 0, 0, 983, 5033, 1, 0, 0, 0, 985, 5038, 1, 0, 0, 0, 987, 5046, 1, 0, 0, 0, 989, 5052, 1, 0, 0, 0, 991, 5062, 1, 0, 0, 0, 993, 5067, 1, 0, 0, 0, 995, 5087, 1, 0, 0, 0, 997, 5105, 1, 0, 0, 0, 999, 5111, 1, 0, 0, 0, 1001, 5124, 1, 0, 0, 0, 1003, 5135, 1, 0, 0, 0, 1005, 5141, 1, 0, 0, 0, 1007, 5150, 1, 0, 0, 0, 1009, 5158, 1, 0, 0, 0, 1011, 5162, 1, 0, 0, 0, 1013, 5174, 1, 0, 0, 0, 1015, 5182, 1, 0, 0, 0, 1017, 5188, 1, 0, 0, 0, 1019, 5194, 1, 0, 0, 0, 1021, 5202, 1, 0, 0, 0, 1023, 5210, 1, 0, 0, 0, 1025, 5216, 1, 0, 0, 0, 1027, 5221, 1, 0, 0, 0, 1029, 5228, 1, 0, 0, 0, 1031, 5234, 1, 0, 0, 0, 1033, 5240, 1, 0, 0, 0, 1035, 5249, 1, 0, 0, 0, 1037, 5255, 1, 0, 0, 0, 1039, 5259, 1, 0, 0, 0, 1041, 5264, 1, 0, 0, 0, 1043, 5271, 1, 0, 0, 0, 1045, 5279, 1, 0, 0, 0, 1047, 5289, 1, 0, 0, 0, 1049, 5296, 1, 0, 0, 0, 1051, 5301, 1, 0, 0, 0, 1053, 5306, 1, 0, 0, 0, 1055, 5310, 1, 0, 0, 0, 1057, 5315, 1, 0, 0, 0, 1059, 5320, 1, 0, 0, 0, 1061, 5328, 1, 0, 0, 0, 1063, 5336, 1, 0, 0, 0, 1065, 5340, 1, 0, 0, 0, 1067, 5344, 1, 0, 0, 0, 1069, 5354, 1, 0, 0, 0, 1071, 5360, 1, 0, 0, 0, 1073, 5364, 1, 0, 0, 0, 1075, 5368, 1, 0, 0, 0, 1077, 5371, 1, 0, 0, 0, 1079, 5377, 1, 0, 0, 0, 1081, 5387, 1, 0, 0, 0, 1083, 5391, 1, 0, 0, 0, 1085, 5394, 1, 0, 0, 0, 1087, 5400, 1, 0, 0, 0, 1089, 5408, 1, 0, 0, 0, 1091, 5414, 1, 0, 0, 0, 1093, 5420, 1, 0, 0, 0, 1095, 5425, 1, 0, 0, 0, 1097, 5430, 1, 0, 0, 0, 1099, 5441, 1, 0, 0, 0, 1101, 5447, 1, 0, 0, 0, 1103, 5460, 1, 0, 0, 0, 1105, 5467, 1, 0, 0, 0, 1107, 5475, 1, 0, 0, 0, 1109, 5480, 1, 0, 0, 0, 1111, 5486, 1, 0, 0, 0, 1113, 5491, 1, 0, 0, 0, 1115, 5497, 1, 0, 0, 0, 1117, 5502, 1, 0, 0, 0, 1119, 5508, 1, 0, 0, 0, 1121, 5514, 1, 0, 0, 0, 1123, 5521, 1, 0, 0, 0, 1125, 5525, 1, 0, 0, 0, 1127, 5530, 1, 0, 0, 0, 1129, 5534, 1, 0, 0, 0, 1131, 5539, 1, 0, 0, 0, 1133, 5543, 1, 0, 0, 0, 1135, 5548, 1, 0, 0, 0, 1137, 5552, 1, 0, 0, 0, 1139, 5557, 1, 0, 0, 0, 1141, 5562, 1, 0, 0, 0, 1143, 5567, 1, 0, 0, 0, 1145, 5572, 1, 0, 0, 0, 1147, 5578, 1, 0, 0, 0, 1149, 5584, 1, 0, 0, 0, 1151, 5590, 1, 0, 0, 0, 1153, 5601, 1, 0, 0, 0, 1155, 5613, 1, 0, 0, 0, 1157, 5630, 1, 0, 0, 0, 1159, 5636, 1, 0, 0, 0, 1161, 5649, 1, 0, 0, 0, 1163, 5655, 1, 0, 0, 0, 1165, 5661, 1, 0, 0, 0, 1167, 5667, 1, 0, 0, 0, 1169, 5671, 1, 0, 0, 0, 1171, 5678, 1, 0, 0, 0, 1173, 5688, 1, 0, 0, 0, 1175, 5695, 1, 0, 0, 0, 1177, 5703, 1, 0, 0, 0, 1179, 5710, 1, 0, 0, 0, 1181, 5715, 1, 0, 0, 0, 1183, 5721, 1, 0, 0, 0, 1185, 5725, 1, 0, 0, 0, 1187, 5737, 1, 0, 0, 0, 1189, 5756, 1, 0, 0, 0, 1191, 5768, 1, 0, 0, 0, 1193, 5782, 1, 0, 0, 0, 1195, 5797, 1, 0, 0, 0, 1197, 5810, 1, 0, 0, 0, 1199, 5823, 1, 0, 0, 0, 1201, 5835, 1, 0, 0, 0, 1203, 5848, 1, 0, 0, 0, 1205, 5863, 1, 0, 0, 0, 1207, 5878, 1, 0, 0, 0, 1209, 5900, 1, 0, 0, 0, 1211, 5922, 1, 0, 0, 0, 1213, 5936, 1, 0, 0, 0, 1215, 5943, 1, 0, 0, 0, 1217, 5948, 1, 0, 0, 0, 1219, 5954, 1, 0, 0, 0, 1221, 5965, 1, 0, 0, 0, 1223, 5977, 1, 0, 0, 0, 1225, 5993, 1, 0, 0, 0, 1227, 6009, 1, 0, 0, 0, 1229, 6016, 1, 0, 0, 0, 1231, 6023, 1, 0, 0, 0, 1233, 6032, 1, 0, 0, 0, 1235, 6039, 1, 0, 0, 0, 1237, 6049, 1, 0, 0, 0, 1239, 6056, 1, 0, 0, 0, 1241, 6060, 1, 0, 0, 0, 1243, 6076, 1, 0, 0, 0, 1245, 6085, 1, 0, 0, 0, 1247, 6095, 1, 0, 0, 0, 1249, 6106, 1, 0, 0, 0, 1251, 6115, 1, 0, 0, 0, 1253, 6128, 1, 0, 0, 0, 1255, 6142, 1, 0, 0, 0, 1257, 6159, 1, 0, 0, 0, 1259, 6169, 1, 0, 0, 0, 1261, 6183, 1, 0, 0, 0, 1263, 6193, 1, 0, 0, 0, 1265, 6208, 1, 0, 0, 0, 1267, 6225, 1, 0, 0, 0, 1269, 6229, 1, 0, 0, 0, 1271, 6249, 1, 0, 0, 0, 1273, 6259, 1, 0, 0, 0, 1275, 6281, 1, 0, 0, 0, 1277, 6294, 1, 0, 0, 0, 1279, 6302, 1, 0, 0, 0, 1281, 6310, 1, 0, 0, 0, 1283, 6320, 1, 0, 0, 0, 1285, 6333, 1, 0, 0, 0, 1287, 6337, 1, 0, 0, 0, 1289, 6341, 1, 0, 0, 0, 1291, 6343, 1, 0, 0, 0, 1293, 6346, 1, 0, 0, 0, 1295, 6355, 1, 0, 0, 0, 1297, 6358, 1, 0, 0, 0, 1299, 6367, 1, 0, 0, 0, 1301, 6371, 1, 0, 0, 0, 1303, 6375, 1, 0, 0, 0, 1305, 6379, 1, 0, 0, 0, 1307, 6383, 1, 0, 0, 0, 1309, 6386, 1, 0, 0, 0, 1311, 6395, 1, 0, 0, 0, 1313, 6401, 1, 0, 0, 0, 1315, 6404, 1, 0, 0, 0, 1317, 6408, 1, 0, 0, 0, 1319, 6417, 1, 0, 0, 0, 1321, 6424, 1, 0, 0, 0, 1323, 6427, 1, 0, 0, 0, 1325, 6435, 1, 0, 0, 0, 1327, 6438, 1, 0, 0, 0, 1329, 6441, 1, 0, 0, 0, 1331, 6444, 1, 0, 0, 0, 1333, 6452, 1, 0, 0, 0, 1335, 6455, 1, 0, 0, 0, 1337, 6458, 1, 0, 0, 0, 1339, 6460, 1, 0, 0, 0, 1341, 6494, 1, 0, 0, 0, 1343, 6497, 1, 0, 0, 0, 1345, 6501, 1, 0, 0, 0, 1347, 6509, 1, 0, 0, 0, 1349, 6525, 1, 0, 0, 0, 1351, 6536, 1, 0, 0, 0, 1353, 6540, 1, 0, 0, 0, 1355, 6551, 1, 0, 0, 0, 1357, 6590, 1, 0, 0, 0, 1359, 6641, 1, 0, 0, 0, 1361, 6665, 1, 0, 0, 0, 1363, 6668, 1, 0, 0, 0, 1365, 6670, 1, 0, 0, 0, 1367, 6675, 1, 0, 0, 0, 1369, 6706, 1, 0, 0, 0, 1371, 6709, 1, 0, 0, 0, 1373, 6714, 1, 0, 0, 0, 1375, 6727, 1, 0, 0, 0, 1377, 6730, 1, 0, 0, 0, 1379, 6735, 1, 0, 0, 0, 1381, 6741, 1, 0, 0, 0, 1383, 6746, 1, 0, 0, 0, 1385, 6751, 1, 0, 0, 0, 1387, 6756, 1, 0, 0, 0, 1389, 6761, 1, 0, 0, 0, 1391, 6778, 1, 0, 0, 0, 1393, 6780, 1, 0, 0, 0, 1395, 1396, 5, 36, 0, 0, 1396, 6, 1, 0, 0, 0, 1397, 1398, 5, 40, 0, 0, 1398, 8, 1, 0, 0, 0, 1399, 1400, 5, 41, 0, 0, 1400, 10, 1, 0, 0, 0, 1401, 1402, 5, 91, 0, 0, 1402, 12, 1, 0, 0, 0, 1403, 1404, 5, 93, 0, 0, 1404, 14, 1, 0, 0, 0, 1405, 1406, 5, 44, 0, 0, 1406, 16, 1, 0, 0, 0, 1407, 1408, 5, 59, 0, 0, 1408, 18, 1, 0, 0, 0, 1409, 1410, 5, 58, 0, 0, 1410, 20, 1, 0, 0, 0, 1411, 1412, 5, 42, 0, 0, 1412, 22, 1, 0, 0, 0, 1413, 1414, 5, 61, 0, 0, 1414, 24, 1, 0, 0, 0, 1415, 1416, 5, 46, 0, 0, 1416, 26, 1, 0, 0, 0, 1417, 1418, 5, 43, 0, 0, 1418, 28, 1, 0, 0, 0, 1419, 1420, 5, 45, 0, 0, 1420, 30, 1, 0, 0, 0, 1421, 1422, 5, 47, 0, 0, 1422, 32, 1, 0, 0, 0, 1423, 1424, 5, 94, 0, 0, 1424, 34, 1, 0, 0, 0, 1425, 1426, 5, 60, 0, 0, 1426, 36, 1, 0, 0, 0, 1427, 1428, 5, 62, 0, 0, 1428, 38, 1, 0, 0, 0, 1429, 1430, 5, 60, 0, 0, 1430, 1431, 5, 60, 0, 0, 1431, 40, 1, 0, 0, 0, 1432, 1433, 5, 62, 0, 0, 1433, 1434, 5, 62, 0, 0, 1434, 42, 1, 0, 0, 0, 1435, 1436, 5, 58, 0, 0, 1436, 1437, 5, 61, 0, 0, 1437, 44, 1, 0, 0, 0, 1438, 1439, 5, 60, 0, 0, 1439, 1440, 5, 61, 0, 0, 1440, 46, 1, 0, 0, 0, 1441, 1442, 5, 61, 0, 0, 1442, 1443, 5, 62, 0, 0, 1443, 48, 1, 0, 0, 0, 1444, 1445, 5, 62, 0, 0, 1445, 1446, 5, 61, 0, 0, 1446, 50, 1, 0, 0, 0, 1447, 1448, 5, 46, 0, 0, 1448, 1449, 5, 46, 0, 0, 1449, 52, 1, 0, 0, 0, 1450, 1451, 5, 60, 0, 0, 1451, 1452, 5, 62, 0, 0, 1452, 54, 1, 0, 0, 0, 1453, 1454, 5, 58, 0, 0, 1454, 1455, 5, 58, 0, 0, 1455, 56, 1, 0, 0, 0, 1456, 1457, 5, 37, 0, 0, 1457, 58, 1, 0, 0, 0, 1458, 1460, 5, 36, 0, 0, 1459, 1461, 7, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1460, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 60, 1, 0, 0, 0, 1464, 1480, 3, 65, 30, 0, 1465, 1469, 5, 43, 0, 0, 1466, 1467, 5, 45, 0, 0, 1467, 1469, 4, 28, 0, 0, 1468, 1465, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1475, 1, 0, 0, 0, 1472, 1476, 3, 65, 30, 0, 1473, 1474, 5, 47, 0, 0, 1474, 1476, 4, 28, 1, 0, 1475, 1472, 1, 0, 0, 0, 1475, 1473, 1, 0, 0, 0, 1476, 1480, 1, 0, 0, 0, 1477, 1478, 5, 47, 0, 0, 1478, 1480, 4, 28, 2, 0, 1479, 1464, 1, 0, 0, 0, 1479, 1468, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1485, 7, 1, 0, 0, 1484, 1479, 1, 0, 0, 0, 1484, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1487, 6, 28, 0, 0, 1487, 62, 1, 0, 0, 0, 1488, 1494, 3, 67, 31, 0, 1489, 1490, 5, 45, 0, 0, 1490, 1494, 4, 29, 3, 0, 1491, 1492, 5, 47, 0, 0, 1492, 1494, 4, 29, 4, 0, 1493, 1488, 1, 0, 0, 0, 1493, 1489, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1494, 1497, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 1, 0, 0, 0, 1497, 1495, 1, 0, 0, 0, 1498, 1500, 3, 69, 32, 0, 1499, 1501, 3, 61, 28, 0, 1500, 1499, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1505, 1, 0, 0, 0, 1502, 1506, 5, 43, 0, 0, 1503, 1504, 5, 45, 0, 0, 1504, 1506, 4, 29, 5, 0, 1505, 1502, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 6, 29, 1, 0, 1510, 64, 1, 0, 0, 0, 1511, 1512, 7, 2, 0, 0, 1512, 66, 1, 0, 0, 0, 1513, 1514, 7, 3, 0, 0, 1514, 68, 1, 0, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 70, 1, 0, 0, 0, 1517, 1518, 7, 5, 0, 0, 1518, 1519, 7, 6, 0, 0, 1519, 1520, 7, 6, 0, 0, 1520, 72, 1, 0, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 1523, 7, 7, 0, 0, 1523, 1524, 7, 5, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 7, 8, 0, 0, 1526, 1527, 7, 9, 0, 0, 1527, 1528, 7, 10, 0, 0, 1528, 74, 1, 0, 0, 0, 1529, 1530, 7, 5, 0, 0, 1530, 1531, 7, 7, 0, 0, 1531, 1532, 7, 5, 0, 0, 1532, 1533, 7, 6, 0, 0, 1533, 1534, 7, 8, 0, 0, 1534, 1535, 7, 11, 0, 0, 1535, 1536, 7, 10, 0, 0, 1536, 76, 1, 0, 0, 0, 1537, 1538, 7, 5, 0, 0, 1538, 1539, 7, 7, 0, 0, 1539, 1540, 7, 12, 0, 0, 1540, 78, 1, 0, 0, 0, 1541, 1542, 7, 5, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 8, 0, 0, 1544, 80, 1, 0, 0, 0, 1545, 1546, 7, 5, 0, 0, 1546, 1547, 7, 13, 0, 0, 1547, 1548, 7, 13, 0, 0, 1548, 1549, 7, 5, 0, 0, 1549, 1550, 7, 8, 0, 0, 1550, 82, 1, 0, 0, 0, 1551, 1552, 7, 5, 0, 0, 1552, 1553, 7, 9, 0, 0, 1553, 84, 1, 0, 0, 0, 1554, 1555, 7, 5, 0, 0, 1555, 1556, 7, 9, 0, 0, 1556, 1557, 7, 14, 0, 0, 1557, 86, 1, 0, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 8, 0, 0, 1561, 1562, 7, 15, 0, 0, 1562, 1563, 7, 15, 0, 0, 1563, 1564, 7, 10, 0, 0, 1564, 1565, 7, 16, 0, 0, 1565, 1566, 7, 13, 0, 0, 1566, 1567, 7, 17, 0, 0, 1567, 1568, 7, 14, 0, 0, 1568, 88, 1, 0, 0, 0, 1569, 1570, 7, 18, 0, 0, 1570, 1571, 7, 19, 0, 0, 1571, 1572, 7, 16, 0, 0, 1572, 1573, 7, 20, 0, 0, 1573, 90, 1, 0, 0, 0, 1574, 1575, 7, 14, 0, 0, 1575, 1576, 7, 5, 0, 0, 1576, 1577, 7, 9, 0, 0, 1577, 1578, 7, 10, 0, 0, 1578, 92, 1, 0, 0, 0, 1579, 1580, 7, 14, 0, 0, 1580, 1581, 7, 5, 0, 0, 1581, 1582, 7, 9, 0, 0, 1582, 1583, 7, 16, 0, 0, 1583, 94, 1, 0, 0, 0, 1584, 1585, 7, 14, 0, 0, 1585, 1586, 7, 20, 0, 0, 1586, 1587, 7, 10, 0, 0, 1587, 1588, 7, 14, 0, 0, 1588, 1589, 7, 21, 0, 0, 1589, 96, 1, 0, 0, 0, 1590, 1591, 7, 14, 0, 0, 1591, 1592, 7, 19, 0, 0, 1592, 1593, 7, 6, 0, 0, 1593, 1594, 7, 6, 0, 0, 1594, 1595, 7, 5, 0, 0, 1595, 1596, 7, 16, 0, 0, 1596, 1597, 7, 10, 0, 0, 1597, 98, 1, 0, 0, 0, 1598, 1599, 7, 14, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 6, 0, 0, 1601, 1602, 7, 22, 0, 0, 1602, 1603, 7, 15, 0, 0, 1603, 1604, 7, 7, 0, 0, 1604, 100, 1, 0, 0, 0, 1605, 1606, 7, 14, 0, 0, 1606, 1607, 7, 19, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 9, 0, 0, 1609, 1610, 7, 16, 0, 0, 1610, 1611, 7, 13, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, 7, 17, 0, 0, 1613, 1614, 7, 7, 0, 0, 1614, 1615, 7, 16, 0, 0, 1615, 102, 1, 0, 0, 0, 1616, 1617, 7, 14, 0, 0, 1617, 1618, 7, 13, 0, 0, 1618, 1619, 7, 10, 0, 0, 1619, 1620, 7, 5, 0, 0, 1620, 1621, 7, 16, 0, 0, 1621, 1622, 7, 10, 0, 0, 1622, 104, 1, 0, 0, 0, 1623, 1624, 7, 14, 0, 0, 1624, 1625, 7, 22, 0, 0, 1625, 1626, 7, 13, 0, 0, 1626, 1627, 7, 13, 0, 0, 1627, 1628, 7, 10, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 7, 16, 0, 0, 1630, 1631, 5, 95, 0, 0, 1631, 1632, 7, 14, 0, 0, 1632, 1633, 7, 5, 0, 0, 1633, 1634, 7, 16, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, 7, 19, 0, 0, 1637, 1638, 7, 23, 0, 0, 1638, 106, 1, 0, 0, 0, 1639, 1640, 7, 14, 0, 0, 1640, 1641, 7, 22, 0, 0, 1641, 1642, 7, 13, 0, 0, 1642, 1643, 7, 13, 0, 0, 1643, 1644, 7, 10, 0, 0, 1644, 1645, 7, 7, 0, 0, 1645, 1646, 7, 16, 0, 0, 1646, 1647, 5, 95, 0, 0, 1647, 1648, 7, 12, 0, 0, 1648, 1649, 7, 5, 0, 0, 1649, 1650, 7, 16, 0, 0, 1650, 1651, 7, 10, 0, 0, 1651, 108, 1, 0, 0, 0, 1652, 1653, 7, 14, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 13, 0, 0, 1655, 1656, 7, 13, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, 7, 7, 0, 0, 1658, 1659, 7, 16, 0, 0, 1659, 1660, 5, 95, 0, 0, 1660, 1661, 7, 13, 0, 0, 1661, 1662, 7, 19, 0, 0, 1662, 1663, 7, 6, 0, 0, 1663, 1664, 7, 10, 0, 0, 1664, 110, 1, 0, 0, 0, 1665, 1666, 7, 14, 0, 0, 1666, 1667, 7, 22, 0, 0, 1667, 1668, 7, 13, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 10, 0, 0, 1670, 1671, 7, 7, 0, 0, 1671, 1672, 7, 16, 0, 0, 1672, 1673, 5, 95, 0, 0, 1673, 1674, 7, 16, 0, 0, 1674, 1675, 7, 17, 0, 0, 1675, 1676, 7, 15, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 112, 1, 0, 0, 0, 1678, 1679, 7, 14, 0, 0, 1679, 1680, 7, 22, 0, 0, 1680, 1681, 7, 13, 0, 0, 1681, 1682, 7, 13, 0, 0, 1682, 1683, 7, 10, 0, 0, 1683, 1684, 7, 7, 0, 0, 1684, 1685, 7, 16, 0, 0, 1685, 1686, 5, 95, 0, 0, 1686, 1687, 7, 16, 0, 0, 1687, 1688, 7, 17, 0, 0, 1688, 1689, 7, 15, 0, 0, 1689, 1690, 7, 10, 0, 0, 1690, 1691, 7, 9, 0, 0, 1691, 1692, 7, 16, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, 7, 15, 0, 0, 1694, 1695, 7, 24, 0, 0, 1695, 114, 1, 0, 0, 0, 1696, 1697, 7, 14, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 1699, 7, 13, 0, 0, 1699, 1700, 7, 13, 0, 0, 1700, 1701, 7, 10, 0, 0, 1701, 1702, 7, 7, 0, 0, 1702, 1703, 7, 16, 0, 0, 1703, 1704, 5, 95, 0, 0, 1704, 1705, 7, 22, 0, 0, 1705, 1706, 7, 9, 0, 0, 1706, 1707, 7, 10, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 116, 1, 0, 0, 0, 1709, 1710, 7, 12, 0, 0, 1710, 1711, 7, 10, 0, 0, 1711, 1712, 7, 25, 0, 0, 1712, 1713, 7, 5, 0, 0, 1713, 1714, 7, 22, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 1716, 7, 16, 0, 0, 1716, 118, 1, 0, 0, 0, 1717, 1718, 7, 12, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 1720, 7, 25, 0, 0, 1720, 1721, 7, 10, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 13, 0, 0, 1723, 1724, 7, 5, 0, 0, 1724, 1725, 7, 18, 0, 0, 1725, 1726, 7, 6, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 120, 1, 0, 0, 0, 1728, 1729, 7, 12, 0, 0, 1729, 1730, 7, 10, 0, 0, 1730, 1731, 7, 9, 0, 0, 1731, 1732, 7, 14, 0, 0, 1732, 122, 1, 0, 0, 0, 1733, 1734, 7, 12, 0, 0, 1734, 1735, 7, 17, 0, 0, 1735, 1736, 7, 9, 0, 0, 1736, 1737, 7, 16, 0, 0, 1737, 1738, 7, 17, 0, 0, 1738, 1739, 7, 7, 0, 0, 1739, 1740, 7, 14, 0, 0, 1740, 1741, 7, 16, 0, 0, 1741, 124, 1, 0, 0, 0, 1742, 1743, 7, 12, 0, 0, 1743, 1744, 7, 19, 0, 0, 1744, 126, 1, 0, 0, 0, 1745, 1746, 7, 10, 0, 0, 1746, 1747, 7, 6, 0, 0, 1747, 1748, 7, 9, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 128, 1, 0, 0, 0, 1750, 1751, 7, 10, 0, 0, 1751, 1752, 7, 26, 0, 0, 1752, 1753, 7, 14, 0, 0, 1753, 1754, 7, 10, 0, 0, 1754, 1755, 7, 24, 0, 0, 1755, 1756, 7, 16, 0, 0, 1756, 130, 1, 0, 0, 0, 1757, 1758, 7, 25, 0, 0, 1758, 1759, 7, 5, 0, 0, 1759, 1760, 7, 6, 0, 0, 1760, 1761, 7, 9, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 132, 1, 0, 0, 0, 1763, 1764, 7, 25, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 16, 0, 0, 1766, 1767, 7, 14, 0, 0, 1767, 1768, 7, 20, 0, 0, 1768, 134, 1, 0, 0, 0, 1769, 1770, 7, 25, 0, 0, 1770, 1771, 7, 19, 0, 0, 1771, 1772, 7, 13, 0, 0, 1772, 136, 1, 0, 0, 0, 1773, 1774, 7, 25, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 13, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 1778, 7, 17, 0, 0, 1778, 1779, 7, 23, 0, 0, 1779, 1780, 7, 7, 0, 0, 1780, 138, 1, 0, 0, 0, 1781, 1782, 7, 25, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, 7, 19, 0, 0, 1784, 1785, 7, 15, 0, 0, 1785, 140, 1, 0, 0, 0, 1786, 1787, 7, 23, 0, 0, 1787, 1788, 7, 13, 0, 0, 1788, 1789, 7, 5, 0, 0, 1789, 1790, 7, 7, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 142, 1, 0, 0, 0, 1792, 1793, 7, 23, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 19, 0, 0, 1795, 1796, 7, 22, 0, 0, 1796, 1797, 7, 24, 0, 0, 1797, 144, 1, 0, 0, 0, 1798, 1799, 7, 20, 0, 0, 1799, 1800, 7, 5, 0, 0, 1800, 1801, 7, 27, 0, 0, 1801, 1802, 7, 17, 0, 0, 1802, 1803, 7, 7, 0, 0, 1803, 1804, 7, 23, 0, 0, 1804, 146, 1, 0, 0, 0, 1805, 1806, 7, 17, 0, 0, 1806, 1807, 7, 7, 0, 0, 1807, 148, 1, 0, 0, 0, 1808, 1809, 7, 17, 0, 0, 1809, 1810, 7, 7, 0, 0, 1810, 1811, 7, 17, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 1813, 7, 17, 0, 0, 1813, 1814, 7, 5, 0, 0, 1814, 1815, 7, 6, 0, 0, 1815, 1816, 7, 6, 0, 0, 1816, 1817, 7, 8, 0, 0, 1817, 150, 1, 0, 0, 0, 1818, 1819, 7, 17, 0, 0, 1819, 1820, 7, 7, 0, 0, 1820, 1821, 7, 16, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 13, 0, 0, 1823, 1824, 7, 9, 0, 0, 1824, 1825, 7, 10, 0, 0, 1825, 1826, 7, 14, 0, 0, 1826, 1827, 7, 16, 0, 0, 1827, 152, 1, 0, 0, 0, 1828, 1829, 7, 17, 0, 0, 1829, 1830, 7, 7, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 19, 0, 0, 1832, 154, 1, 0, 0, 0, 1833, 1834, 7, 6, 0, 0, 1834, 1835, 7, 5, 0, 0, 1835, 1836, 7, 16, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 1838, 7, 13, 0, 0, 1838, 1839, 7, 5, 0, 0, 1839, 1840, 7, 6, 0, 0, 1840, 156, 1, 0, 0, 0, 1841, 1842, 7, 6, 0, 0, 1842, 1843, 7, 10, 0, 0, 1843, 1844, 7, 5, 0, 0, 1844, 1845, 7, 12, 0, 0, 1845, 1846, 7, 17, 0, 0, 1846, 1847, 7, 7, 0, 0, 1847, 1848, 7, 23, 0, 0, 1848, 158, 1, 0, 0, 0, 1849, 1850, 7, 6, 0, 0, 1850, 1851, 7, 17, 0, 0, 1851, 1852, 7, 15, 0, 0, 1852, 1853, 7, 17, 0, 0, 1853, 1854, 7, 16, 0, 0, 1854, 160, 1, 0, 0, 0, 1855, 1856, 7, 6, 0, 0, 1856, 1857, 7, 19, 0, 0, 1857, 1858, 7, 14, 0, 0, 1858, 1859, 7, 5, 0, 0, 1859, 1860, 7, 6, 0, 0, 1860, 1861, 7, 16, 0, 0, 1861, 1862, 7, 17, 0, 0, 1862, 1863, 7, 15, 0, 0, 1863, 1864, 7, 10, 0, 0, 1864, 162, 1, 0, 0, 0, 1865, 1866, 7, 6, 0, 0, 1866, 1867, 7, 19, 0, 0, 1867, 1868, 7, 14, 0, 0, 1868, 1869, 7, 5, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 17, 0, 0, 1872, 1873, 7, 15, 0, 0, 1873, 1874, 7, 10, 0, 0, 1874, 1875, 7, 9, 0, 0, 1875, 1876, 7, 16, 0, 0, 1876, 1877, 7, 5, 0, 0, 1877, 1878, 7, 15, 0, 0, 1878, 1879, 7, 24, 0, 0, 1879, 164, 1, 0, 0, 0, 1880, 1881, 7, 7, 0, 0, 1881, 1882, 7, 19, 0, 0, 1882, 1883, 7, 16, 0, 0, 1883, 166, 1, 0, 0, 0, 1884, 1885, 7, 7, 0, 0, 1885, 1886, 7, 22, 0, 0, 1886, 1887, 7, 6, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 168, 1, 0, 0, 0, 1889, 1890, 7, 19, 0, 0, 1890, 1891, 7, 25, 0, 0, 1891, 1892, 7, 25, 0, 0, 1892, 1893, 7, 9, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 16, 0, 0, 1895, 170, 1, 0, 0, 0, 1896, 1897, 7, 19, 0, 0, 1897, 1898, 7, 7, 0, 0, 1898, 172, 1, 0, 0, 0, 1899, 1900, 7, 19, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 6, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 174, 1, 0, 0, 0, 1904, 1905, 7, 19, 0, 0, 1905, 1906, 7, 13, 0, 0, 1906, 176, 1, 0, 0, 0, 1907, 1908, 7, 19, 0, 0, 1908, 1909, 7, 13, 0, 0, 1909, 1910, 7, 12, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 13, 0, 0, 1912, 178, 1, 0, 0, 0, 1913, 1914, 7, 24, 0, 0, 1914, 1915, 7, 6, 0, 0, 1915, 1916, 7, 5, 0, 0, 1916, 1917, 7, 14, 0, 0, 1917, 1918, 7, 17, 0, 0, 1918, 1919, 7, 7, 0, 0, 1919, 1920, 7, 23, 0, 0, 1920, 180, 1, 0, 0, 0, 1921, 1922, 7, 24, 0, 0, 1922, 1923, 7, 13, 0, 0, 1923, 1924, 7, 17, 0, 0, 1924, 1925, 7, 15, 0, 0, 1925, 1926, 7, 5, 0, 0, 1926, 1927, 7, 13, 0, 0, 1927, 1928, 7, 8, 0, 0, 1928, 182, 1, 0, 0, 0, 1929, 1930, 7, 13, 0, 0, 1930, 1931, 7, 10, 0, 0, 1931, 1932, 7, 25, 0, 0, 1932, 1933, 7, 10, 0, 0, 1933, 1934, 7, 13, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 7, 0, 0, 1936, 1937, 7, 14, 0, 0, 1937, 1938, 7, 10, 0, 0, 1938, 1939, 7, 9, 0, 0, 1939, 184, 1, 0, 0, 0, 1940, 1941, 7, 13, 0, 0, 1941, 1942, 7, 10, 0, 0, 1942, 1943, 7, 16, 0, 0, 1943, 1944, 7, 22, 0, 0, 1944, 1945, 7, 13, 0, 0, 1945, 1946, 7, 7, 0, 0, 1946, 1947, 7, 17, 0, 0, 1947, 1948, 7, 7, 0, 0, 1948, 1949, 7, 23, 0, 0, 1949, 186, 1, 0, 0, 0, 1950, 1951, 7, 9, 0, 0, 1951, 1952, 7, 10, 0, 0, 1952, 1953, 7, 6, 0, 0, 1953, 1954, 7, 10, 0, 0, 1954, 1955, 7, 14, 0, 0, 1955, 1956, 7, 16, 0, 0, 1956, 188, 1, 0, 0, 0, 1957, 1958, 7, 9, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 1960, 7, 9, 0, 0, 1960, 1961, 7, 9, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 19, 0, 0, 1963, 1964, 7, 7, 0, 0, 1964, 1965, 5, 95, 0, 0, 1965, 1966, 7, 22, 0, 0, 1966, 1967, 7, 9, 0, 0, 1967, 1968, 7, 10, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 190, 1, 0, 0, 0, 1970, 1971, 7, 9, 0, 0, 1971, 1972, 7, 19, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1974, 7, 10, 0, 0, 1974, 192, 1, 0, 0, 0, 1975, 1976, 7, 9, 0, 0, 1976, 1977, 7, 8, 0, 0, 1977, 1978, 7, 15, 0, 0, 1978, 1979, 7, 15, 0, 0, 1979, 1980, 7, 10, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 13, 0, 0, 1982, 1983, 7, 17, 0, 0, 1983, 1984, 7, 14, 0, 0, 1984, 194, 1, 0, 0, 0, 1985, 1986, 7, 16, 0, 0, 1986, 1987, 7, 5, 0, 0, 1987, 1988, 7, 18, 0, 0, 1988, 1989, 7, 6, 0, 0, 1989, 1990, 7, 10, 0, 0, 1990, 196, 1, 0, 0, 0, 1991, 1992, 7, 16, 0, 0, 1992, 1993, 7, 20, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 7, 0, 0, 1995, 198, 1, 0, 0, 0, 1996, 1997, 7, 16, 0, 0, 1997, 1998, 7, 19, 0, 0, 1998, 200, 1, 0, 0, 0, 1999, 2000, 7, 16, 0, 0, 2000, 2001, 7, 13, 0, 0, 2001, 2002, 7, 5, 0, 0, 2002, 2003, 7, 17, 0, 0, 2003, 2004, 7, 6, 0, 0, 2004, 2005, 7, 17, 0, 0, 2005, 2006, 7, 7, 0, 0, 2006, 2007, 7, 23, 0, 0, 2007, 202, 1, 0, 0, 0, 2008, 2009, 7, 16, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 22, 0, 0, 2011, 2012, 7, 10, 0, 0, 2012, 204, 1, 0, 0, 0, 2013, 2014, 7, 22, 0, 0, 2014, 2015, 7, 7, 0, 0, 2015, 2016, 7, 17, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 206, 1, 0, 0, 0, 2019, 2020, 7, 22, 0, 0, 2020, 2021, 7, 7, 0, 0, 2021, 2022, 7, 17, 0, 0, 2022, 2023, 7, 28, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 10, 0, 0, 2025, 208, 1, 0, 0, 0, 2026, 2027, 7, 22, 0, 0, 2027, 2028, 7, 9, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 13, 0, 0, 2030, 210, 1, 0, 0, 0, 2031, 2032, 7, 22, 0, 0, 2032, 2033, 7, 9, 0, 0, 2033, 2034, 7, 17, 0, 0, 2034, 2035, 7, 7, 0, 0, 2035, 2036, 7, 23, 0, 0, 2036, 212, 1, 0, 0, 0, 2037, 2038, 7, 27, 0, 0, 2038, 2039, 7, 5, 0, 0, 2039, 2040, 7, 13, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 5, 0, 0, 2042, 2043, 7, 12, 0, 0, 2043, 2044, 7, 17, 0, 0, 2044, 2045, 7, 14, 0, 0, 2045, 214, 1, 0, 0, 0, 2046, 2047, 7, 29, 0, 0, 2047, 2048, 7, 20, 0, 0, 2048, 2049, 7, 10, 0, 0, 2049, 2050, 7, 7, 0, 0, 2050, 216, 1, 0, 0, 0, 2051, 2052, 7, 29, 0, 0, 2052, 2053, 7, 20, 0, 0, 2053, 2054, 7, 10, 0, 0, 2054, 2055, 7, 13, 0, 0, 2055, 2056, 7, 10, 0, 0, 2056, 218, 1, 0, 0, 0, 2057, 2058, 7, 29, 0, 0, 2058, 2059, 7, 17, 0, 0, 2059, 2060, 7, 7, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 19, 0, 0, 2062, 2063, 7, 29, 0, 0, 2063, 220, 1, 0, 0, 0, 2064, 2065, 7, 29, 0, 0, 2065, 2066, 7, 17, 0, 0, 2066, 2067, 7, 16, 0, 0, 2067, 2068, 7, 20, 0, 0, 2068, 222, 1, 0, 0, 0, 2069, 2070, 7, 5, 0, 0, 2070, 2071, 7, 22, 0, 0, 2071, 2072, 7, 16, 0, 0, 2072, 2073, 7, 20, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 13, 0, 0, 2075, 2076, 7, 17, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 5, 0, 0, 2078, 2079, 7, 16, 0, 0, 2079, 2080, 7, 17, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 2082, 7, 7, 0, 0, 2082, 224, 1, 0, 0, 0, 2083, 2084, 7, 18, 0, 0, 2084, 2085, 7, 17, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 2087, 7, 5, 0, 0, 2087, 2088, 7, 13, 0, 0, 2088, 2089, 7, 8, 0, 0, 2089, 226, 1, 0, 0, 0, 2090, 2091, 7, 14, 0, 0, 2091, 2092, 7, 19, 0, 0, 2092, 2093, 7, 6, 0, 0, 2093, 2094, 7, 6, 0, 0, 2094, 2095, 7, 5, 0, 0, 2095, 2096, 7, 16, 0, 0, 2096, 2097, 7, 17, 0, 0, 2097, 2098, 7, 19, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 228, 1, 0, 0, 0, 2100, 2101, 7, 14, 0, 0, 2101, 2102, 7, 19, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 14, 0, 0, 2104, 2105, 7, 22, 0, 0, 2105, 2106, 7, 13, 0, 0, 2106, 2107, 7, 13, 0, 0, 2107, 2108, 7, 10, 0, 0, 2108, 2109, 7, 7, 0, 0, 2109, 2110, 7, 16, 0, 0, 2110, 2111, 7, 6, 0, 0, 2111, 2112, 7, 8, 0, 0, 2112, 230, 1, 0, 0, 0, 2113, 2114, 7, 14, 0, 0, 2114, 2115, 7, 13, 0, 0, 2115, 2116, 7, 19, 0, 0, 2116, 2117, 7, 9, 0, 0, 2117, 2118, 7, 9, 0, 0, 2118, 232, 1, 0, 0, 0, 2119, 2120, 7, 14, 0, 0, 2120, 2121, 7, 22, 0, 0, 2121, 2122, 7, 13, 0, 0, 2122, 2123, 7, 13, 0, 0, 2123, 2124, 7, 10, 0, 0, 2124, 2125, 7, 7, 0, 0, 2125, 2126, 7, 16, 0, 0, 2126, 2127, 5, 95, 0, 0, 2127, 2128, 7, 9, 0, 0, 2128, 2129, 7, 14, 0, 0, 2129, 2130, 7, 20, 0, 0, 2130, 2131, 7, 10, 0, 0, 2131, 2132, 7, 15, 0, 0, 2132, 2133, 7, 5, 0, 0, 2133, 234, 1, 0, 0, 0, 2134, 2135, 7, 25, 0, 0, 2135, 2136, 7, 13, 0, 0, 2136, 2137, 7, 10, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 11, 0, 0, 2139, 2140, 7, 10, 0, 0, 2140, 236, 1, 0, 0, 0, 2141, 2142, 7, 25, 0, 0, 2142, 2143, 7, 22, 0, 0, 2143, 2144, 7, 6, 0, 0, 2144, 2145, 7, 6, 0, 0, 2145, 238, 1, 0, 0, 0, 2146, 2147, 7, 17, 0, 0, 2147, 2148, 7, 6, 0, 0, 2148, 2149, 7, 17, 0, 0, 2149, 2150, 7, 21, 0, 0, 2150, 2151, 7, 10, 0, 0, 2151, 240, 1, 0, 0, 0, 2152, 2153, 7, 17, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 7, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 13, 0, 0, 2157, 242, 1, 0, 0, 0, 2158, 2159, 7, 17, 0, 0, 2159, 2160, 7, 9, 0, 0, 2160, 244, 1, 0, 0, 0, 2161, 2162, 7, 17, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 7, 0, 0, 2164, 2165, 7, 22, 0, 0, 2165, 2166, 7, 6, 0, 0, 2166, 2167, 7, 6, 0, 0, 2167, 246, 1, 0, 0, 0, 2168, 2169, 7, 30, 0, 0, 2169, 2170, 7, 19, 0, 0, 2170, 2171, 7, 17, 0, 0, 2171, 2172, 7, 7, 0, 0, 2172, 248, 1, 0, 0, 0, 2173, 2174, 7, 6, 0, 0, 2174, 2175, 7, 10, 0, 0, 2175, 2176, 7, 25, 0, 0, 2176, 2177, 7, 16, 0, 0, 2177, 250, 1, 0, 0, 0, 2178, 2179, 7, 6, 0, 0, 2179, 2180, 7, 17, 0, 0, 2180, 2181, 7, 21, 0, 0, 2181, 2182, 7, 10, 0, 0, 2182, 252, 1, 0, 0, 0, 2183, 2184, 7, 7, 0, 0, 2184, 2185, 7, 5, 0, 0, 2185, 2186, 7, 16, 0, 0, 2186, 2187, 7, 22, 0, 0, 2187, 2188, 7, 13, 0, 0, 2188, 2189, 7, 5, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 254, 1, 0, 0, 0, 2191, 2192, 7, 7, 0, 0, 2192, 2193, 7, 19, 0, 0, 2193, 2194, 7, 16, 0, 0, 2194, 2195, 7, 7, 0, 0, 2195, 2196, 7, 22, 0, 0, 2196, 2197, 7, 6, 0, 0, 2197, 2198, 7, 6, 0, 0, 2198, 256, 1, 0, 0, 0, 2199, 2200, 7, 19, 0, 0, 2200, 2201, 7, 22, 0, 0, 2201, 2202, 7, 16, 0, 0, 2202, 2203, 7, 10, 0, 0, 2203, 2204, 7, 13, 0, 0, 2204, 258, 1, 0, 0, 0, 2205, 2206, 7, 19, 0, 0, 2206, 2207, 7, 27, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 2209, 7, 13, 0, 0, 2209, 260, 1, 0, 0, 0, 2210, 2211, 7, 19, 0, 0, 2211, 2212, 7, 27, 0, 0, 2212, 2213, 7, 10, 0, 0, 2213, 2214, 7, 13, 0, 0, 2214, 2215, 7, 6, 0, 0, 2215, 2216, 7, 5, 0, 0, 2216, 2217, 7, 24, 0, 0, 2217, 2218, 7, 9, 0, 0, 2218, 262, 1, 0, 0, 0, 2219, 2220, 7, 13, 0, 0, 2220, 2221, 7, 17, 0, 0, 2221, 2222, 7, 23, 0, 0, 2222, 2223, 7, 20, 0, 0, 2223, 2224, 7, 16, 0, 0, 2224, 264, 1, 0, 0, 0, 2225, 2226, 7, 9, 0, 0, 2226, 2227, 7, 17, 0, 0, 2227, 2228, 7, 15, 0, 0, 2228, 2229, 7, 17, 0, 0, 2229, 2230, 7, 6, 0, 0, 2230, 2231, 7, 5, 0, 0, 2231, 2232, 7, 13, 0, 0, 2232, 266, 1, 0, 0, 0, 2233, 2234, 7, 27, 0, 0, 2234, 2235, 7, 10, 0, 0, 2235, 2236, 7, 13, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 2238, 7, 19, 0, 0, 2238, 2239, 7, 9, 0, 0, 2239, 2240, 7, 10, 0, 0, 2240, 268, 1, 0, 0, 0, 2241, 2242, 7, 5, 0, 0, 2242, 2243, 7, 18, 0, 0, 2243, 2244, 7, 19, 0, 0, 2244, 2245, 7, 13, 0, 0, 2245, 2246, 7, 16, 0, 0, 2246, 270, 1, 0, 0, 0, 2247, 2248, 7, 5, 0, 0, 2248, 2249, 7, 18, 0, 0, 2249, 2250, 7, 9, 0, 0, 2250, 2251, 7, 19, 0, 0, 2251, 2252, 7, 6, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2254, 7, 16, 0, 0, 2254, 2255, 7, 10, 0, 0, 2255, 272, 1, 0, 0, 0, 2256, 2257, 7, 5, 0, 0, 2257, 2258, 7, 14, 0, 0, 2258, 2259, 7, 14, 0, 0, 2259, 2260, 7, 10, 0, 0, 2260, 2261, 7, 9, 0, 0, 2261, 2262, 7, 9, 0, 0, 2262, 274, 1, 0, 0, 0, 2263, 2264, 7, 5, 0, 0, 2264, 2265, 7, 14, 0, 0, 2265, 2266, 7, 16, 0, 0, 2266, 2267, 7, 17, 0, 0, 2267, 2268, 7, 19, 0, 0, 2268, 2269, 7, 7, 0, 0, 2269, 276, 1, 0, 0, 0, 2270, 2271, 7, 5, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 12, 0, 0, 2273, 278, 1, 0, 0, 0, 2274, 2275, 7, 5, 0, 0, 2275, 2276, 7, 12, 0, 0, 2276, 2277, 7, 15, 0, 0, 2277, 2278, 7, 17, 0, 0, 2278, 2279, 7, 7, 0, 0, 2279, 280, 1, 0, 0, 0, 2280, 2281, 7, 5, 0, 0, 2281, 2282, 7, 25, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 10, 0, 0, 2284, 2285, 7, 13, 0, 0, 2285, 282, 1, 0, 0, 0, 2286, 2287, 7, 5, 0, 0, 2287, 2288, 7, 23, 0, 0, 2288, 2289, 7, 23, 0, 0, 2289, 2290, 7, 13, 0, 0, 2290, 2291, 7, 10, 0, 0, 2291, 2292, 7, 23, 0, 0, 2292, 2293, 7, 5, 0, 0, 2293, 2294, 7, 16, 0, 0, 2294, 2295, 7, 10, 0, 0, 2295, 284, 1, 0, 0, 0, 2296, 2297, 7, 5, 0, 0, 2297, 2298, 7, 6, 0, 0, 2298, 2299, 7, 9, 0, 0, 2299, 2300, 7, 19, 0, 0, 2300, 286, 1, 0, 0, 0, 2301, 2302, 7, 5, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 16, 0, 0, 2304, 2305, 7, 10, 0, 0, 2305, 2306, 7, 13, 0, 0, 2306, 288, 1, 0, 0, 0, 2307, 2308, 7, 5, 0, 0, 2308, 2309, 7, 6, 0, 0, 2309, 2310, 7, 29, 0, 0, 2310, 2311, 7, 5, 0, 0, 2311, 2312, 7, 8, 0, 0, 2312, 2313, 7, 9, 0, 0, 2313, 290, 1, 0, 0, 0, 2314, 2315, 7, 5, 0, 0, 2315, 2316, 7, 9, 0, 0, 2316, 2317, 7, 9, 0, 0, 2317, 2318, 7, 10, 0, 0, 2318, 2319, 7, 13, 0, 0, 2319, 2320, 7, 16, 0, 0, 2320, 2321, 7, 17, 0, 0, 2321, 2322, 7, 19, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 292, 1, 0, 0, 0, 2324, 2325, 7, 5, 0, 0, 2325, 2326, 7, 9, 0, 0, 2326, 2327, 7, 9, 0, 0, 2327, 2328, 7, 17, 0, 0, 2328, 2329, 7, 23, 0, 0, 2329, 2330, 7, 7, 0, 0, 2330, 2331, 7, 15, 0, 0, 2331, 2332, 7, 10, 0, 0, 2332, 2333, 7, 7, 0, 0, 2333, 2334, 7, 16, 0, 0, 2334, 294, 1, 0, 0, 0, 2335, 2336, 7, 5, 0, 0, 2336, 2337, 7, 16, 0, 0, 2337, 296, 1, 0, 0, 0, 2338, 2339, 7, 5, 0, 0, 2339, 2340, 7, 16, 0, 0, 2340, 2341, 7, 16, 0, 0, 2341, 2342, 7, 13, 0, 0, 2342, 2343, 7, 17, 0, 0, 2343, 2344, 7, 18, 0, 0, 2344, 2345, 7, 22, 0, 0, 2345, 2346, 7, 16, 0, 0, 2346, 2347, 7, 10, 0, 0, 2347, 298, 1, 0, 0, 0, 2348, 2349, 7, 18, 0, 0, 2349, 2350, 7, 5, 0, 0, 2350, 2351, 7, 14, 0, 0, 2351, 2352, 7, 21, 0, 0, 2352, 2353, 7, 29, 0, 0, 2353, 2354, 7, 5, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 12, 0, 0, 2356, 300, 1, 0, 0, 0, 2357, 2358, 7, 18, 0, 0, 2358, 2359, 7, 10, 0, 0, 2359, 2360, 7, 25, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 13, 0, 0, 2362, 2363, 7, 10, 0, 0, 2363, 302, 1, 0, 0, 0, 2364, 2365, 7, 18, 0, 0, 2365, 2366, 7, 10, 0, 0, 2366, 2367, 7, 23, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 7, 0, 0, 2369, 304, 1, 0, 0, 0, 2370, 2371, 7, 18, 0, 0, 2371, 2372, 7, 8, 0, 0, 2372, 306, 1, 0, 0, 0, 2373, 2374, 7, 14, 0, 0, 2374, 2375, 7, 5, 0, 0, 2375, 2376, 7, 14, 0, 0, 2376, 2377, 7, 20, 0, 0, 2377, 2378, 7, 10, 0, 0, 2378, 308, 1, 0, 0, 0, 2379, 2380, 7, 14, 0, 0, 2380, 2381, 7, 5, 0, 0, 2381, 2382, 7, 6, 0, 0, 2382, 2383, 7, 6, 0, 0, 2383, 2384, 7, 10, 0, 0, 2384, 2385, 7, 12, 0, 0, 2385, 310, 1, 0, 0, 0, 2386, 2387, 7, 14, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 9, 0, 0, 2389, 2390, 7, 14, 0, 0, 2390, 2391, 7, 5, 0, 0, 2391, 2392, 7, 12, 0, 0, 2392, 2393, 7, 10, 0, 0, 2393, 312, 1, 0, 0, 0, 2394, 2395, 7, 14, 0, 0, 2395, 2396, 7, 5, 0, 0, 2396, 2397, 7, 9, 0, 0, 2397, 2398, 7, 14, 0, 0, 2398, 2399, 7, 5, 0, 0, 2399, 2400, 7, 12, 0, 0, 2400, 2401, 7, 10, 0, 0, 2401, 2402, 7, 12, 0, 0, 2402, 314, 1, 0, 0, 0, 2403, 2404, 7, 14, 0, 0, 2404, 2405, 7, 5, 0, 0, 2405, 2406, 7, 16, 0, 0, 2406, 2407, 7, 5, 0, 0, 2407, 2408, 7, 6, 0, 0, 2408, 2409, 7, 19, 0, 0, 2409, 2410, 7, 23, 0, 0, 2410, 316, 1, 0, 0, 0, 2411, 2412, 7, 14, 0, 0, 2412, 2413, 7, 20, 0, 0, 2413, 2414, 7, 5, 0, 0, 2414, 2415, 7, 17, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 318, 1, 0, 0, 0, 2417, 2418, 7, 14, 0, 0, 2418, 2419, 7, 20, 0, 0, 2419, 2420, 7, 5, 0, 0, 2420, 2421, 7, 13, 0, 0, 2421, 2422, 7, 5, 0, 0, 2422, 2423, 7, 14, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 10, 0, 0, 2425, 2426, 7, 13, 0, 0, 2426, 2427, 7, 17, 0, 0, 2427, 2428, 7, 9, 0, 0, 2428, 2429, 7, 16, 0, 0, 2429, 2430, 7, 17, 0, 0, 2430, 2431, 7, 14, 0, 0, 2431, 2432, 7, 9, 0, 0, 2432, 320, 1, 0, 0, 0, 2433, 2434, 7, 14, 0, 0, 2434, 2435, 7, 20, 0, 0, 2435, 2436, 7, 10, 0, 0, 2436, 2437, 7, 14, 0, 0, 2437, 2438, 7, 21, 0, 0, 2438, 2439, 7, 24, 0, 0, 2439, 2440, 7, 19, 0, 0, 2440, 2441, 7, 17, 0, 0, 2441, 2442, 7, 7, 0, 0, 2442, 2443, 7, 16, 0, 0, 2443, 322, 1, 0, 0, 0, 2444, 2445, 7, 14, 0, 0, 2445, 2446, 7, 6, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 9, 0, 0, 2448, 2449, 7, 9, 0, 0, 2449, 324, 1, 0, 0, 0, 2450, 2451, 7, 14, 0, 0, 2451, 2452, 7, 6, 0, 0, 2452, 2453, 7, 19, 0, 0, 2453, 2454, 7, 9, 0, 0, 2454, 2455, 7, 10, 0, 0, 2455, 326, 1, 0, 0, 0, 2456, 2457, 7, 14, 0, 0, 2457, 2458, 7, 6, 0, 0, 2458, 2459, 7, 22, 0, 0, 2459, 2460, 7, 9, 0, 0, 2460, 2461, 7, 16, 0, 0, 2461, 2462, 7, 10, 0, 0, 2462, 2463, 7, 13, 0, 0, 2463, 328, 1, 0, 0, 0, 2464, 2465, 7, 14, 0, 0, 2465, 2466, 7, 19, 0, 0, 2466, 2467, 7, 15, 0, 0, 2467, 2468, 7, 15, 0, 0, 2468, 2469, 7, 10, 0, 0, 2469, 2470, 7, 7, 0, 0, 2470, 2471, 7, 16, 0, 0, 2471, 330, 1, 0, 0, 0, 2472, 2473, 7, 14, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 15, 0, 0, 2475, 2476, 7, 15, 0, 0, 2476, 2477, 7, 10, 0, 0, 2477, 2478, 7, 7, 0, 0, 2478, 2479, 7, 16, 0, 0, 2479, 2480, 7, 9, 0, 0, 2480, 332, 1, 0, 0, 0, 2481, 2482, 7, 14, 0, 0, 2482, 2483, 7, 19, 0, 0, 2483, 2484, 7, 15, 0, 0, 2484, 2485, 7, 15, 0, 0, 2485, 2486, 7, 17, 0, 0, 2486, 2487, 7, 16, 0, 0, 2487, 334, 1, 0, 0, 0, 2488, 2489, 7, 14, 0, 0, 2489, 2490, 7, 19, 0, 0, 2490, 2491, 7, 15, 0, 0, 2491, 2492, 7, 15, 0, 0, 2492, 2493, 7, 17, 0, 0, 2493, 2494, 7, 16, 0, 0, 2494, 2495, 7, 16, 0, 0, 2495, 2496, 7, 10, 0, 0, 2496, 2497, 7, 12, 0, 0, 2497, 336, 1, 0, 0, 0, 2498, 2499, 7, 14, 0, 0, 2499, 2500, 7, 19, 0, 0, 2500, 2501, 7, 7, 0, 0, 2501, 2502, 7, 25, 0, 0, 2502, 2503, 7, 17, 0, 0, 2503, 2504, 7, 23, 0, 0, 2504, 2505, 7, 22, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 5, 0, 0, 2507, 2508, 7, 16, 0, 0, 2508, 2509, 7, 17, 0, 0, 2509, 2510, 7, 19, 0, 0, 2510, 2511, 7, 7, 0, 0, 2511, 338, 1, 0, 0, 0, 2512, 2513, 7, 14, 0, 0, 2513, 2514, 7, 19, 0, 0, 2514, 2515, 7, 7, 0, 0, 2515, 2516, 7, 7, 0, 0, 2516, 2517, 7, 10, 0, 0, 2517, 2518, 7, 14, 0, 0, 2518, 2519, 7, 16, 0, 0, 2519, 2520, 7, 17, 0, 0, 2520, 2521, 7, 19, 0, 0, 2521, 2522, 7, 7, 0, 0, 2522, 340, 1, 0, 0, 0, 2523, 2524, 7, 14, 0, 0, 2524, 2525, 7, 19, 0, 0, 2525, 2526, 7, 7, 0, 0, 2526, 2527, 7, 9, 0, 0, 2527, 2528, 7, 16, 0, 0, 2528, 2529, 7, 13, 0, 0, 2529, 2530, 7, 5, 0, 0, 2530, 2531, 7, 17, 0, 0, 2531, 2532, 7, 7, 0, 0, 2532, 2533, 7, 16, 0, 0, 2533, 2534, 7, 9, 0, 0, 2534, 342, 1, 0, 0, 0, 2535, 2536, 7, 14, 0, 0, 2536, 2537, 7, 19, 0, 0, 2537, 2538, 7, 7, 0, 0, 2538, 2539, 7, 16, 0, 0, 2539, 2540, 7, 10, 0, 0, 2540, 2541, 7, 7, 0, 0, 2541, 2542, 7, 16, 0, 0, 2542, 344, 1, 0, 0, 0, 2543, 2544, 7, 14, 0, 0, 2544, 2545, 7, 19, 0, 0, 2545, 2546, 7, 7, 0, 0, 2546, 2547, 7, 16, 0, 0, 2547, 2548, 7, 17, 0, 0, 2548, 2549, 7, 7, 0, 0, 2549, 2550, 7, 22, 0, 0, 2550, 2551, 7, 10, 0, 0, 2551, 346, 1, 0, 0, 0, 2552, 2553, 7, 14, 0, 0, 2553, 2554, 7, 19, 0, 0, 2554, 2555, 7, 7, 0, 0, 2555, 2556, 7, 27, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 13, 0, 0, 2558, 2559, 7, 9, 0, 0, 2559, 2560, 7, 17, 0, 0, 2560, 2561, 7, 19, 0, 0, 2561, 2562, 7, 7, 0, 0, 2562, 348, 1, 0, 0, 0, 2563, 2564, 7, 14, 0, 0, 2564, 2565, 7, 19, 0, 0, 2565, 2566, 7, 24, 0, 0, 2566, 2567, 7, 8, 0, 0, 2567, 350, 1, 0, 0, 0, 2568, 2569, 7, 14, 0, 0, 2569, 2570, 7, 19, 0, 0, 2570, 2571, 7, 9, 0, 0, 2571, 2572, 7, 16, 0, 0, 2572, 352, 1, 0, 0, 0, 2573, 2574, 7, 14, 0, 0, 2574, 2575, 7, 9, 0, 0, 2575, 2576, 7, 27, 0, 0, 2576, 354, 1, 0, 0, 0, 2577, 2578, 7, 14, 0, 0, 2578, 2579, 7, 22, 0, 0, 2579, 2580, 7, 13, 0, 0, 2580, 2581, 7, 9, 0, 0, 2581, 2582, 7, 19, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 356, 1, 0, 0, 0, 2584, 2585, 7, 14, 0, 0, 2585, 2586, 7, 8, 0, 0, 2586, 2587, 7, 14, 0, 0, 2587, 2588, 7, 6, 0, 0, 2588, 2589, 7, 10, 0, 0, 2589, 358, 1, 0, 0, 0, 2590, 2591, 7, 12, 0, 0, 2591, 2592, 7, 5, 0, 0, 2592, 2593, 7, 16, 0, 0, 2593, 2594, 7, 5, 0, 0, 2594, 360, 1, 0, 0, 0, 2595, 2596, 7, 12, 0, 0, 2596, 2597, 7, 5, 0, 0, 2597, 2598, 7, 16, 0, 0, 2598, 2599, 7, 5, 0, 0, 2599, 2600, 7, 18, 0, 0, 2600, 2601, 7, 5, 0, 0, 2601, 2602, 7, 9, 0, 0, 2602, 2603, 7, 10, 0, 0, 2603, 362, 1, 0, 0, 0, 2604, 2605, 7, 12, 0, 0, 2605, 2606, 7, 5, 0, 0, 2606, 2607, 7, 8, 0, 0, 2607, 364, 1, 0, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 10, 0, 0, 2610, 2611, 7, 5, 0, 0, 2611, 2612, 7, 6, 0, 0, 2612, 2613, 7, 6, 0, 0, 2613, 2614, 7, 19, 0, 0, 2614, 2615, 7, 14, 0, 0, 2615, 2616, 7, 5, 0, 0, 2616, 2617, 7, 16, 0, 0, 2617, 2618, 7, 10, 0, 0, 2618, 366, 1, 0, 0, 0, 2619, 2620, 7, 12, 0, 0, 2620, 2621, 7, 10, 0, 0, 2621, 2622, 7, 14, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 5, 0, 0, 2624, 2625, 7, 13, 0, 0, 2625, 2626, 7, 10, 0, 0, 2626, 368, 1, 0, 0, 0, 2627, 2628, 7, 12, 0, 0, 2628, 2629, 7, 10, 0, 0, 2629, 2630, 7, 25, 0, 0, 2630, 2631, 7, 5, 0, 0, 2631, 2632, 7, 22, 0, 0, 2632, 2633, 7, 6, 0, 0, 2633, 2634, 7, 16, 0, 0, 2634, 2635, 7, 9, 0, 0, 2635, 370, 1, 0, 0, 0, 2636, 2637, 7, 12, 0, 0, 2637, 2638, 7, 10, 0, 0, 2638, 2639, 7, 25, 0, 0, 2639, 2640, 7, 10, 0, 0, 2640, 2641, 7, 13, 0, 0, 2641, 2642, 7, 13, 0, 0, 2642, 2643, 7, 10, 0, 0, 2643, 2644, 7, 12, 0, 0, 2644, 372, 1, 0, 0, 0, 2645, 2646, 7, 12, 0, 0, 2646, 2647, 7, 10, 0, 0, 2647, 2648, 7, 25, 0, 0, 2648, 2649, 7, 17, 0, 0, 2649, 2650, 7, 7, 0, 0, 2650, 2651, 7, 10, 0, 0, 2651, 2652, 7, 13, 0, 0, 2652, 374, 1, 0, 0, 0, 2653, 2654, 7, 12, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 6, 0, 0, 2656, 2657, 7, 10, 0, 0, 2657, 2658, 7, 16, 0, 0, 2658, 2659, 7, 10, 0, 0, 2659, 376, 1, 0, 0, 0, 2660, 2661, 7, 12, 0, 0, 2661, 2662, 7, 10, 0, 0, 2662, 2663, 7, 6, 0, 0, 2663, 2664, 7, 17, 0, 0, 2664, 2665, 7, 15, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 16, 0, 0, 2667, 2668, 7, 10, 0, 0, 2668, 2669, 7, 13, 0, 0, 2669, 378, 1, 0, 0, 0, 2670, 2671, 7, 12, 0, 0, 2671, 2672, 7, 10, 0, 0, 2672, 2673, 7, 6, 0, 0, 2673, 2674, 7, 17, 0, 0, 2674, 2675, 7, 15, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 16, 0, 0, 2677, 2678, 7, 10, 0, 0, 2678, 2679, 7, 13, 0, 0, 2679, 2680, 7, 9, 0, 0, 2680, 380, 1, 0, 0, 0, 2681, 2682, 7, 12, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 14, 0, 0, 2684, 2685, 7, 16, 0, 0, 2685, 2686, 7, 17, 0, 0, 2686, 2687, 7, 19, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 5, 0, 0, 2689, 2690, 7, 13, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 382, 1, 0, 0, 0, 2692, 2693, 7, 12, 0, 0, 2693, 2694, 7, 17, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 2696, 7, 5, 0, 0, 2696, 2697, 7, 18, 0, 0, 2697, 2698, 7, 6, 0, 0, 2698, 2699, 7, 10, 0, 0, 2699, 384, 1, 0, 0, 0, 2700, 2701, 7, 12, 0, 0, 2701, 2702, 7, 17, 0, 0, 2702, 2703, 7, 9, 0, 0, 2703, 2704, 7, 14, 0, 0, 2704, 2705, 7, 5, 0, 0, 2705, 2706, 7, 13, 0, 0, 2706, 2707, 7, 12, 0, 0, 2707, 386, 1, 0, 0, 0, 2708, 2709, 7, 12, 0, 0, 2709, 2710, 7, 19, 0, 0, 2710, 2711, 7, 14, 0, 0, 2711, 2712, 7, 22, 0, 0, 2712, 2713, 7, 15, 0, 0, 2713, 2714, 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 16, 0, 0, 2716, 388, 1, 0, 0, 0, 2717, 2718, 7, 12, 0, 0, 2718, 2719, 7, 19, 0, 0, 2719, 2720, 7, 15, 0, 0, 2720, 2721, 7, 5, 0, 0, 2721, 2722, 7, 17, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 390, 1, 0, 0, 0, 2724, 2725, 7, 12, 0, 0, 2725, 2726, 7, 19, 0, 0, 2726, 2727, 7, 22, 0, 0, 2727, 2728, 7, 18, 0, 0, 2728, 2729, 7, 6, 0, 0, 2729, 2730, 7, 10, 0, 0, 2730, 392, 1, 0, 0, 0, 2731, 2732, 7, 12, 0, 0, 2732, 2733, 7, 13, 0, 0, 2733, 2734, 7, 19, 0, 0, 2734, 2735, 7, 24, 0, 0, 2735, 394, 1, 0, 0, 0, 2736, 2737, 7, 10, 0, 0, 2737, 2738, 7, 5, 0, 0, 2738, 2739, 7, 14, 0, 0, 2739, 2740, 7, 20, 0, 0, 2740, 396, 1, 0, 0, 0, 2741, 2742, 7, 10, 0, 0, 2742, 2743, 7, 7, 0, 0, 2743, 2744, 7, 5, 0, 0, 2744, 2745, 7, 18, 0, 0, 2745, 2746, 7, 6, 0, 0, 2746, 2747, 7, 10, 0, 0, 2747, 398, 1, 0, 0, 0, 2748, 2749, 7, 10, 0, 0, 2749, 2750, 7, 7, 0, 0, 2750, 2751, 7, 14, 0, 0, 2751, 2752, 7, 19, 0, 0, 2752, 2753, 7, 12, 0, 0, 2753, 2754, 7, 17, 0, 0, 2754, 2755, 7, 7, 0, 0, 2755, 2756, 7, 23, 0, 0, 2756, 400, 1, 0, 0, 0, 2757, 2758, 7, 10, 0, 0, 2758, 2759, 7, 7, 0, 0, 2759, 2760, 7, 14, 0, 0, 2760, 2761, 7, 13, 0, 0, 2761, 2762, 7, 8, 0, 0, 2762, 2763, 7, 24, 0, 0, 2763, 2764, 7, 16, 0, 0, 2764, 2765, 7, 10, 0, 0, 2765, 2766, 7, 12, 0, 0, 2766, 402, 1, 0, 0, 0, 2767, 2768, 7, 10, 0, 0, 2768, 2769, 7, 7, 0, 0, 2769, 2770, 7, 22, 0, 0, 2770, 2771, 7, 15, 0, 0, 2771, 404, 1, 0, 0, 0, 2772, 2773, 7, 10, 0, 0, 2773, 2774, 7, 9, 0, 0, 2774, 2775, 7, 14, 0, 0, 2775, 2776, 7, 5, 0, 0, 2776, 2777, 7, 24, 0, 0, 2777, 2778, 7, 10, 0, 0, 2778, 406, 1, 0, 0, 0, 2779, 2780, 7, 10, 0, 0, 2780, 2781, 7, 27, 0, 0, 2781, 2782, 7, 10, 0, 0, 2782, 2783, 7, 7, 0, 0, 2783, 2784, 7, 16, 0, 0, 2784, 408, 1, 0, 0, 0, 2785, 2786, 7, 10, 0, 0, 2786, 2787, 7, 26, 0, 0, 2787, 2788, 7, 14, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 22, 0, 0, 2790, 2791, 7, 12, 0, 0, 2791, 2792, 7, 10, 0, 0, 2792, 410, 1, 0, 0, 0, 2793, 2794, 7, 10, 0, 0, 2794, 2795, 7, 26, 0, 0, 2795, 2796, 7, 14, 0, 0, 2796, 2797, 7, 6, 0, 0, 2797, 2798, 7, 22, 0, 0, 2798, 2799, 7, 12, 0, 0, 2799, 2800, 7, 17, 0, 0, 2800, 2801, 7, 7, 0, 0, 2801, 2802, 7, 23, 0, 0, 2802, 412, 1, 0, 0, 0, 2803, 2804, 7, 10, 0, 0, 2804, 2805, 7, 26, 0, 0, 2805, 2806, 7, 14, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 2808, 7, 22, 0, 0, 2808, 2809, 7, 9, 0, 0, 2809, 2810, 7, 17, 0, 0, 2810, 2811, 7, 27, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 414, 1, 0, 0, 0, 2813, 2814, 7, 10, 0, 0, 2814, 2815, 7, 26, 0, 0, 2815, 2816, 7, 10, 0, 0, 2816, 2817, 7, 14, 0, 0, 2817, 2818, 7, 22, 0, 0, 2818, 2819, 7, 16, 0, 0, 2819, 2820, 7, 10, 0, 0, 2820, 416, 1, 0, 0, 0, 2821, 2822, 7, 10, 0, 0, 2822, 2823, 7, 26, 0, 0, 2823, 2824, 7, 24, 0, 0, 2824, 2825, 7, 6, 0, 0, 2825, 2826, 7, 5, 0, 0, 2826, 2827, 7, 17, 0, 0, 2827, 2828, 7, 7, 0, 0, 2828, 418, 1, 0, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 26, 0, 0, 2831, 2832, 7, 16, 0, 0, 2832, 2833, 7, 10, 0, 0, 2833, 2834, 7, 7, 0, 0, 2834, 2835, 7, 9, 0, 0, 2835, 2836, 7, 17, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 7, 0, 0, 2838, 420, 1, 0, 0, 0, 2839, 2840, 7, 10, 0, 0, 2840, 2841, 7, 26, 0, 0, 2841, 2842, 7, 16, 0, 0, 2842, 2843, 7, 10, 0, 0, 2843, 2844, 7, 13, 0, 0, 2844, 2845, 7, 7, 0, 0, 2845, 2846, 7, 5, 0, 0, 2846, 2847, 7, 6, 0, 0, 2847, 422, 1, 0, 0, 0, 2848, 2849, 7, 25, 0, 0, 2849, 2850, 7, 5, 0, 0, 2850, 2851, 7, 15, 0, 0, 2851, 2852, 7, 17, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 8, 0, 0, 2854, 424, 1, 0, 0, 0, 2855, 2856, 7, 25, 0, 0, 2856, 2857, 7, 17, 0, 0, 2857, 2858, 7, 13, 0, 0, 2858, 2859, 7, 9, 0, 0, 2859, 2860, 7, 16, 0, 0, 2860, 426, 1, 0, 0, 0, 2861, 2862, 7, 25, 0, 0, 2862, 2863, 7, 19, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 2865, 7, 6, 0, 0, 2865, 2866, 7, 19, 0, 0, 2866, 2867, 7, 29, 0, 0, 2867, 2868, 7, 17, 0, 0, 2868, 2869, 7, 7, 0, 0, 2869, 2870, 7, 23, 0, 0, 2870, 428, 1, 0, 0, 0, 2871, 2872, 7, 25, 0, 0, 2872, 2873, 7, 19, 0, 0, 2873, 2874, 7, 13, 0, 0, 2874, 2875, 7, 14, 0, 0, 2875, 2876, 7, 10, 0, 0, 2876, 430, 1, 0, 0, 0, 2877, 2878, 7, 25, 0, 0, 2878, 2879, 7, 19, 0, 0, 2879, 2880, 7, 13, 0, 0, 2880, 2881, 7, 29, 0, 0, 2881, 2882, 7, 5, 0, 0, 2882, 2883, 7, 13, 0, 0, 2883, 2884, 7, 12, 0, 0, 2884, 432, 1, 0, 0, 0, 2885, 2886, 7, 25, 0, 0, 2886, 2887, 7, 22, 0, 0, 2887, 2888, 7, 7, 0, 0, 2888, 2889, 7, 14, 0, 0, 2889, 2890, 7, 16, 0, 0, 2890, 2891, 7, 17, 0, 0, 2891, 2892, 7, 19, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 434, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 2896, 7, 22, 0, 0, 2896, 2897, 7, 7, 0, 0, 2897, 2898, 7, 14, 0, 0, 2898, 2899, 7, 16, 0, 0, 2899, 2900, 7, 17, 0, 0, 2900, 2901, 7, 19, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, 7, 9, 0, 0, 2903, 436, 1, 0, 0, 0, 2904, 2905, 7, 23, 0, 0, 2905, 2906, 7, 6, 0, 0, 2906, 2907, 7, 19, 0, 0, 2907, 2908, 7, 18, 0, 0, 2908, 2909, 7, 5, 0, 0, 2909, 2910, 7, 6, 0, 0, 2910, 438, 1, 0, 0, 0, 2911, 2912, 7, 23, 0, 0, 2912, 2913, 7, 13, 0, 0, 2913, 2914, 7, 5, 0, 0, 2914, 2915, 7, 7, 0, 0, 2915, 2916, 7, 16, 0, 0, 2916, 2917, 7, 10, 0, 0, 2917, 2918, 7, 12, 0, 0, 2918, 440, 1, 0, 0, 0, 2919, 2920, 7, 20, 0, 0, 2920, 2921, 7, 5, 0, 0, 2921, 2922, 7, 7, 0, 0, 2922, 2923, 7, 12, 0, 0, 2923, 2924, 7, 6, 0, 0, 2924, 2925, 7, 10, 0, 0, 2925, 2926, 7, 13, 0, 0, 2926, 442, 1, 0, 0, 0, 2927, 2928, 7, 20, 0, 0, 2928, 2929, 7, 10, 0, 0, 2929, 2930, 7, 5, 0, 0, 2930, 2931, 7, 12, 0, 0, 2931, 2932, 7, 10, 0, 0, 2932, 2933, 7, 13, 0, 0, 2933, 444, 1, 0, 0, 0, 2934, 2935, 7, 20, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 7, 6, 0, 0, 2937, 2938, 7, 12, 0, 0, 2938, 446, 1, 0, 0, 0, 2939, 2940, 7, 20, 0, 0, 2940, 2941, 7, 19, 0, 0, 2941, 2942, 7, 22, 0, 0, 2942, 2943, 7, 13, 0, 0, 2943, 448, 1, 0, 0, 0, 2944, 2945, 7, 17, 0, 0, 2945, 2946, 7, 12, 0, 0, 2946, 2947, 7, 10, 0, 0, 2947, 2948, 7, 7, 0, 0, 2948, 2949, 7, 16, 0, 0, 2949, 2950, 7, 17, 0, 0, 2950, 2951, 7, 16, 0, 0, 2951, 2952, 7, 8, 0, 0, 2952, 450, 1, 0, 0, 0, 2953, 2954, 7, 17, 0, 0, 2954, 2955, 7, 25, 0, 0, 2955, 452, 1, 0, 0, 0, 2956, 2957, 7, 17, 0, 0, 2957, 2958, 7, 15, 0, 0, 2958, 2959, 7, 15, 0, 0, 2959, 2960, 7, 10, 0, 0, 2960, 2961, 7, 12, 0, 0, 2961, 2962, 7, 17, 0, 0, 2962, 2963, 7, 5, 0, 0, 2963, 2964, 7, 16, 0, 0, 2964, 2965, 7, 10, 0, 0, 2965, 454, 1, 0, 0, 0, 2966, 2967, 7, 17, 0, 0, 2967, 2968, 7, 15, 0, 0, 2968, 2969, 7, 15, 0, 0, 2969, 2970, 7, 22, 0, 0, 2970, 2971, 7, 16, 0, 0, 2971, 2972, 7, 5, 0, 0, 2972, 2973, 7, 18, 0, 0, 2973, 2974, 7, 6, 0, 0, 2974, 2975, 7, 10, 0, 0, 2975, 456, 1, 0, 0, 0, 2976, 2977, 7, 17, 0, 0, 2977, 2978, 7, 15, 0, 0, 2978, 2979, 7, 24, 0, 0, 2979, 2980, 7, 6, 0, 0, 2980, 2981, 7, 17, 0, 0, 2981, 2982, 7, 14, 0, 0, 2982, 2983, 7, 17, 0, 0, 2983, 2984, 7, 16, 0, 0, 2984, 458, 1, 0, 0, 0, 2985, 2986, 7, 17, 0, 0, 2986, 2987, 7, 7, 0, 0, 2987, 2988, 7, 14, 0, 0, 2988, 2989, 7, 6, 0, 0, 2989, 2990, 7, 22, 0, 0, 2990, 2991, 7, 12, 0, 0, 2991, 2992, 7, 17, 0, 0, 2992, 2993, 7, 7, 0, 0, 2993, 2994, 7, 23, 0, 0, 2994, 460, 1, 0, 0, 0, 2995, 2996, 7, 17, 0, 0, 2996, 2997, 7, 7, 0, 0, 2997, 2998, 7, 14, 0, 0, 2998, 2999, 7, 13, 0, 0, 2999, 3000, 7, 10, 0, 0, 3000, 3001, 7, 15, 0, 0, 3001, 3002, 7, 10, 0, 0, 3002, 3003, 7, 7, 0, 0, 3003, 3004, 7, 16, 0, 0, 3004, 462, 1, 0, 0, 0, 3005, 3006, 7, 17, 0, 0, 3006, 3007, 7, 7, 0, 0, 3007, 3008, 7, 12, 0, 0, 3008, 3009, 7, 10, 0, 0, 3009, 3010, 7, 26, 0, 0, 3010, 464, 1, 0, 0, 0, 3011, 3012, 7, 17, 0, 0, 3012, 3013, 7, 7, 0, 0, 3013, 3014, 7, 12, 0, 0, 3014, 3015, 7, 10, 0, 0, 3015, 3016, 7, 26, 0, 0, 3016, 3017, 7, 10, 0, 0, 3017, 3018, 7, 9, 0, 0, 3018, 466, 1, 0, 0, 0, 3019, 3020, 7, 17, 0, 0, 3020, 3021, 7, 7, 0, 0, 3021, 3022, 7, 20, 0, 0, 3022, 3023, 7, 10, 0, 0, 3023, 3024, 7, 13, 0, 0, 3024, 3025, 7, 17, 0, 0, 3025, 3026, 7, 16, 0, 0, 3026, 468, 1, 0, 0, 0, 3027, 3028, 7, 17, 0, 0, 3028, 3029, 7, 7, 0, 0, 3029, 3030, 7, 20, 0, 0, 3030, 3031, 7, 10, 0, 0, 3031, 3032, 7, 13, 0, 0, 3032, 3033, 7, 17, 0, 0, 3033, 3034, 7, 16, 0, 0, 3034, 3035, 7, 9, 0, 0, 3035, 470, 1, 0, 0, 0, 3036, 3037, 7, 17, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 6, 0, 0, 3039, 3040, 7, 17, 0, 0, 3040, 3041, 7, 7, 0, 0, 3041, 3042, 7, 10, 0, 0, 3042, 472, 1, 0, 0, 0, 3043, 3044, 7, 17, 0, 0, 3044, 3045, 7, 7, 0, 0, 3045, 3046, 7, 9, 0, 0, 3046, 3047, 7, 10, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 9, 0, 0, 3049, 3050, 7, 17, 0, 0, 3050, 3051, 7, 16, 0, 0, 3051, 3052, 7, 17, 0, 0, 3052, 3053, 7, 27, 0, 0, 3053, 3054, 7, 10, 0, 0, 3054, 474, 1, 0, 0, 0, 3055, 3056, 7, 17, 0, 0, 3056, 3057, 7, 7, 0, 0, 3057, 3058, 7, 9, 0, 0, 3058, 3059, 7, 10, 0, 0, 3059, 3060, 7, 13, 0, 0, 3060, 3061, 7, 16, 0, 0, 3061, 476, 1, 0, 0, 0, 3062, 3063, 7, 17, 0, 0, 3063, 3064, 7, 7, 0, 0, 3064, 3065, 7, 9, 0, 0, 3065, 3066, 7, 16, 0, 0, 3066, 3067, 7, 10, 0, 0, 3067, 3068, 7, 5, 0, 0, 3068, 3069, 7, 12, 0, 0, 3069, 478, 1, 0, 0, 0, 3070, 3071, 7, 17, 0, 0, 3071, 3072, 7, 7, 0, 0, 3072, 3073, 7, 27, 0, 0, 3073, 3074, 7, 19, 0, 0, 3074, 3075, 7, 21, 0, 0, 3075, 3076, 7, 10, 0, 0, 3076, 3077, 7, 13, 0, 0, 3077, 480, 1, 0, 0, 0, 3078, 3079, 7, 17, 0, 0, 3079, 3080, 7, 9, 0, 0, 3080, 3081, 7, 19, 0, 0, 3081, 3082, 7, 6, 0, 0, 3082, 3083, 7, 5, 0, 0, 3083, 3084, 7, 16, 0, 0, 3084, 3085, 7, 17, 0, 0, 3085, 3086, 7, 19, 0, 0, 3086, 3087, 7, 7, 0, 0, 3087, 482, 1, 0, 0, 0, 3088, 3089, 7, 21, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 8, 0, 0, 3091, 484, 1, 0, 0, 0, 3092, 3093, 7, 6, 0, 0, 3093, 3094, 7, 5, 0, 0, 3094, 3095, 7, 18, 0, 0, 3095, 3096, 7, 10, 0, 0, 3096, 3097, 7, 6, 0, 0, 3097, 486, 1, 0, 0, 0, 3098, 3099, 7, 6, 0, 0, 3099, 3100, 7, 5, 0, 0, 3100, 3101, 7, 7, 0, 0, 3101, 3102, 7, 23, 0, 0, 3102, 3103, 7, 22, 0, 0, 3103, 3104, 7, 5, 0, 0, 3104, 3105, 7, 23, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 488, 1, 0, 0, 0, 3107, 3108, 7, 6, 0, 0, 3108, 3109, 7, 5, 0, 0, 3109, 3110, 7, 13, 0, 0, 3110, 3111, 7, 23, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 490, 1, 0, 0, 0, 3113, 3114, 7, 6, 0, 0, 3114, 3115, 7, 5, 0, 0, 3115, 3116, 7, 9, 0, 0, 3116, 3117, 7, 16, 0, 0, 3117, 492, 1, 0, 0, 0, 3118, 3119, 7, 6, 0, 0, 3119, 3120, 7, 10, 0, 0, 3120, 3121, 7, 5, 0, 0, 3121, 3122, 7, 21, 0, 0, 3122, 3123, 7, 24, 0, 0, 3123, 3124, 7, 13, 0, 0, 3124, 3125, 7, 19, 0, 0, 3125, 3126, 7, 19, 0, 0, 3126, 3127, 7, 25, 0, 0, 3127, 494, 1, 0, 0, 0, 3128, 3129, 7, 6, 0, 0, 3129, 3130, 7, 10, 0, 0, 3130, 3131, 7, 27, 0, 0, 3131, 3132, 7, 10, 0, 0, 3132, 3133, 7, 6, 0, 0, 3133, 496, 1, 0, 0, 0, 3134, 3135, 7, 6, 0, 0, 3135, 3136, 7, 17, 0, 0, 3136, 3137, 7, 9, 0, 0, 3137, 3138, 7, 16, 0, 0, 3138, 3139, 7, 10, 0, 0, 3139, 3140, 7, 7, 0, 0, 3140, 498, 1, 0, 0, 0, 3141, 3142, 7, 6, 0, 0, 3142, 3143, 7, 19, 0, 0, 3143, 3144, 7, 5, 0, 0, 3144, 3145, 7, 12, 0, 0, 3145, 500, 1, 0, 0, 0, 3146, 3147, 7, 6, 0, 0, 3147, 3148, 7, 19, 0, 0, 3148, 3149, 7, 14, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 502, 1, 0, 0, 0, 3152, 3153, 7, 6, 0, 0, 3153, 3154, 7, 19, 0, 0, 3154, 3155, 7, 14, 0, 0, 3155, 3156, 7, 5, 0, 0, 3156, 3157, 7, 16, 0, 0, 3157, 3158, 7, 17, 0, 0, 3158, 3159, 7, 19, 0, 0, 3159, 3160, 7, 7, 0, 0, 3160, 504, 1, 0, 0, 0, 3161, 3162, 7, 6, 0, 0, 3162, 3163, 7, 19, 0, 0, 3163, 3164, 7, 14, 0, 0, 3164, 3165, 7, 21, 0, 0, 3165, 506, 1, 0, 0, 0, 3166, 3167, 7, 15, 0, 0, 3167, 3168, 7, 5, 0, 0, 3168, 3169, 7, 24, 0, 0, 3169, 3170, 7, 24, 0, 0, 3170, 3171, 7, 17, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, 7, 23, 0, 0, 3173, 508, 1, 0, 0, 0, 3174, 3175, 7, 15, 0, 0, 3175, 3176, 7, 5, 0, 0, 3176, 3177, 7, 16, 0, 0, 3177, 3178, 7, 14, 0, 0, 3178, 3179, 7, 20, 0, 0, 3179, 510, 1, 0, 0, 0, 3180, 3181, 7, 15, 0, 0, 3181, 3182, 7, 5, 0, 0, 3182, 3183, 7, 16, 0, 0, 3183, 3184, 7, 14, 0, 0, 3184, 3185, 7, 20, 0, 0, 3185, 3186, 7, 10, 0, 0, 3186, 3187, 7, 12, 0, 0, 3187, 512, 1, 0, 0, 0, 3188, 3189, 7, 15, 0, 0, 3189, 3190, 7, 5, 0, 0, 3190, 3191, 7, 16, 0, 0, 3191, 3192, 7, 10, 0, 0, 3192, 3193, 7, 13, 0, 0, 3193, 3194, 7, 17, 0, 0, 3194, 3195, 7, 5, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 3197, 7, 17, 0, 0, 3197, 3198, 7, 11, 0, 0, 3198, 3199, 7, 10, 0, 0, 3199, 3200, 7, 12, 0, 0, 3200, 514, 1, 0, 0, 0, 3201, 3202, 7, 15, 0, 0, 3202, 3203, 7, 5, 0, 0, 3203, 3204, 7, 26, 0, 0, 3204, 3205, 7, 27, 0, 0, 3205, 3206, 7, 5, 0, 0, 3206, 3207, 7, 6, 0, 0, 3207, 3208, 7, 22, 0, 0, 3208, 3209, 7, 10, 0, 0, 3209, 516, 1, 0, 0, 0, 3210, 3211, 7, 15, 0, 0, 3211, 3212, 7, 10, 0, 0, 3212, 3213, 7, 13, 0, 0, 3213, 3214, 7, 23, 0, 0, 3214, 3215, 7, 10, 0, 0, 3215, 518, 1, 0, 0, 0, 3216, 3217, 7, 15, 0, 0, 3217, 3218, 7, 17, 0, 0, 3218, 3219, 7, 7, 0, 0, 3219, 3220, 7, 22, 0, 0, 3220, 3221, 7, 16, 0, 0, 3221, 3222, 7, 10, 0, 0, 3222, 520, 1, 0, 0, 0, 3223, 3224, 7, 15, 0, 0, 3224, 3225, 7, 17, 0, 0, 3225, 3226, 7, 7, 0, 0, 3226, 3227, 7, 27, 0, 0, 3227, 3228, 7, 5, 0, 0, 3228, 3229, 7, 6, 0, 0, 3229, 3230, 7, 22, 0, 0, 3230, 3231, 7, 10, 0, 0, 3231, 522, 1, 0, 0, 0, 3232, 3233, 7, 15, 0, 0, 3233, 3234, 7, 19, 0, 0, 3234, 3235, 7, 12, 0, 0, 3235, 3236, 7, 10, 0, 0, 3236, 524, 1, 0, 0, 0, 3237, 3238, 7, 15, 0, 0, 3238, 3239, 7, 19, 0, 0, 3239, 3240, 7, 7, 0, 0, 3240, 3241, 7, 16, 0, 0, 3241, 3242, 7, 20, 0, 0, 3242, 526, 1, 0, 0, 0, 3243, 3244, 7, 15, 0, 0, 3244, 3245, 7, 19, 0, 0, 3245, 3246, 7, 27, 0, 0, 3246, 3247, 7, 10, 0, 0, 3247, 528, 1, 0, 0, 0, 3248, 3249, 7, 7, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 3251, 7, 15, 0, 0, 3251, 3252, 7, 10, 0, 0, 3252, 530, 1, 0, 0, 0, 3253, 3254, 7, 7, 0, 0, 3254, 3255, 7, 5, 0, 0, 3255, 3256, 7, 15, 0, 0, 3256, 3257, 7, 10, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 532, 1, 0, 0, 0, 3259, 3260, 7, 7, 0, 0, 3260, 3261, 7, 10, 0, 0, 3261, 3262, 7, 26, 0, 0, 3262, 3263, 7, 16, 0, 0, 3263, 534, 1, 0, 0, 0, 3264, 3265, 7, 7, 0, 0, 3265, 3266, 7, 19, 0, 0, 3266, 536, 1, 0, 0, 0, 3267, 3268, 7, 7, 0, 0, 3268, 3269, 7, 19, 0, 0, 3269, 3270, 7, 16, 0, 0, 3270, 3271, 7, 20, 0, 0, 3271, 3272, 7, 17, 0, 0, 3272, 3273, 7, 7, 0, 0, 3273, 3274, 7, 23, 0, 0, 3274, 538, 1, 0, 0, 0, 3275, 3276, 7, 7, 0, 0, 3276, 3277, 7, 19, 0, 0, 3277, 3278, 7, 16, 0, 0, 3278, 3279, 7, 17, 0, 0, 3279, 3280, 7, 25, 0, 0, 3280, 3281, 7, 8, 0, 0, 3281, 540, 1, 0, 0, 0, 3282, 3283, 7, 7, 0, 0, 3283, 3284, 7, 19, 0, 0, 3284, 3285, 7, 29, 0, 0, 3285, 3286, 7, 5, 0, 0, 3286, 3287, 7, 17, 0, 0, 3287, 3288, 7, 16, 0, 0, 3288, 542, 1, 0, 0, 0, 3289, 3290, 7, 7, 0, 0, 3290, 3291, 7, 22, 0, 0, 3291, 3292, 7, 6, 0, 0, 3292, 3293, 7, 6, 0, 0, 3293, 3294, 7, 9, 0, 0, 3294, 544, 1, 0, 0, 0, 3295, 3296, 7, 19, 0, 0, 3296, 3297, 7, 18, 0, 0, 3297, 3298, 7, 30, 0, 0, 3298, 3299, 7, 10, 0, 0, 3299, 3300, 7, 14, 0, 0, 3300, 3301, 7, 16, 0, 0, 3301, 546, 1, 0, 0, 0, 3302, 3303, 7, 19, 0, 0, 3303, 3304, 7, 25, 0, 0, 3304, 548, 1, 0, 0, 0, 3305, 3306, 7, 19, 0, 0, 3306, 3307, 7, 25, 0, 0, 3307, 3308, 7, 25, 0, 0, 3308, 550, 1, 0, 0, 0, 3309, 3310, 7, 19, 0, 0, 3310, 3311, 7, 17, 0, 0, 3311, 3312, 7, 12, 0, 0, 3312, 3313, 7, 9, 0, 0, 3313, 552, 1, 0, 0, 0, 3314, 3315, 7, 19, 0, 0, 3315, 3316, 7, 24, 0, 0, 3316, 3317, 7, 10, 0, 0, 3317, 3318, 7, 13, 0, 0, 3318, 3319, 7, 5, 0, 0, 3319, 3320, 7, 16, 0, 0, 3320, 3321, 7, 19, 0, 0, 3321, 3322, 7, 13, 0, 0, 3322, 554, 1, 0, 0, 0, 3323, 3324, 7, 19, 0, 0, 3324, 3325, 7, 24, 0, 0, 3325, 3326, 7, 16, 0, 0, 3326, 3327, 7, 17, 0, 0, 3327, 3328, 7, 19, 0, 0, 3328, 3329, 7, 7, 0, 0, 3329, 556, 1, 0, 0, 0, 3330, 3331, 7, 19, 0, 0, 3331, 3332, 7, 24, 0, 0, 3332, 3333, 7, 16, 0, 0, 3333, 3334, 7, 17, 0, 0, 3334, 3335, 7, 19, 0, 0, 3335, 3336, 7, 7, 0, 0, 3336, 3337, 7, 9, 0, 0, 3337, 558, 1, 0, 0, 0, 3338, 3339, 7, 19, 0, 0, 3339, 3340, 7, 29, 0, 0, 3340, 3341, 7, 7, 0, 0, 3341, 3342, 7, 10, 0, 0, 3342, 3343, 7, 12, 0, 0, 3343, 560, 1, 0, 0, 0, 3344, 3345, 7, 19, 0, 0, 3345, 3346, 7, 29, 0, 0, 3346, 3347, 7, 7, 0, 0, 3347, 3348, 7, 10, 0, 0, 3348, 3349, 7, 13, 0, 0, 3349, 562, 1, 0, 0, 0, 3350, 3351, 7, 24, 0, 0, 3351, 3352, 7, 5, 0, 0, 3352, 3353, 7, 13, 0, 0, 3353, 3354, 7, 9, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, 7, 13, 0, 0, 3356, 564, 1, 0, 0, 0, 3357, 3358, 7, 24, 0, 0, 3358, 3359, 7, 5, 0, 0, 3359, 3360, 7, 13, 0, 0, 3360, 3361, 7, 16, 0, 0, 3361, 3362, 7, 17, 0, 0, 3362, 3363, 7, 5, 0, 0, 3363, 3364, 7, 6, 0, 0, 3364, 566, 1, 0, 0, 0, 3365, 3366, 7, 24, 0, 0, 3366, 3367, 7, 5, 0, 0, 3367, 3368, 7, 13, 0, 0, 3368, 3369, 7, 16, 0, 0, 3369, 3370, 7, 17, 0, 0, 3370, 3371, 7, 16, 0, 0, 3371, 3372, 7, 17, 0, 0, 3372, 3373, 7, 19, 0, 0, 3373, 3374, 7, 7, 0, 0, 3374, 568, 1, 0, 0, 0, 3375, 3376, 7, 24, 0, 0, 3376, 3377, 7, 5, 0, 0, 3377, 3378, 7, 9, 0, 0, 3378, 3379, 7, 9, 0, 0, 3379, 3380, 7, 17, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 23, 0, 0, 3382, 570, 1, 0, 0, 0, 3383, 3384, 7, 24, 0, 0, 3384, 3385, 7, 5, 0, 0, 3385, 3386, 7, 9, 0, 0, 3386, 3387, 7, 9, 0, 0, 3387, 3388, 7, 29, 0, 0, 3388, 3389, 7, 19, 0, 0, 3389, 3390, 7, 13, 0, 0, 3390, 3391, 7, 12, 0, 0, 3391, 572, 1, 0, 0, 0, 3392, 3393, 7, 24, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, 7, 5, 0, 0, 3395, 3396, 7, 7, 0, 0, 3396, 3397, 7, 9, 0, 0, 3397, 574, 1, 0, 0, 0, 3398, 3399, 7, 24, 0, 0, 3399, 3400, 7, 13, 0, 0, 3400, 3401, 7, 10, 0, 0, 3401, 3402, 7, 14, 0, 0, 3402, 3403, 7, 10, 0, 0, 3403, 3404, 7, 12, 0, 0, 3404, 3405, 7, 17, 0, 0, 3405, 3406, 7, 7, 0, 0, 3406, 3407, 7, 23, 0, 0, 3407, 576, 1, 0, 0, 0, 3408, 3409, 7, 24, 0, 0, 3409, 3410, 7, 13, 0, 0, 3410, 3411, 7, 10, 0, 0, 3411, 3412, 7, 24, 0, 0, 3412, 3413, 7, 5, 0, 0, 3413, 3414, 7, 13, 0, 0, 3414, 3415, 7, 10, 0, 0, 3415, 578, 1, 0, 0, 0, 3416, 3417, 7, 24, 0, 0, 3417, 3418, 7, 13, 0, 0, 3418, 3419, 7, 10, 0, 0, 3419, 3420, 7, 24, 0, 0, 3420, 3421, 7, 5, 0, 0, 3421, 3422, 7, 13, 0, 0, 3422, 3423, 7, 10, 0, 0, 3423, 3424, 7, 12, 0, 0, 3424, 580, 1, 0, 0, 0, 3425, 3426, 7, 24, 0, 0, 3426, 3427, 7, 13, 0, 0, 3427, 3428, 7, 10, 0, 0, 3428, 3429, 7, 9, 0, 0, 3429, 3430, 7, 10, 0, 0, 3430, 3431, 7, 13, 0, 0, 3431, 3432, 7, 27, 0, 0, 3432, 3433, 7, 10, 0, 0, 3433, 582, 1, 0, 0, 0, 3434, 3435, 7, 24, 0, 0, 3435, 3436, 7, 13, 0, 0, 3436, 3437, 7, 17, 0, 0, 3437, 3438, 7, 19, 0, 0, 3438, 3439, 7, 13, 0, 0, 3439, 584, 1, 0, 0, 0, 3440, 3441, 7, 24, 0, 0, 3441, 3442, 7, 13, 0, 0, 3442, 3443, 7, 17, 0, 0, 3443, 3444, 7, 27, 0, 0, 3444, 3445, 7, 17, 0, 0, 3445, 3446, 7, 6, 0, 0, 3446, 3447, 7, 10, 0, 0, 3447, 3448, 7, 23, 0, 0, 3448, 3449, 7, 10, 0, 0, 3449, 3450, 7, 9, 0, 0, 3450, 586, 1, 0, 0, 0, 3451, 3452, 7, 24, 0, 0, 3452, 3453, 7, 13, 0, 0, 3453, 3454, 7, 19, 0, 0, 3454, 3455, 7, 14, 0, 0, 3455, 3456, 7, 10, 0, 0, 3456, 3457, 7, 12, 0, 0, 3457, 3458, 7, 22, 0, 0, 3458, 3459, 7, 13, 0, 0, 3459, 3460, 7, 5, 0, 0, 3460, 3461, 7, 6, 0, 0, 3461, 588, 1, 0, 0, 0, 3462, 3463, 7, 24, 0, 0, 3463, 3464, 7, 13, 0, 0, 3464, 3465, 7, 19, 0, 0, 3465, 3466, 7, 14, 0, 0, 3466, 3467, 7, 10, 0, 0, 3467, 3468, 7, 12, 0, 0, 3468, 3469, 7, 22, 0, 0, 3469, 3470, 7, 13, 0, 0, 3470, 3471, 7, 10, 0, 0, 3471, 590, 1, 0, 0, 0, 3472, 3473, 7, 24, 0, 0, 3473, 3474, 7, 13, 0, 0, 3474, 3475, 7, 19, 0, 0, 3475, 3476, 7, 23, 0, 0, 3476, 3477, 7, 13, 0, 0, 3477, 3478, 7, 5, 0, 0, 3478, 3479, 7, 15, 0, 0, 3479, 592, 1, 0, 0, 0, 3480, 3481, 7, 28, 0, 0, 3481, 3482, 7, 22, 0, 0, 3482, 3483, 7, 19, 0, 0, 3483, 3484, 7, 16, 0, 0, 3484, 3485, 7, 10, 0, 0, 3485, 594, 1, 0, 0, 0, 3486, 3487, 7, 13, 0, 0, 3487, 3488, 7, 5, 0, 0, 3488, 3489, 7, 7, 0, 0, 3489, 3490, 7, 23, 0, 0, 3490, 3491, 7, 10, 0, 0, 3491, 596, 1, 0, 0, 0, 3492, 3493, 7, 13, 0, 0, 3493, 3494, 7, 10, 0, 0, 3494, 3495, 7, 5, 0, 0, 3495, 3496, 7, 12, 0, 0, 3496, 598, 1, 0, 0, 0, 3497, 3498, 7, 13, 0, 0, 3498, 3499, 7, 10, 0, 0, 3499, 3500, 7, 5, 0, 0, 3500, 3501, 7, 9, 0, 0, 3501, 3502, 7, 9, 0, 0, 3502, 3503, 7, 17, 0, 0, 3503, 3504, 7, 23, 0, 0, 3504, 3505, 7, 7, 0, 0, 3505, 600, 1, 0, 0, 0, 3506, 3507, 7, 13, 0, 0, 3507, 3508, 7, 10, 0, 0, 3508, 3509, 7, 14, 0, 0, 3509, 3510, 7, 20, 0, 0, 3510, 3511, 7, 10, 0, 0, 3511, 3512, 7, 14, 0, 0, 3512, 3513, 7, 21, 0, 0, 3513, 602, 1, 0, 0, 0, 3514, 3515, 7, 13, 0, 0, 3515, 3516, 7, 10, 0, 0, 3516, 3517, 7, 14, 0, 0, 3517, 3518, 7, 22, 0, 0, 3518, 3519, 7, 13, 0, 0, 3519, 3520, 7, 9, 0, 0, 3520, 3521, 7, 17, 0, 0, 3521, 3522, 7, 27, 0, 0, 3522, 3523, 7, 10, 0, 0, 3523, 604, 1, 0, 0, 0, 3524, 3525, 7, 13, 0, 0, 3525, 3526, 7, 10, 0, 0, 3526, 3527, 7, 25, 0, 0, 3527, 606, 1, 0, 0, 0, 3528, 3529, 7, 13, 0, 0, 3529, 3530, 7, 10, 0, 0, 3530, 3531, 7, 25, 0, 0, 3531, 3532, 7, 13, 0, 0, 3532, 3533, 7, 10, 0, 0, 3533, 3534, 7, 9, 0, 0, 3534, 3535, 7, 20, 0, 0, 3535, 608, 1, 0, 0, 0, 3536, 3537, 7, 13, 0, 0, 3537, 3538, 7, 10, 0, 0, 3538, 3539, 7, 17, 0, 0, 3539, 3540, 7, 7, 0, 0, 3540, 3541, 7, 12, 0, 0, 3541, 3542, 7, 10, 0, 0, 3542, 3543, 7, 26, 0, 0, 3543, 610, 1, 0, 0, 0, 3544, 3545, 7, 13, 0, 0, 3545, 3546, 7, 10, 0, 0, 3546, 3547, 7, 6, 0, 0, 3547, 3548, 7, 5, 0, 0, 3548, 3549, 7, 16, 0, 0, 3549, 3550, 7, 17, 0, 0, 3550, 3551, 7, 27, 0, 0, 3551, 3552, 7, 10, 0, 0, 3552, 612, 1, 0, 0, 0, 3553, 3554, 7, 13, 0, 0, 3554, 3555, 7, 10, 0, 0, 3555, 3556, 7, 6, 0, 0, 3556, 3557, 7, 10, 0, 0, 3557, 3558, 7, 5, 0, 0, 3558, 3559, 7, 9, 0, 0, 3559, 3560, 7, 10, 0, 0, 3560, 614, 1, 0, 0, 0, 3561, 3562, 7, 13, 0, 0, 3562, 3563, 7, 10, 0, 0, 3563, 3564, 7, 7, 0, 0, 3564, 3565, 7, 5, 0, 0, 3565, 3566, 7, 15, 0, 0, 3566, 3567, 7, 10, 0, 0, 3567, 616, 1, 0, 0, 0, 3568, 3569, 7, 13, 0, 0, 3569, 3570, 7, 10, 0, 0, 3570, 3571, 7, 24, 0, 0, 3571, 3572, 7, 10, 0, 0, 3572, 3573, 7, 5, 0, 0, 3573, 3574, 7, 16, 0, 0, 3574, 3575, 7, 5, 0, 0, 3575, 3576, 7, 18, 0, 0, 3576, 3577, 7, 6, 0, 0, 3577, 3578, 7, 10, 0, 0, 3578, 618, 1, 0, 0, 0, 3579, 3580, 7, 13, 0, 0, 3580, 3581, 7, 10, 0, 0, 3581, 3582, 7, 24, 0, 0, 3582, 3583, 7, 6, 0, 0, 3583, 3584, 7, 5, 0, 0, 3584, 3585, 7, 14, 0, 0, 3585, 3586, 7, 10, 0, 0, 3586, 620, 1, 0, 0, 0, 3587, 3588, 7, 13, 0, 0, 3588, 3589, 7, 10, 0, 0, 3589, 3590, 7, 24, 0, 0, 3590, 3591, 7, 6, 0, 0, 3591, 3592, 7, 17, 0, 0, 3592, 3593, 7, 14, 0, 0, 3593, 3594, 7, 5, 0, 0, 3594, 622, 1, 0, 0, 0, 3595, 3596, 7, 13, 0, 0, 3596, 3597, 7, 10, 0, 0, 3597, 3598, 7, 9, 0, 0, 3598, 3599, 7, 10, 0, 0, 3599, 3600, 7, 16, 0, 0, 3600, 624, 1, 0, 0, 0, 3601, 3602, 7, 13, 0, 0, 3602, 3603, 7, 10, 0, 0, 3603, 3604, 7, 9, 0, 0, 3604, 3605, 7, 16, 0, 0, 3605, 3606, 7, 5, 0, 0, 3606, 3607, 7, 13, 0, 0, 3607, 3608, 7, 16, 0, 0, 3608, 626, 1, 0, 0, 0, 3609, 3610, 7, 13, 0, 0, 3610, 3611, 7, 10, 0, 0, 3611, 3612, 7, 9, 0, 0, 3612, 3613, 7, 16, 0, 0, 3613, 3614, 7, 13, 0, 0, 3614, 3615, 7, 17, 0, 0, 3615, 3616, 7, 14, 0, 0, 3616, 3617, 7, 16, 0, 0, 3617, 628, 1, 0, 0, 0, 3618, 3619, 7, 13, 0, 0, 3619, 3620, 7, 10, 0, 0, 3620, 3621, 7, 16, 0, 0, 3621, 3622, 7, 22, 0, 0, 3622, 3623, 7, 13, 0, 0, 3623, 3624, 7, 7, 0, 0, 3624, 3625, 7, 9, 0, 0, 3625, 630, 1, 0, 0, 0, 3626, 3627, 7, 13, 0, 0, 3627, 3628, 7, 10, 0, 0, 3628, 3629, 7, 27, 0, 0, 3629, 3630, 7, 19, 0, 0, 3630, 3631, 7, 21, 0, 0, 3631, 3632, 7, 10, 0, 0, 3632, 632, 1, 0, 0, 0, 3633, 3634, 7, 13, 0, 0, 3634, 3635, 7, 19, 0, 0, 3635, 3636, 7, 6, 0, 0, 3636, 3637, 7, 10, 0, 0, 3637, 634, 1, 0, 0, 0, 3638, 3639, 7, 13, 0, 0, 3639, 3640, 7, 19, 0, 0, 3640, 3641, 7, 6, 0, 0, 3641, 3642, 7, 6, 0, 0, 3642, 3643, 7, 18, 0, 0, 3643, 3644, 7, 5, 0, 0, 3644, 3645, 7, 14, 0, 0, 3645, 3646, 7, 21, 0, 0, 3646, 636, 1, 0, 0, 0, 3647, 3648, 7, 13, 0, 0, 3648, 3649, 7, 19, 0, 0, 3649, 3650, 7, 29, 0, 0, 3650, 3651, 7, 9, 0, 0, 3651, 638, 1, 0, 0, 0, 3652, 3653, 7, 13, 0, 0, 3653, 3654, 7, 22, 0, 0, 3654, 3655, 7, 6, 0, 0, 3655, 3656, 7, 10, 0, 0, 3656, 640, 1, 0, 0, 0, 3657, 3658, 7, 9, 0, 0, 3658, 3659, 7, 5, 0, 0, 3659, 3660, 7, 27, 0, 0, 3660, 3661, 7, 10, 0, 0, 3661, 3662, 7, 24, 0, 0, 3662, 3663, 7, 19, 0, 0, 3663, 3664, 7, 17, 0, 0, 3664, 3665, 7, 7, 0, 0, 3665, 3666, 7, 16, 0, 0, 3666, 642, 1, 0, 0, 0, 3667, 3668, 7, 9, 0, 0, 3668, 3669, 7, 14, 0, 0, 3669, 3670, 7, 20, 0, 0, 3670, 3671, 7, 10, 0, 0, 3671, 3672, 7, 15, 0, 0, 3672, 3673, 7, 5, 0, 0, 3673, 644, 1, 0, 0, 0, 3674, 3675, 7, 9, 0, 0, 3675, 3676, 7, 14, 0, 0, 3676, 3677, 7, 13, 0, 0, 3677, 3678, 7, 19, 0, 0, 3678, 3679, 7, 6, 0, 0, 3679, 3680, 7, 6, 0, 0, 3680, 646, 1, 0, 0, 0, 3681, 3682, 7, 9, 0, 0, 3682, 3683, 7, 10, 0, 0, 3683, 3684, 7, 5, 0, 0, 3684, 3685, 7, 13, 0, 0, 3685, 3686, 7, 14, 0, 0, 3686, 3687, 7, 20, 0, 0, 3687, 648, 1, 0, 0, 0, 3688, 3689, 7, 9, 0, 0, 3689, 3690, 7, 10, 0, 0, 3690, 3691, 7, 14, 0, 0, 3691, 3692, 7, 19, 0, 0, 3692, 3693, 7, 7, 0, 0, 3693, 3694, 7, 12, 0, 0, 3694, 650, 1, 0, 0, 0, 3695, 3696, 7, 9, 0, 0, 3696, 3697, 7, 10, 0, 0, 3697, 3698, 7, 14, 0, 0, 3698, 3699, 7, 22, 0, 0, 3699, 3700, 7, 13, 0, 0, 3700, 3701, 7, 17, 0, 0, 3701, 3702, 7, 16, 0, 0, 3702, 3703, 7, 8, 0, 0, 3703, 652, 1, 0, 0, 0, 3704, 3705, 7, 9, 0, 0, 3705, 3706, 7, 10, 0, 0, 3706, 3707, 7, 28, 0, 0, 3707, 3708, 7, 22, 0, 0, 3708, 3709, 7, 10, 0, 0, 3709, 3710, 7, 7, 0, 0, 3710, 3711, 7, 14, 0, 0, 3711, 3712, 7, 10, 0, 0, 3712, 654, 1, 0, 0, 0, 3713, 3714, 7, 9, 0, 0, 3714, 3715, 7, 10, 0, 0, 3715, 3716, 7, 28, 0, 0, 3716, 3717, 7, 22, 0, 0, 3717, 3718, 7, 10, 0, 0, 3718, 3719, 7, 7, 0, 0, 3719, 3720, 7, 14, 0, 0, 3720, 3721, 7, 10, 0, 0, 3721, 3722, 7, 9, 0, 0, 3722, 656, 1, 0, 0, 0, 3723, 3724, 7, 9, 0, 0, 3724, 3725, 7, 10, 0, 0, 3725, 3726, 7, 13, 0, 0, 3726, 3727, 7, 17, 0, 0, 3727, 3728, 7, 5, 0, 0, 3728, 3729, 7, 6, 0, 0, 3729, 3730, 7, 17, 0, 0, 3730, 3731, 7, 11, 0, 0, 3731, 3732, 7, 5, 0, 0, 3732, 3733, 7, 18, 0, 0, 3733, 3734, 7, 6, 0, 0, 3734, 3735, 7, 10, 0, 0, 3735, 658, 1, 0, 0, 0, 3736, 3737, 7, 9, 0, 0, 3737, 3738, 7, 10, 0, 0, 3738, 3739, 7, 13, 0, 0, 3739, 3740, 7, 27, 0, 0, 3740, 3741, 7, 10, 0, 0, 3741, 3742, 7, 13, 0, 0, 3742, 660, 1, 0, 0, 0, 3743, 3744, 7, 9, 0, 0, 3744, 3745, 7, 10, 0, 0, 3745, 3746, 7, 9, 0, 0, 3746, 3747, 7, 9, 0, 0, 3747, 3748, 7, 17, 0, 0, 3748, 3749, 7, 19, 0, 0, 3749, 3750, 7, 7, 0, 0, 3750, 662, 1, 0, 0, 0, 3751, 3752, 7, 9, 0, 0, 3752, 3753, 7, 10, 0, 0, 3753, 3754, 7, 16, 0, 0, 3754, 664, 1, 0, 0, 0, 3755, 3756, 7, 9, 0, 0, 3756, 3757, 7, 20, 0, 0, 3757, 3758, 7, 5, 0, 0, 3758, 3759, 7, 13, 0, 0, 3759, 3760, 7, 10, 0, 0, 3760, 666, 1, 0, 0, 0, 3761, 3762, 7, 9, 0, 0, 3762, 3763, 7, 20, 0, 0, 3763, 3764, 7, 19, 0, 0, 3764, 3765, 7, 29, 0, 0, 3765, 668, 1, 0, 0, 0, 3766, 3767, 7, 9, 0, 0, 3767, 3768, 7, 17, 0, 0, 3768, 3769, 7, 15, 0, 0, 3769, 3770, 7, 24, 0, 0, 3770, 3771, 7, 6, 0, 0, 3771, 3772, 7, 10, 0, 0, 3772, 670, 1, 0, 0, 0, 3773, 3774, 7, 9, 0, 0, 3774, 3775, 7, 7, 0, 0, 3775, 3776, 7, 5, 0, 0, 3776, 3777, 7, 24, 0, 0, 3777, 3778, 7, 9, 0, 0, 3778, 3779, 7, 20, 0, 0, 3779, 3780, 7, 19, 0, 0, 3780, 3781, 7, 16, 0, 0, 3781, 672, 1, 0, 0, 0, 3782, 3783, 7, 9, 0, 0, 3783, 3784, 7, 16, 0, 0, 3784, 3785, 7, 5, 0, 0, 3785, 3786, 7, 18, 0, 0, 3786, 3787, 7, 6, 0, 0, 3787, 3788, 7, 10, 0, 0, 3788, 674, 1, 0, 0, 0, 3789, 3790, 7, 9, 0, 0, 3790, 3791, 7, 16, 0, 0, 3791, 3792, 7, 5, 0, 0, 3792, 3793, 7, 7, 0, 0, 3793, 3794, 7, 12, 0, 0, 3794, 3795, 7, 5, 0, 0, 3795, 3796, 7, 6, 0, 0, 3796, 3797, 7, 19, 0, 0, 3797, 3798, 7, 7, 0, 0, 3798, 3799, 7, 10, 0, 0, 3799, 676, 1, 0, 0, 0, 3800, 3801, 7, 9, 0, 0, 3801, 3802, 7, 16, 0, 0, 3802, 3803, 7, 5, 0, 0, 3803, 3804, 7, 13, 0, 0, 3804, 3805, 7, 16, 0, 0, 3805, 678, 1, 0, 0, 0, 3806, 3807, 7, 9, 0, 0, 3807, 3808, 7, 16, 0, 0, 3808, 3809, 7, 5, 0, 0, 3809, 3810, 7, 16, 0, 0, 3810, 3811, 7, 10, 0, 0, 3811, 3812, 7, 15, 0, 0, 3812, 3813, 7, 10, 0, 0, 3813, 3814, 7, 7, 0, 0, 3814, 3815, 7, 16, 0, 0, 3815, 680, 1, 0, 0, 0, 3816, 3817, 7, 9, 0, 0, 3817, 3818, 7, 16, 0, 0, 3818, 3819, 7, 5, 0, 0, 3819, 3820, 7, 16, 0, 0, 3820, 3821, 7, 17, 0, 0, 3821, 3822, 7, 9, 0, 0, 3822, 3823, 7, 16, 0, 0, 3823, 3824, 7, 17, 0, 0, 3824, 3825, 7, 14, 0, 0, 3825, 3826, 7, 9, 0, 0, 3826, 682, 1, 0, 0, 0, 3827, 3828, 7, 9, 0, 0, 3828, 3829, 7, 16, 0, 0, 3829, 3830, 7, 12, 0, 0, 3830, 3831, 7, 17, 0, 0, 3831, 3832, 7, 7, 0, 0, 3832, 684, 1, 0, 0, 0, 3833, 3834, 7, 9, 0, 0, 3834, 3835, 7, 16, 0, 0, 3835, 3836, 7, 12, 0, 0, 3836, 3837, 7, 19, 0, 0, 3837, 3838, 7, 22, 0, 0, 3838, 3839, 7, 16, 0, 0, 3839, 686, 1, 0, 0, 0, 3840, 3841, 7, 9, 0, 0, 3841, 3842, 7, 16, 0, 0, 3842, 3843, 7, 19, 0, 0, 3843, 3844, 7, 13, 0, 0, 3844, 3845, 7, 5, 0, 0, 3845, 3846, 7, 23, 0, 0, 3846, 3847, 7, 10, 0, 0, 3847, 688, 1, 0, 0, 0, 3848, 3849, 7, 9, 0, 0, 3849, 3850, 7, 16, 0, 0, 3850, 3851, 7, 13, 0, 0, 3851, 3852, 7, 17, 0, 0, 3852, 3853, 7, 14, 0, 0, 3853, 3854, 7, 16, 0, 0, 3854, 690, 1, 0, 0, 0, 3855, 3856, 7, 9, 0, 0, 3856, 3857, 7, 16, 0, 0, 3857, 3858, 7, 13, 0, 0, 3858, 3859, 7, 17, 0, 0, 3859, 3860, 7, 24, 0, 0, 3860, 692, 1, 0, 0, 0, 3861, 3862, 7, 9, 0, 0, 3862, 3863, 7, 8, 0, 0, 3863, 3864, 7, 9, 0, 0, 3864, 3865, 7, 17, 0, 0, 3865, 3866, 7, 12, 0, 0, 3866, 694, 1, 0, 0, 0, 3867, 3868, 7, 9, 0, 0, 3868, 3869, 7, 8, 0, 0, 3869, 3870, 7, 9, 0, 0, 3870, 3871, 7, 16, 0, 0, 3871, 3872, 7, 10, 0, 0, 3872, 3873, 7, 15, 0, 0, 3873, 696, 1, 0, 0, 0, 3874, 3875, 7, 16, 0, 0, 3875, 3876, 7, 5, 0, 0, 3876, 3877, 7, 18, 0, 0, 3877, 3878, 7, 6, 0, 0, 3878, 3879, 7, 10, 0, 0, 3879, 3880, 7, 9, 0, 0, 3880, 698, 1, 0, 0, 0, 3881, 3882, 7, 16, 0, 0, 3882, 3883, 7, 5, 0, 0, 3883, 3884, 7, 18, 0, 0, 3884, 3885, 7, 6, 0, 0, 3885, 3886, 7, 10, 0, 0, 3886, 3887, 7, 9, 0, 0, 3887, 3888, 7, 24, 0, 0, 3888, 3889, 7, 5, 0, 0, 3889, 3890, 7, 14, 0, 0, 3890, 3891, 7, 10, 0, 0, 3891, 700, 1, 0, 0, 0, 3892, 3893, 7, 16, 0, 0, 3893, 3894, 7, 10, 0, 0, 3894, 3895, 7, 15, 0, 0, 3895, 3896, 7, 24, 0, 0, 3896, 702, 1, 0, 0, 0, 3897, 3898, 7, 16, 0, 0, 3898, 3899, 7, 10, 0, 0, 3899, 3900, 7, 15, 0, 0, 3900, 3901, 7, 24, 0, 0, 3901, 3902, 7, 6, 0, 0, 3902, 3903, 7, 5, 0, 0, 3903, 3904, 7, 16, 0, 0, 3904, 3905, 7, 10, 0, 0, 3905, 704, 1, 0, 0, 0, 3906, 3907, 7, 16, 0, 0, 3907, 3908, 7, 10, 0, 0, 3908, 3909, 7, 15, 0, 0, 3909, 3910, 7, 24, 0, 0, 3910, 3911, 7, 19, 0, 0, 3911, 3912, 7, 13, 0, 0, 3912, 3913, 7, 5, 0, 0, 3913, 3914, 7, 13, 0, 0, 3914, 3915, 7, 8, 0, 0, 3915, 706, 1, 0, 0, 0, 3916, 3917, 7, 16, 0, 0, 3917, 3918, 7, 10, 0, 0, 3918, 3919, 7, 26, 0, 0, 3919, 3920, 7, 16, 0, 0, 3920, 708, 1, 0, 0, 0, 3921, 3922, 7, 16, 0, 0, 3922, 3923, 7, 13, 0, 0, 3923, 3924, 7, 5, 0, 0, 3924, 3925, 7, 7, 0, 0, 3925, 3926, 7, 9, 0, 0, 3926, 3927, 7, 5, 0, 0, 3927, 3928, 7, 14, 0, 0, 3928, 3929, 7, 16, 0, 0, 3929, 3930, 7, 17, 0, 0, 3930, 3931, 7, 19, 0, 0, 3931, 3932, 7, 7, 0, 0, 3932, 710, 1, 0, 0, 0, 3933, 3934, 7, 16, 0, 0, 3934, 3935, 7, 13, 0, 0, 3935, 3936, 7, 17, 0, 0, 3936, 3937, 7, 23, 0, 0, 3937, 3938, 7, 23, 0, 0, 3938, 3939, 7, 10, 0, 0, 3939, 3940, 7, 13, 0, 0, 3940, 712, 1, 0, 0, 0, 3941, 3942, 7, 16, 0, 0, 3942, 3943, 7, 13, 0, 0, 3943, 3944, 7, 22, 0, 0, 3944, 3945, 7, 7, 0, 0, 3945, 3946, 7, 14, 0, 0, 3946, 3947, 7, 5, 0, 0, 3947, 3948, 7, 16, 0, 0, 3948, 3949, 7, 10, 0, 0, 3949, 714, 1, 0, 0, 0, 3950, 3951, 7, 16, 0, 0, 3951, 3952, 7, 13, 0, 0, 3952, 3953, 7, 22, 0, 0, 3953, 3954, 7, 9, 0, 0, 3954, 3955, 7, 16, 0, 0, 3955, 3956, 7, 10, 0, 0, 3956, 3957, 7, 12, 0, 0, 3957, 716, 1, 0, 0, 0, 3958, 3959, 7, 16, 0, 0, 3959, 3960, 7, 8, 0, 0, 3960, 3961, 7, 24, 0, 0, 3961, 3962, 7, 10, 0, 0, 3962, 718, 1, 0, 0, 0, 3963, 3964, 7, 16, 0, 0, 3964, 3965, 7, 8, 0, 0, 3965, 3966, 7, 24, 0, 0, 3966, 3967, 7, 10, 0, 0, 3967, 3968, 7, 9, 0, 0, 3968, 720, 1, 0, 0, 0, 3969, 3970, 7, 22, 0, 0, 3970, 3971, 7, 7, 0, 0, 3971, 3972, 7, 18, 0, 0, 3972, 3973, 7, 19, 0, 0, 3973, 3974, 7, 22, 0, 0, 3974, 3975, 7, 7, 0, 0, 3975, 3976, 7, 12, 0, 0, 3976, 3977, 7, 10, 0, 0, 3977, 3978, 7, 12, 0, 0, 3978, 722, 1, 0, 0, 0, 3979, 3980, 7, 22, 0, 0, 3980, 3981, 7, 7, 0, 0, 3981, 3982, 7, 14, 0, 0, 3982, 3983, 7, 19, 0, 0, 3983, 3984, 7, 15, 0, 0, 3984, 3985, 7, 15, 0, 0, 3985, 3986, 7, 17, 0, 0, 3986, 3987, 7, 16, 0, 0, 3987, 3988, 7, 16, 0, 0, 3988, 3989, 7, 10, 0, 0, 3989, 3990, 7, 12, 0, 0, 3990, 724, 1, 0, 0, 0, 3991, 3992, 7, 22, 0, 0, 3992, 3993, 7, 7, 0, 0, 3993, 3994, 7, 10, 0, 0, 3994, 3995, 7, 7, 0, 0, 3995, 3996, 7, 14, 0, 0, 3996, 3997, 7, 13, 0, 0, 3997, 3998, 7, 8, 0, 0, 3998, 3999, 7, 24, 0, 0, 3999, 4000, 7, 16, 0, 0, 4000, 4001, 7, 10, 0, 0, 4001, 4002, 7, 12, 0, 0, 4002, 726, 1, 0, 0, 0, 4003, 4004, 7, 22, 0, 0, 4004, 4005, 7, 7, 0, 0, 4005, 4006, 7, 21, 0, 0, 4006, 4007, 7, 7, 0, 0, 4007, 4008, 7, 19, 0, 0, 4008, 4009, 7, 29, 0, 0, 4009, 4010, 7, 7, 0, 0, 4010, 728, 1, 0, 0, 0, 4011, 4012, 7, 22, 0, 0, 4012, 4013, 7, 7, 0, 0, 4013, 4014, 7, 6, 0, 0, 4014, 4015, 7, 17, 0, 0, 4015, 4016, 7, 9, 0, 0, 4016, 4017, 7, 16, 0, 0, 4017, 4018, 7, 10, 0, 0, 4018, 4019, 7, 7, 0, 0, 4019, 730, 1, 0, 0, 0, 4020, 4021, 7, 22, 0, 0, 4021, 4022, 7, 7, 0, 0, 4022, 4023, 7, 6, 0, 0, 4023, 4024, 7, 19, 0, 0, 4024, 4025, 7, 23, 0, 0, 4025, 4026, 7, 23, 0, 0, 4026, 4027, 7, 10, 0, 0, 4027, 4028, 7, 12, 0, 0, 4028, 732, 1, 0, 0, 0, 4029, 4030, 7, 22, 0, 0, 4030, 4031, 7, 7, 0, 0, 4031, 4032, 7, 16, 0, 0, 4032, 4033, 7, 17, 0, 0, 4033, 4034, 7, 6, 0, 0, 4034, 734, 1, 0, 0, 0, 4035, 4036, 7, 22, 0, 0, 4036, 4037, 7, 24, 0, 0, 4037, 4038, 7, 12, 0, 0, 4038, 4039, 7, 5, 0, 0, 4039, 4040, 7, 16, 0, 0, 4040, 4041, 7, 10, 0, 0, 4041, 736, 1, 0, 0, 0, 4042, 4043, 7, 27, 0, 0, 4043, 4044, 7, 5, 0, 0, 4044, 4045, 7, 14, 0, 0, 4045, 4046, 7, 22, 0, 0, 4046, 4047, 7, 22, 0, 0, 4047, 4048, 7, 15, 0, 0, 4048, 738, 1, 0, 0, 0, 4049, 4050, 7, 27, 0, 0, 4050, 4051, 7, 5, 0, 0, 4051, 4052, 7, 6, 0, 0, 4052, 4053, 7, 17, 0, 0, 4053, 4054, 7, 12, 0, 0, 4054, 740, 1, 0, 0, 0, 4055, 4056, 7, 27, 0, 0, 4056, 4057, 7, 5, 0, 0, 4057, 4058, 7, 6, 0, 0, 4058, 4059, 7, 17, 0, 0, 4059, 4060, 7, 12, 0, 0, 4060, 4061, 7, 5, 0, 0, 4061, 4062, 7, 16, 0, 0, 4062, 4063, 7, 10, 0, 0, 4063, 742, 1, 0, 0, 0, 4064, 4065, 7, 27, 0, 0, 4065, 4066, 7, 5, 0, 0, 4066, 4067, 7, 6, 0, 0, 4067, 4068, 7, 17, 0, 0, 4068, 4069, 7, 12, 0, 0, 4069, 4070, 7, 5, 0, 0, 4070, 4071, 7, 16, 0, 0, 4071, 4072, 7, 19, 0, 0, 4072, 4073, 7, 13, 0, 0, 4073, 744, 1, 0, 0, 0, 4074, 4075, 7, 27, 0, 0, 4075, 4076, 7, 5, 0, 0, 4076, 4077, 7, 13, 0, 0, 4077, 4078, 7, 8, 0, 0, 4078, 4079, 7, 17, 0, 0, 4079, 4080, 7, 7, 0, 0, 4080, 4081, 7, 23, 0, 0, 4081, 746, 1, 0, 0, 0, 4082, 4083, 7, 27, 0, 0, 4083, 4084, 7, 10, 0, 0, 4084, 4085, 7, 13, 0, 0, 4085, 4086, 7, 9, 0, 0, 4086, 4087, 7, 17, 0, 0, 4087, 4088, 7, 19, 0, 0, 4088, 4089, 7, 7, 0, 0, 4089, 748, 1, 0, 0, 0, 4090, 4091, 7, 27, 0, 0, 4091, 4092, 7, 17, 0, 0, 4092, 4093, 7, 10, 0, 0, 4093, 4094, 7, 29, 0, 0, 4094, 750, 1, 0, 0, 0, 4095, 4096, 7, 27, 0, 0, 4096, 4097, 7, 19, 0, 0, 4097, 4098, 7, 6, 0, 0, 4098, 4099, 7, 5, 0, 0, 4099, 4100, 7, 16, 0, 0, 4100, 4101, 7, 17, 0, 0, 4101, 4102, 7, 6, 0, 0, 4102, 4103, 7, 10, 0, 0, 4103, 752, 1, 0, 0, 0, 4104, 4105, 7, 29, 0, 0, 4105, 4106, 7, 20, 0, 0, 4106, 4107, 7, 17, 0, 0, 4107, 4108, 7, 16, 0, 0, 4108, 4109, 7, 10, 0, 0, 4109, 4110, 7, 9, 0, 0, 4110, 4111, 7, 24, 0, 0, 4111, 4112, 7, 5, 0, 0, 4112, 4113, 7, 14, 0, 0, 4113, 4114, 7, 10, 0, 0, 4114, 754, 1, 0, 0, 0, 4115, 4116, 7, 29, 0, 0, 4116, 4117, 7, 17, 0, 0, 4117, 4118, 7, 16, 0, 0, 4118, 4119, 7, 20, 0, 0, 4119, 4120, 7, 19, 0, 0, 4120, 4121, 7, 22, 0, 0, 4121, 4122, 7, 16, 0, 0, 4122, 756, 1, 0, 0, 0, 4123, 4124, 7, 29, 0, 0, 4124, 4125, 7, 19, 0, 0, 4125, 4126, 7, 13, 0, 0, 4126, 4127, 7, 21, 0, 0, 4127, 758, 1, 0, 0, 0, 4128, 4129, 7, 29, 0, 0, 4129, 4130, 7, 13, 0, 0, 4130, 4131, 7, 5, 0, 0, 4131, 4132, 7, 24, 0, 0, 4132, 4133, 7, 24, 0, 0, 4133, 4134, 7, 10, 0, 0, 4134, 4135, 7, 13, 0, 0, 4135, 760, 1, 0, 0, 0, 4136, 4137, 7, 29, 0, 0, 4137, 4138, 7, 13, 0, 0, 4138, 4139, 7, 17, 0, 0, 4139, 4140, 7, 16, 0, 0, 4140, 4141, 7, 10, 0, 0, 4141, 762, 1, 0, 0, 0, 4142, 4143, 7, 26, 0, 0, 4143, 4144, 7, 15, 0, 0, 4144, 4145, 7, 6, 0, 0, 4145, 764, 1, 0, 0, 0, 4146, 4147, 7, 8, 0, 0, 4147, 4148, 7, 10, 0, 0, 4148, 4149, 7, 5, 0, 0, 4149, 4150, 7, 13, 0, 0, 4150, 766, 1, 0, 0, 0, 4151, 4152, 7, 8, 0, 0, 4152, 4153, 7, 10, 0, 0, 4153, 4154, 7, 9, 0, 0, 4154, 768, 1, 0, 0, 0, 4155, 4156, 7, 11, 0, 0, 4156, 4157, 7, 19, 0, 0, 4157, 4158, 7, 7, 0, 0, 4158, 4159, 7, 10, 0, 0, 4159, 770, 1, 0, 0, 0, 4160, 4161, 7, 18, 0, 0, 4161, 4162, 7, 10, 0, 0, 4162, 4163, 7, 16, 0, 0, 4163, 4164, 7, 29, 0, 0, 4164, 4165, 7, 10, 0, 0, 4165, 4166, 7, 10, 0, 0, 4166, 4167, 7, 7, 0, 0, 4167, 772, 1, 0, 0, 0, 4168, 4169, 7, 18, 0, 0, 4169, 4170, 7, 17, 0, 0, 4170, 4171, 7, 23, 0, 0, 4171, 4172, 7, 17, 0, 0, 4172, 4173, 7, 7, 0, 0, 4173, 4174, 7, 16, 0, 0, 4174, 774, 1, 0, 0, 0, 4175, 4176, 7, 18, 0, 0, 4176, 4177, 7, 17, 0, 0, 4177, 4178, 7, 16, 0, 0, 4178, 776, 1, 0, 0, 0, 4179, 4180, 7, 18, 0, 0, 4180, 4181, 7, 19, 0, 0, 4181, 4182, 7, 19, 0, 0, 4182, 4183, 7, 6, 0, 0, 4183, 4184, 7, 10, 0, 0, 4184, 4185, 7, 5, 0, 0, 4185, 4186, 7, 7, 0, 0, 4186, 778, 1, 0, 0, 0, 4187, 4188, 7, 14, 0, 0, 4188, 4189, 7, 20, 0, 0, 4189, 4190, 7, 5, 0, 0, 4190, 4191, 7, 13, 0, 0, 4191, 780, 1, 0, 0, 0, 4192, 4193, 7, 14, 0, 0, 4193, 4194, 7, 20, 0, 0, 4194, 4195, 7, 5, 0, 0, 4195, 4196, 7, 13, 0, 0, 4196, 4197, 7, 5, 0, 0, 4197, 4198, 7, 14, 0, 0, 4198, 4199, 7, 16, 0, 0, 4199, 4200, 7, 10, 0, 0, 4200, 4201, 7, 13, 0, 0, 4201, 782, 1, 0, 0, 0, 4202, 4203, 7, 14, 0, 0, 4203, 4204, 7, 19, 0, 0, 4204, 4205, 7, 5, 0, 0, 4205, 4206, 7, 6, 0, 0, 4206, 4207, 7, 10, 0, 0, 4207, 4208, 7, 9, 0, 0, 4208, 4209, 7, 14, 0, 0, 4209, 4210, 7, 10, 0, 0, 4210, 784, 1, 0, 0, 0, 4211, 4212, 7, 12, 0, 0, 4212, 4213, 7, 10, 0, 0, 4213, 4214, 7, 14, 0, 0, 4214, 786, 1, 0, 0, 0, 4215, 4216, 7, 12, 0, 0, 4216, 4217, 7, 10, 0, 0, 4217, 4218, 7, 14, 0, 0, 4218, 4219, 7, 17, 0, 0, 4219, 4220, 7, 15, 0, 0, 4220, 4221, 7, 5, 0, 0, 4221, 4222, 7, 6, 0, 0, 4222, 788, 1, 0, 0, 0, 4223, 4224, 7, 10, 0, 0, 4224, 4225, 7, 26, 0, 0, 4225, 4226, 7, 17, 0, 0, 4226, 4227, 7, 9, 0, 0, 4227, 4228, 7, 16, 0, 0, 4228, 4229, 7, 9, 0, 0, 4229, 790, 1, 0, 0, 0, 4230, 4231, 7, 10, 0, 0, 4231, 4232, 7, 26, 0, 0, 4232, 4233, 7, 16, 0, 0, 4233, 4234, 7, 13, 0, 0, 4234, 4235, 7, 5, 0, 0, 4235, 4236, 7, 14, 0, 0, 4236, 4237, 7, 16, 0, 0, 4237, 792, 1, 0, 0, 0, 4238, 4239, 7, 25, 0, 0, 4239, 4240, 7, 6, 0, 0, 4240, 4241, 7, 19, 0, 0, 4241, 4242, 7, 5, 0, 0, 4242, 4243, 7, 16, 0, 0, 4243, 794, 1, 0, 0, 0, 4244, 4245, 7, 23, 0, 0, 4245, 4246, 7, 13, 0, 0, 4246, 4247, 7, 10, 0, 0, 4247, 4248, 7, 5, 0, 0, 4248, 4249, 7, 16, 0, 0, 4249, 4250, 7, 10, 0, 0, 4250, 4251, 7, 9, 0, 0, 4251, 4252, 7, 16, 0, 0, 4252, 796, 1, 0, 0, 0, 4253, 4254, 7, 17, 0, 0, 4254, 4255, 7, 7, 0, 0, 4255, 4256, 7, 19, 0, 0, 4256, 4257, 7, 22, 0, 0, 4257, 4258, 7, 16, 0, 0, 4258, 798, 1, 0, 0, 0, 4259, 4260, 7, 17, 0, 0, 4260, 4261, 7, 7, 0, 0, 4261, 4262, 7, 16, 0, 0, 4262, 800, 1, 0, 0, 0, 4263, 4264, 7, 17, 0, 0, 4264, 4265, 7, 7, 0, 0, 4265, 4266, 7, 16, 0, 0, 4266, 4267, 7, 10, 0, 0, 4267, 4268, 7, 23, 0, 0, 4268, 4269, 7, 10, 0, 0, 4269, 4270, 7, 13, 0, 0, 4270, 802, 1, 0, 0, 0, 4271, 4272, 7, 17, 0, 0, 4272, 4273, 7, 7, 0, 0, 4273, 4274, 7, 16, 0, 0, 4274, 4275, 7, 10, 0, 0, 4275, 4276, 7, 13, 0, 0, 4276, 4277, 7, 27, 0, 0, 4277, 4278, 7, 5, 0, 0, 4278, 4279, 7, 6, 0, 0, 4279, 804, 1, 0, 0, 0, 4280, 4281, 7, 6, 0, 0, 4281, 4282, 7, 10, 0, 0, 4282, 4283, 7, 5, 0, 0, 4283, 4284, 7, 9, 0, 0, 4284, 4285, 7, 16, 0, 0, 4285, 806, 1, 0, 0, 0, 4286, 4287, 7, 7, 0, 0, 4287, 4288, 7, 5, 0, 0, 4288, 4289, 7, 16, 0, 0, 4289, 4290, 7, 17, 0, 0, 4290, 4291, 7, 19, 0, 0, 4291, 4292, 7, 7, 0, 0, 4292, 4293, 7, 5, 0, 0, 4293, 4294, 7, 6, 0, 0, 4294, 808, 1, 0, 0, 0, 4295, 4296, 7, 7, 0, 0, 4296, 4297, 7, 14, 0, 0, 4297, 4298, 7, 20, 0, 0, 4298, 4299, 7, 5, 0, 0, 4299, 4300, 7, 13, 0, 0, 4300, 810, 1, 0, 0, 0, 4301, 4302, 7, 7, 0, 0, 4302, 4303, 7, 19, 0, 0, 4303, 4304, 7, 7, 0, 0, 4304, 4305, 7, 10, 0, 0, 4305, 812, 1, 0, 0, 0, 4306, 4307, 7, 7, 0, 0, 4307, 4308, 7, 22, 0, 0, 4308, 4309, 7, 6, 0, 0, 4309, 4310, 7, 6, 0, 0, 4310, 4311, 7, 17, 0, 0, 4311, 4312, 7, 25, 0, 0, 4312, 814, 1, 0, 0, 0, 4313, 4314, 7, 7, 0, 0, 4314, 4315, 7, 22, 0, 0, 4315, 4316, 7, 15, 0, 0, 4316, 4317, 7, 10, 0, 0, 4317, 4318, 7, 13, 0, 0, 4318, 4319, 7, 17, 0, 0, 4319, 4320, 7, 14, 0, 0, 4320, 816, 1, 0, 0, 0, 4321, 4322, 7, 19, 0, 0, 4322, 4323, 7, 27, 0, 0, 4323, 4324, 7, 10, 0, 0, 4324, 4325, 7, 13, 0, 0, 4325, 4326, 7, 6, 0, 0, 4326, 4327, 7, 5, 0, 0, 4327, 4328, 7, 8, 0, 0, 4328, 818, 1, 0, 0, 0, 4329, 4330, 7, 24, 0, 0, 4330, 4331, 7, 19, 0, 0, 4331, 4332, 7, 9, 0, 0, 4332, 4333, 7, 17, 0, 0, 4333, 4334, 7, 16, 0, 0, 4334, 4335, 7, 17, 0, 0, 4335, 4336, 7, 19, 0, 0, 4336, 4337, 7, 7, 0, 0, 4337, 820, 1, 0, 0, 0, 4338, 4339, 7, 24, 0, 0, 4339, 4340, 7, 13, 0, 0, 4340, 4341, 7, 10, 0, 0, 4341, 4342, 7, 14, 0, 0, 4342, 4343, 7, 17, 0, 0, 4343, 4344, 7, 9, 0, 0, 4344, 4345, 7, 17, 0, 0, 4345, 4346, 7, 19, 0, 0, 4346, 4347, 7, 7, 0, 0, 4347, 822, 1, 0, 0, 0, 4348, 4349, 7, 13, 0, 0, 4349, 4350, 7, 10, 0, 0, 4350, 4351, 7, 5, 0, 0, 4351, 4352, 7, 6, 0, 0, 4352, 824, 1, 0, 0, 0, 4353, 4354, 7, 13, 0, 0, 4354, 4355, 7, 19, 0, 0, 4355, 4356, 7, 29, 0, 0, 4356, 826, 1, 0, 0, 0, 4357, 4358, 7, 9, 0, 0, 4358, 4359, 7, 10, 0, 0, 4359, 4360, 7, 16, 0, 0, 4360, 4361, 7, 19, 0, 0, 4361, 4362, 7, 25, 0, 0, 4362, 828, 1, 0, 0, 0, 4363, 4364, 7, 9, 0, 0, 4364, 4365, 7, 15, 0, 0, 4365, 4366, 7, 5, 0, 0, 4366, 4367, 7, 6, 0, 0, 4367, 4368, 7, 6, 0, 0, 4368, 4369, 7, 17, 0, 0, 4369, 4370, 7, 7, 0, 0, 4370, 4371, 7, 16, 0, 0, 4371, 830, 1, 0, 0, 0, 4372, 4373, 7, 9, 0, 0, 4373, 4374, 7, 22, 0, 0, 4374, 4375, 7, 18, 0, 0, 4375, 4376, 7, 9, 0, 0, 4376, 4377, 7, 16, 0, 0, 4377, 4378, 7, 13, 0, 0, 4378, 4379, 7, 17, 0, 0, 4379, 4380, 7, 7, 0, 0, 4380, 4381, 7, 23, 0, 0, 4381, 832, 1, 0, 0, 0, 4382, 4383, 7, 16, 0, 0, 4383, 4384, 7, 17, 0, 0, 4384, 4385, 7, 15, 0, 0, 4385, 4386, 7, 10, 0, 0, 4386, 834, 1, 0, 0, 0, 4387, 4388, 7, 16, 0, 0, 4388, 4389, 7, 17, 0, 0, 4389, 4390, 7, 15, 0, 0, 4390, 4391, 7, 10, 0, 0, 4391, 4392, 7, 9, 0, 0, 4392, 4393, 7, 16, 0, 0, 4393, 4394, 7, 5, 0, 0, 4394, 4395, 7, 15, 0, 0, 4395, 4396, 7, 24, 0, 0, 4396, 836, 1, 0, 0, 0, 4397, 4398, 7, 16, 0, 0, 4398, 4399, 7, 13, 0, 0, 4399, 4400, 7, 10, 0, 0, 4400, 4401, 7, 5, 0, 0, 4401, 4402, 7, 16, 0, 0, 4402, 838, 1, 0, 0, 0, 4403, 4404, 7, 16, 0, 0, 4404, 4405, 7, 13, 0, 0, 4405, 4406, 7, 17, 0, 0, 4406, 4407, 7, 15, 0, 0, 4407, 840, 1, 0, 0, 0, 4408, 4409, 7, 27, 0, 0, 4409, 4410, 7, 5, 0, 0, 4410, 4411, 7, 6, 0, 0, 4411, 4412, 7, 22, 0, 0, 4412, 4413, 7, 10, 0, 0, 4413, 4414, 7, 9, 0, 0, 4414, 842, 1, 0, 0, 0, 4415, 4416, 7, 27, 0, 0, 4416, 4417, 7, 5, 0, 0, 4417, 4418, 7, 13, 0, 0, 4418, 4419, 7, 14, 0, 0, 4419, 4420, 7, 20, 0, 0, 4420, 4421, 7, 5, 0, 0, 4421, 4422, 7, 13, 0, 0, 4422, 844, 1, 0, 0, 0, 4423, 4424, 7, 26, 0, 0, 4424, 4425, 7, 15, 0, 0, 4425, 4426, 7, 6, 0, 0, 4426, 4427, 7, 5, 0, 0, 4427, 4428, 7, 16, 0, 0, 4428, 4429, 7, 16, 0, 0, 4429, 4430, 7, 13, 0, 0, 4430, 4431, 7, 17, 0, 0, 4431, 4432, 7, 18, 0, 0, 4432, 4433, 7, 22, 0, 0, 4433, 4434, 7, 16, 0, 0, 4434, 4435, 7, 10, 0, 0, 4435, 4436, 7, 9, 0, 0, 4436, 846, 1, 0, 0, 0, 4437, 4438, 7, 26, 0, 0, 4438, 4439, 7, 15, 0, 0, 4439, 4440, 7, 6, 0, 0, 4440, 4441, 7, 14, 0, 0, 4441, 4442, 7, 19, 0, 0, 4442, 4443, 7, 15, 0, 0, 4443, 4444, 7, 15, 0, 0, 4444, 4445, 7, 10, 0, 0, 4445, 4446, 7, 7, 0, 0, 4446, 4447, 7, 16, 0, 0, 4447, 848, 1, 0, 0, 0, 4448, 4449, 7, 26, 0, 0, 4449, 4450, 7, 15, 0, 0, 4450, 4451, 7, 6, 0, 0, 4451, 4452, 7, 5, 0, 0, 4452, 4453, 7, 23, 0, 0, 4453, 4454, 7, 23, 0, 0, 4454, 850, 1, 0, 0, 0, 4455, 4456, 7, 26, 0, 0, 4456, 4457, 7, 15, 0, 0, 4457, 4458, 7, 6, 0, 0, 4458, 4459, 5, 95, 0, 0, 4459, 4460, 7, 17, 0, 0, 4460, 4461, 7, 9, 0, 0, 4461, 4462, 5, 95, 0, 0, 4462, 4463, 7, 29, 0, 0, 4463, 4464, 7, 10, 0, 0, 4464, 4465, 7, 6, 0, 0, 4465, 4466, 7, 6, 0, 0, 4466, 4467, 5, 95, 0, 0, 4467, 4468, 7, 25, 0, 0, 4468, 4469, 7, 19, 0, 0, 4469, 4470, 7, 13, 0, 0, 4470, 4471, 7, 15, 0, 0, 4471, 4472, 7, 10, 0, 0, 4472, 4473, 7, 12, 0, 0, 4473, 852, 1, 0, 0, 0, 4474, 4475, 7, 26, 0, 0, 4475, 4476, 7, 15, 0, 0, 4476, 4477, 7, 6, 0, 0, 4477, 4478, 5, 95, 0, 0, 4478, 4479, 7, 17, 0, 0, 4479, 4480, 7, 9, 0, 0, 4480, 4481, 5, 95, 0, 0, 4481, 4482, 7, 29, 0, 0, 4482, 4483, 7, 10, 0, 0, 4483, 4484, 7, 6, 0, 0, 4484, 4485, 7, 6, 0, 0, 4485, 4486, 5, 95, 0, 0, 4486, 4487, 7, 25, 0, 0, 4487, 4488, 7, 19, 0, 0, 4488, 4489, 7, 13, 0, 0, 4489, 4490, 7, 15, 0, 0, 4490, 4491, 7, 10, 0, 0, 4491, 4492, 7, 12, 0, 0, 4492, 4493, 5, 95, 0, 0, 4493, 4494, 7, 12, 0, 0, 4494, 4495, 7, 19, 0, 0, 4495, 4496, 7, 14, 0, 0, 4496, 4497, 7, 22, 0, 0, 4497, 4498, 7, 15, 0, 0, 4498, 4499, 7, 10, 0, 0, 4499, 4500, 7, 7, 0, 0, 4500, 4501, 7, 16, 0, 0, 4501, 854, 1, 0, 0, 0, 4502, 4503, 7, 26, 0, 0, 4503, 4504, 7, 15, 0, 0, 4504, 4505, 7, 6, 0, 0, 4505, 4506, 5, 95, 0, 0, 4506, 4507, 7, 17, 0, 0, 4507, 4508, 7, 9, 0, 0, 4508, 4509, 5, 95, 0, 0, 4509, 4510, 7, 29, 0, 0, 4510, 4511, 7, 10, 0, 0, 4511, 4512, 7, 6, 0, 0, 4512, 4513, 7, 6, 0, 0, 4513, 4514, 5, 95, 0, 0, 4514, 4515, 7, 25, 0, 0, 4515, 4516, 7, 19, 0, 0, 4516, 4517, 7, 13, 0, 0, 4517, 4518, 7, 15, 0, 0, 4518, 4519, 7, 10, 0, 0, 4519, 4520, 7, 12, 0, 0, 4520, 4521, 5, 95, 0, 0, 4521, 4522, 7, 14, 0, 0, 4522, 4523, 7, 19, 0, 0, 4523, 4524, 7, 7, 0, 0, 4524, 4525, 7, 16, 0, 0, 4525, 4526, 7, 10, 0, 0, 4526, 4527, 7, 7, 0, 0, 4527, 4528, 7, 16, 0, 0, 4528, 856, 1, 0, 0, 0, 4529, 4530, 7, 26, 0, 0, 4530, 4531, 7, 24, 0, 0, 4531, 4532, 7, 5, 0, 0, 4532, 4533, 7, 16, 0, 0, 4533, 4534, 7, 20, 0, 0, 4534, 858, 1, 0, 0, 0, 4535, 4536, 7, 26, 0, 0, 4536, 4537, 7, 24, 0, 0, 4537, 4538, 7, 5, 0, 0, 4538, 4539, 7, 16, 0, 0, 4539, 4540, 7, 20, 0, 0, 4540, 4541, 5, 95, 0, 0, 4541, 4542, 7, 10, 0, 0, 4542, 4543, 7, 26, 0, 0, 4543, 4544, 7, 17, 0, 0, 4544, 4545, 7, 9, 0, 0, 4545, 4546, 7, 16, 0, 0, 4546, 4547, 7, 9, 0, 0, 4547, 860, 1, 0, 0, 0, 4548, 4549, 7, 26, 0, 0, 4549, 4550, 7, 15, 0, 0, 4550, 4551, 7, 6, 0, 0, 4551, 4552, 7, 14, 0, 0, 4552, 4553, 7, 19, 0, 0, 4553, 4554, 7, 7, 0, 0, 4554, 4555, 7, 14, 0, 0, 4555, 4556, 7, 5, 0, 0, 4556, 4557, 7, 16, 0, 0, 4557, 862, 1, 0, 0, 0, 4558, 4559, 7, 26, 0, 0, 4559, 4560, 7, 15, 0, 0, 4560, 4561, 7, 6, 0, 0, 4561, 4562, 7, 10, 0, 0, 4562, 4563, 7, 6, 0, 0, 4563, 4564, 7, 10, 0, 0, 4564, 4565, 7, 15, 0, 0, 4565, 4566, 7, 10, 0, 0, 4566, 4567, 7, 7, 0, 0, 4567, 4568, 7, 16, 0, 0, 4568, 864, 1, 0, 0, 0, 4569, 4570, 7, 26, 0, 0, 4570, 4571, 7, 15, 0, 0, 4571, 4572, 7, 6, 0, 0, 4572, 4573, 7, 10, 0, 0, 4573, 4574, 7, 26, 0, 0, 4574, 4575, 7, 17, 0, 0, 4575, 4576, 7, 9, 0, 0, 4576, 4577, 7, 16, 0, 0, 4577, 4578, 7, 9, 0, 0, 4578, 866, 1, 0, 0, 0, 4579, 4580, 7, 26, 0, 0, 4580, 4581, 7, 15, 0, 0, 4581, 4582, 7, 6, 0, 0, 4582, 4583, 7, 25, 0, 0, 4583, 4584, 7, 19, 0, 0, 4584, 4585, 7, 13, 0, 0, 4585, 4586, 7, 10, 0, 0, 4586, 4587, 7, 9, 0, 0, 4587, 4588, 7, 16, 0, 0, 4588, 868, 1, 0, 0, 0, 4589, 4590, 7, 26, 0, 0, 4590, 4591, 7, 15, 0, 0, 4591, 4592, 7, 6, 0, 0, 4592, 4593, 7, 24, 0, 0, 4593, 4594, 7, 5, 0, 0, 4594, 4595, 7, 13, 0, 0, 4595, 4596, 7, 9, 0, 0, 4596, 4597, 7, 10, 0, 0, 4597, 870, 1, 0, 0, 0, 4598, 4599, 7, 26, 0, 0, 4599, 4600, 7, 15, 0, 0, 4600, 4601, 7, 6, 0, 0, 4601, 4602, 7, 24, 0, 0, 4602, 4603, 7, 17, 0, 0, 4603, 872, 1, 0, 0, 0, 4604, 4605, 7, 26, 0, 0, 4605, 4606, 7, 15, 0, 0, 4606, 4607, 7, 6, 0, 0, 4607, 4608, 7, 13, 0, 0, 4608, 4609, 7, 19, 0, 0, 4609, 4610, 7, 19, 0, 0, 4610, 4611, 7, 16, 0, 0, 4611, 874, 1, 0, 0, 0, 4612, 4613, 7, 26, 0, 0, 4613, 4614, 7, 15, 0, 0, 4614, 4615, 7, 6, 0, 0, 4615, 4616, 7, 9, 0, 0, 4616, 4617, 7, 10, 0, 0, 4617, 4618, 7, 13, 0, 0, 4618, 4619, 7, 17, 0, 0, 4619, 4620, 7, 5, 0, 0, 4620, 4621, 7, 6, 0, 0, 4621, 4622, 7, 17, 0, 0, 4622, 4623, 7, 11, 0, 0, 4623, 4624, 7, 10, 0, 0, 4624, 876, 1, 0, 0, 0, 4625, 4626, 7, 14, 0, 0, 4626, 4627, 7, 5, 0, 0, 4627, 4628, 7, 6, 0, 0, 4628, 4629, 7, 6, 0, 0, 4629, 878, 1, 0, 0, 0, 4630, 4631, 7, 14, 0, 0, 4631, 4632, 7, 22, 0, 0, 4632, 4633, 7, 13, 0, 0, 4633, 4634, 7, 13, 0, 0, 4634, 4635, 7, 10, 0, 0, 4635, 4636, 7, 7, 0, 0, 4636, 4637, 7, 16, 0, 0, 4637, 880, 1, 0, 0, 0, 4638, 4639, 7, 5, 0, 0, 4639, 4640, 7, 16, 0, 0, 4640, 4641, 7, 16, 0, 0, 4641, 4642, 7, 5, 0, 0, 4642, 4643, 7, 14, 0, 0, 4643, 4644, 7, 20, 0, 0, 4644, 882, 1, 0, 0, 0, 4645, 4646, 7, 12, 0, 0, 4646, 4647, 7, 10, 0, 0, 4647, 4648, 7, 16, 0, 0, 4648, 4649, 7, 5, 0, 0, 4649, 4650, 7, 14, 0, 0, 4650, 4651, 7, 20, 0, 0, 4651, 884, 1, 0, 0, 0, 4652, 4653, 7, 10, 0, 0, 4653, 4654, 7, 26, 0, 0, 4654, 4655, 7, 24, 0, 0, 4655, 4656, 7, 13, 0, 0, 4656, 4657, 7, 10, 0, 0, 4657, 4658, 7, 9, 0, 0, 4658, 4659, 7, 9, 0, 0, 4659, 4660, 7, 17, 0, 0, 4660, 4661, 7, 19, 0, 0, 4661, 4662, 7, 7, 0, 0, 4662, 886, 1, 0, 0, 0, 4663, 4664, 7, 23, 0, 0, 4664, 4665, 7, 10, 0, 0, 4665, 4666, 7, 7, 0, 0, 4666, 4667, 7, 10, 0, 0, 4667, 4668, 7, 13, 0, 0, 4668, 4669, 7, 5, 0, 0, 4669, 4670, 7, 16, 0, 0, 4670, 4671, 7, 10, 0, 0, 4671, 4672, 7, 12, 0, 0, 4672, 888, 1, 0, 0, 0, 4673, 4674, 7, 6, 0, 0, 4674, 4675, 7, 19, 0, 0, 4675, 4676, 7, 23, 0, 0, 4676, 4677, 7, 23, 0, 0, 4677, 4678, 7, 10, 0, 0, 4678, 4679, 7, 12, 0, 0, 4679, 890, 1, 0, 0, 0, 4680, 4681, 7, 9, 0, 0, 4681, 4682, 7, 16, 0, 0, 4682, 4683, 7, 19, 0, 0, 4683, 4684, 7, 13, 0, 0, 4684, 4685, 7, 10, 0, 0, 4685, 4686, 7, 12, 0, 0, 4686, 892, 1, 0, 0, 0, 4687, 4688, 7, 17, 0, 0, 4688, 4689, 7, 7, 0, 0, 4689, 4690, 7, 14, 0, 0, 4690, 4691, 7, 6, 0, 0, 4691, 4692, 7, 22, 0, 0, 4692, 4693, 7, 12, 0, 0, 4693, 4694, 7, 10, 0, 0, 4694, 894, 1, 0, 0, 0, 4695, 4696, 7, 13, 0, 0, 4696, 4697, 7, 19, 0, 0, 4697, 4698, 7, 22, 0, 0, 4698, 4699, 7, 16, 0, 0, 4699, 4700, 7, 17, 0, 0, 4700, 4701, 7, 7, 0, 0, 4701, 4702, 7, 10, 0, 0, 4702, 896, 1, 0, 0, 0, 4703, 4704, 7, 16, 0, 0, 4704, 4705, 7, 13, 0, 0, 4705, 4706, 7, 5, 0, 0, 4706, 4707, 7, 7, 0, 0, 4707, 4708, 7, 9, 0, 0, 4708, 4709, 7, 25, 0, 0, 4709, 4710, 7, 19, 0, 0, 4710, 4711, 7, 13, 0, 0, 4711, 4712, 7, 15, 0, 0, 4712, 898, 1, 0, 0, 0, 4713, 4714, 7, 17, 0, 0, 4714, 4715, 7, 15, 0, 0, 4715, 4716, 7, 24, 0, 0, 4716, 4717, 7, 19, 0, 0, 4717, 4718, 7, 13, 0, 0, 4718, 4719, 7, 16, 0, 0, 4719, 900, 1, 0, 0, 0, 4720, 4721, 7, 24, 0, 0, 4721, 4722, 7, 19, 0, 0, 4722, 4723, 7, 6, 0, 0, 4723, 4724, 7, 17, 0, 0, 4724, 4725, 7, 14, 0, 0, 4725, 4726, 7, 8, 0, 0, 4726, 902, 1, 0, 0, 0, 4727, 4728, 7, 15, 0, 0, 4728, 4729, 7, 10, 0, 0, 4729, 4730, 7, 16, 0, 0, 4730, 4731, 7, 20, 0, 0, 4731, 4732, 7, 19, 0, 0, 4732, 4733, 7, 12, 0, 0, 4733, 904, 1, 0, 0, 0, 4734, 4735, 7, 13, 0, 0, 4735, 4736, 7, 10, 0, 0, 4736, 4737, 7, 25, 0, 0, 4737, 4738, 7, 10, 0, 0, 4738, 4739, 7, 13, 0, 0, 4739, 4740, 7, 10, 0, 0, 4740, 4741, 7, 7, 0, 0, 4741, 4742, 7, 14, 0, 0, 4742, 4743, 7, 17, 0, 0, 4743, 4744, 7, 7, 0, 0, 4744, 4745, 7, 23, 0, 0, 4745, 906, 1, 0, 0, 0, 4746, 4747, 7, 7, 0, 0, 4747, 4748, 7, 10, 0, 0, 4748, 4749, 7, 29, 0, 0, 4749, 908, 1, 0, 0, 0, 4750, 4751, 7, 19, 0, 0, 4751, 4752, 7, 6, 0, 0, 4752, 4753, 7, 12, 0, 0, 4753, 910, 1, 0, 0, 0, 4754, 4755, 7, 27, 0, 0, 4755, 4756, 7, 5, 0, 0, 4756, 4757, 7, 6, 0, 0, 4757, 4758, 7, 22, 0, 0, 4758, 4759, 7, 10, 0, 0, 4759, 912, 1, 0, 0, 0, 4760, 4761, 7, 9, 0, 0, 4761, 4762, 7, 22, 0, 0, 4762, 4763, 7, 18, 0, 0, 4763, 4764, 7, 9, 0, 0, 4764, 4765, 7, 14, 0, 0, 4765, 4766, 7, 13, 0, 0, 4766, 4767, 7, 17, 0, 0, 4767, 4768, 7, 24, 0, 0, 4768, 4769, 7, 16, 0, 0, 4769, 4770, 7, 17, 0, 0, 4770, 4771, 7, 19, 0, 0, 4771, 4772, 7, 7, 0, 0, 4772, 914, 1, 0, 0, 0, 4773, 4774, 7, 24, 0, 0, 4774, 4775, 7, 22, 0, 0, 4775, 4776, 7, 18, 0, 0, 4776, 4777, 7, 6, 0, 0, 4777, 4778, 7, 17, 0, 0, 4778, 4779, 7, 14, 0, 0, 4779, 4780, 7, 5, 0, 0, 4780, 4781, 7, 16, 0, 0, 4781, 4782, 7, 17, 0, 0, 4782, 4783, 7, 19, 0, 0, 4783, 4784, 7, 7, 0, 0, 4784, 916, 1, 0, 0, 0, 4785, 4786, 7, 19, 0, 0, 4786, 4787, 7, 22, 0, 0, 4787, 4788, 7, 16, 0, 0, 4788, 918, 1, 0, 0, 0, 4789, 4790, 7, 10, 0, 0, 4790, 4791, 7, 7, 0, 0, 4791, 4792, 7, 12, 0, 0, 4792, 920, 1, 0, 0, 0, 4793, 4794, 7, 13, 0, 0, 4794, 4795, 7, 19, 0, 0, 4795, 4796, 7, 22, 0, 0, 4796, 4797, 7, 16, 0, 0, 4797, 4798, 7, 17, 0, 0, 4798, 4799, 7, 7, 0, 0, 4799, 4800, 7, 10, 0, 0, 4800, 4801, 7, 9, 0, 0, 4801, 922, 1, 0, 0, 0, 4802, 4803, 7, 9, 0, 0, 4803, 4804, 7, 14, 0, 0, 4804, 4805, 7, 20, 0, 0, 4805, 4806, 7, 10, 0, 0, 4806, 4807, 7, 15, 0, 0, 4807, 4808, 7, 5, 0, 0, 4808, 4809, 7, 9, 0, 0, 4809, 924, 1, 0, 0, 0, 4810, 4811, 7, 24, 0, 0, 4811, 4812, 7, 13, 0, 0, 4812, 4813, 7, 19, 0, 0, 4813, 4814, 7, 14, 0, 0, 4814, 4815, 7, 10, 0, 0, 4815, 4816, 7, 12, 0, 0, 4816, 4817, 7, 22, 0, 0, 4817, 4818, 7, 13, 0, 0, 4818, 4819, 7, 10, 0, 0, 4819, 4820, 7, 9, 0, 0, 4820, 926, 1, 0, 0, 0, 4821, 4822, 7, 17, 0, 0, 4822, 4823, 7, 7, 0, 0, 4823, 4824, 7, 24, 0, 0, 4824, 4825, 7, 22, 0, 0, 4825, 4826, 7, 16, 0, 0, 4826, 928, 1, 0, 0, 0, 4827, 4828, 7, 9, 0, 0, 4828, 4829, 7, 22, 0, 0, 4829, 4830, 7, 24, 0, 0, 4830, 4831, 7, 24, 0, 0, 4831, 4832, 7, 19, 0, 0, 4832, 4833, 7, 13, 0, 0, 4833, 4834, 7, 16, 0, 0, 4834, 930, 1, 0, 0, 0, 4835, 4836, 7, 24, 0, 0, 4836, 4837, 7, 5, 0, 0, 4837, 4838, 7, 13, 0, 0, 4838, 4839, 7, 5, 0, 0, 4839, 4840, 7, 6, 0, 0, 4840, 4841, 7, 6, 0, 0, 4841, 4842, 7, 10, 0, 0, 4842, 4843, 7, 6, 0, 0, 4843, 932, 1, 0, 0, 0, 4844, 4845, 7, 9, 0, 0, 4845, 4846, 7, 28, 0, 0, 4846, 4847, 7, 6, 0, 0, 4847, 934, 1, 0, 0, 0, 4848, 4849, 7, 12, 0, 0, 4849, 4850, 7, 10, 0, 0, 4850, 4851, 7, 24, 0, 0, 4851, 4852, 7, 10, 0, 0, 4852, 4853, 7, 7, 0, 0, 4853, 4854, 7, 12, 0, 0, 4854, 4855, 7, 9, 0, 0, 4855, 936, 1, 0, 0, 0, 4856, 4857, 7, 19, 0, 0, 4857, 4858, 7, 27, 0, 0, 4858, 4859, 7, 10, 0, 0, 4859, 4860, 7, 13, 0, 0, 4860, 4861, 7, 13, 0, 0, 4861, 4862, 7, 17, 0, 0, 4862, 4863, 7, 12, 0, 0, 4863, 4864, 7, 17, 0, 0, 4864, 4865, 7, 7, 0, 0, 4865, 4866, 7, 23, 0, 0, 4866, 938, 1, 0, 0, 0, 4867, 4868, 7, 14, 0, 0, 4868, 4869, 7, 19, 0, 0, 4869, 4870, 7, 7, 0, 0, 4870, 4871, 7, 25, 0, 0, 4871, 4872, 7, 6, 0, 0, 4872, 4873, 7, 17, 0, 0, 4873, 4874, 7, 14, 0, 0, 4874, 4875, 7, 16, 0, 0, 4875, 940, 1, 0, 0, 0, 4876, 4877, 7, 9, 0, 0, 4877, 4878, 7, 21, 0, 0, 4878, 4879, 7, 17, 0, 0, 4879, 4880, 7, 24, 0, 0, 4880, 942, 1, 0, 0, 0, 4881, 4882, 7, 6, 0, 0, 4882, 4883, 7, 19, 0, 0, 4883, 4884, 7, 14, 0, 0, 4884, 4885, 7, 21, 0, 0, 4885, 4886, 7, 10, 0, 0, 4886, 4887, 7, 12, 0, 0, 4887, 944, 1, 0, 0, 0, 4888, 4889, 7, 16, 0, 0, 4889, 4890, 7, 17, 0, 0, 4890, 4891, 7, 10, 0, 0, 4891, 4892, 7, 9, 0, 0, 4892, 946, 1, 0, 0, 0, 4893, 4894, 7, 13, 0, 0, 4894, 4895, 7, 19, 0, 0, 4895, 4896, 7, 6, 0, 0, 4896, 4897, 7, 6, 0, 0, 4897, 4898, 7, 22, 0, 0, 4898, 4899, 7, 24, 0, 0, 4899, 948, 1, 0, 0, 0, 4900, 4901, 7, 14, 0, 0, 4901, 4902, 7, 22, 0, 0, 4902, 4903, 7, 18, 0, 0, 4903, 4904, 7, 10, 0, 0, 4904, 950, 1, 0, 0, 0, 4905, 4906, 7, 23, 0, 0, 4906, 4907, 7, 13, 0, 0, 4907, 4908, 7, 19, 0, 0, 4908, 4909, 7, 22, 0, 0, 4909, 4910, 7, 24, 0, 0, 4910, 4911, 7, 17, 0, 0, 4911, 4912, 7, 7, 0, 0, 4912, 4913, 7, 23, 0, 0, 4913, 952, 1, 0, 0, 0, 4914, 4915, 7, 9, 0, 0, 4915, 4916, 7, 10, 0, 0, 4916, 4917, 7, 16, 0, 0, 4917, 4918, 7, 9, 0, 0, 4918, 954, 1, 0, 0, 0, 4919, 4920, 7, 16, 0, 0, 4920, 4921, 7, 5, 0, 0, 4921, 4922, 7, 18, 0, 0, 4922, 4923, 7, 6, 0, 0, 4923, 4924, 7, 10, 0, 0, 4924, 4925, 7, 9, 0, 0, 4925, 4926, 7, 5, 0, 0, 4926, 4927, 7, 15, 0, 0, 4927, 4928, 7, 24, 0, 0, 4928, 4929, 7, 6, 0, 0, 4929, 4930, 7, 10, 0, 0, 4930, 956, 1, 0, 0, 0, 4931, 4932, 7, 19, 0, 0, 4932, 4933, 7, 13, 0, 0, 4933, 4934, 7, 12, 0, 0, 4934, 4935, 7, 17, 0, 0, 4935, 4936, 7, 7, 0, 0, 4936, 4937, 7, 5, 0, 0, 4937, 4938, 7, 6, 0, 0, 4938, 4939, 7, 17, 0, 0, 4939, 4940, 7, 16, 0, 0, 4940, 4941, 7, 8, 0, 0, 4941, 958, 1, 0, 0, 0, 4942, 4943, 7, 26, 0, 0, 4943, 4944, 7, 15, 0, 0, 4944, 4945, 7, 6, 0, 0, 4945, 4946, 7, 16, 0, 0, 4946, 4947, 7, 5, 0, 0, 4947, 4948, 7, 18, 0, 0, 4948, 4949, 7, 6, 0, 0, 4949, 4950, 7, 10, 0, 0, 4950, 960, 1, 0, 0, 0, 4951, 4952, 7, 14, 0, 0, 4952, 4953, 7, 19, 0, 0, 4953, 4954, 7, 6, 0, 0, 4954, 4955, 7, 22, 0, 0, 4955, 4956, 7, 15, 0, 0, 4956, 4957, 7, 7, 0, 0, 4957, 4958, 7, 9, 0, 0, 4958, 962, 1, 0, 0, 0, 4959, 4960, 7, 26, 0, 0, 4960, 4961, 7, 15, 0, 0, 4961, 4962, 7, 6, 0, 0, 4962, 4963, 7, 7, 0, 0, 4963, 4964, 7, 5, 0, 0, 4964, 4965, 7, 15, 0, 0, 4965, 4966, 7, 10, 0, 0, 4966, 4967, 7, 9, 0, 0, 4967, 4968, 7, 24, 0, 0, 4968, 4969, 7, 5, 0, 0, 4969, 4970, 7, 14, 0, 0, 4970, 4971, 7, 10, 0, 0, 4971, 4972, 7, 9, 0, 0, 4972, 964, 1, 0, 0, 0, 4973, 4974, 7, 13, 0, 0, 4974, 4975, 7, 19, 0, 0, 4975, 4976, 7, 29, 0, 0, 4976, 4977, 7, 16, 0, 0, 4977, 4978, 7, 8, 0, 0, 4978, 4979, 7, 24, 0, 0, 4979, 4980, 7, 10, 0, 0, 4980, 966, 1, 0, 0, 0, 4981, 4982, 7, 7, 0, 0, 4982, 4983, 7, 19, 0, 0, 4983, 4984, 7, 13, 0, 0, 4984, 4985, 7, 15, 0, 0, 4985, 4986, 7, 5, 0, 0, 4986, 4987, 7, 6, 0, 0, 4987, 4988, 7, 17, 0, 0, 4988, 4989, 7, 11, 0, 0, 4989, 4990, 7, 10, 0, 0, 4990, 4991, 7, 12, 0, 0, 4991, 968, 1, 0, 0, 0, 4992, 4993, 7, 29, 0, 0, 4993, 4994, 7, 17, 0, 0, 4994, 4995, 7, 16, 0, 0, 4995, 4996, 7, 20, 0, 0, 4996, 4997, 7, 17, 0, 0, 4997, 4998, 7, 7, 0, 0, 4998, 970, 1, 0, 0, 0, 4999, 5000, 7, 25, 0, 0, 5000, 5001, 7, 17, 0, 0, 5001, 5002, 7, 6, 0, 0, 5002, 5003, 7, 16, 0, 0, 5003, 5004, 7, 10, 0, 0, 5004, 5005, 7, 13, 0, 0, 5005, 972, 1, 0, 0, 0, 5006, 5007, 7, 23, 0, 0, 5007, 5008, 7, 13, 0, 0, 5008, 5009, 7, 19, 0, 0, 5009, 5010, 7, 22, 0, 0, 5010, 5011, 7, 24, 0, 0, 5011, 5012, 7, 9, 0, 0, 5012, 974, 1, 0, 0, 0, 5013, 5014, 7, 19, 0, 0, 5014, 5015, 7, 16, 0, 0, 5015, 5016, 7, 20, 0, 0, 5016, 5017, 7, 10, 0, 0, 5017, 5018, 7, 13, 0, 0, 5018, 5019, 7, 9, 0, 0, 5019, 976, 1, 0, 0, 0, 5020, 5021, 7, 7, 0, 0, 5021, 5022, 7, 25, 0, 0, 5022, 5023, 7, 14, 0, 0, 5023, 978, 1, 0, 0, 0, 5024, 5025, 7, 7, 0, 0, 5025, 5026, 7, 25, 0, 0, 5026, 5027, 7, 12, 0, 0, 5027, 980, 1, 0, 0, 0, 5028, 5029, 7, 7, 0, 0, 5029, 5030, 7, 25, 0, 0, 5030, 5031, 7, 21, 0, 0, 5031, 5032, 7, 14, 0, 0, 5032, 982, 1, 0, 0, 0, 5033, 5034, 7, 7, 0, 0, 5034, 5035, 7, 25, 0, 0, 5035, 5036, 7, 21, 0, 0, 5036, 5037, 7, 12, 0, 0, 5037, 984, 1, 0, 0, 0, 5038, 5039, 7, 22, 0, 0, 5039, 5040, 7, 10, 0, 0, 5040, 5041, 7, 9, 0, 0, 5041, 5042, 7, 14, 0, 0, 5042, 5043, 7, 5, 0, 0, 5043, 5044, 7, 24, 0, 0, 5044, 5045, 7, 10, 0, 0, 5045, 986, 1, 0, 0, 0, 5046, 5047, 7, 27, 0, 0, 5047, 5048, 7, 17, 0, 0, 5048, 5049, 7, 10, 0, 0, 5049, 5050, 7, 29, 0, 0, 5050, 5051, 7, 9, 0, 0, 5051, 988, 1, 0, 0, 0, 5052, 5053, 7, 7, 0, 0, 5053, 5054, 7, 19, 0, 0, 5054, 5055, 7, 13, 0, 0, 5055, 5056, 7, 15, 0, 0, 5056, 5057, 7, 5, 0, 0, 5057, 5058, 7, 6, 0, 0, 5058, 5059, 7, 17, 0, 0, 5059, 5060, 7, 11, 0, 0, 5060, 5061, 7, 10, 0, 0, 5061, 990, 1, 0, 0, 0, 5062, 5063, 7, 12, 0, 0, 5063, 5064, 7, 22, 0, 0, 5064, 5065, 7, 15, 0, 0, 5065, 5066, 7, 24, 0, 0, 5066, 992, 1, 0, 0, 0, 5067, 5068, 7, 24, 0, 0, 5068, 5069, 7, 13, 0, 0, 5069, 5070, 7, 17, 0, 0, 5070, 5071, 7, 7, 0, 0, 5071, 5072, 7, 16, 0, 0, 5072, 5073, 5, 95, 0, 0, 5073, 5074, 7, 9, 0, 0, 5074, 5075, 7, 16, 0, 0, 5075, 5076, 7, 13, 0, 0, 5076, 5077, 7, 17, 0, 0, 5077, 5078, 7, 14, 0, 0, 5078, 5079, 7, 16, 0, 0, 5079, 5080, 5, 95, 0, 0, 5080, 5081, 7, 24, 0, 0, 5081, 5082, 7, 5, 0, 0, 5082, 5083, 7, 13, 0, 0, 5083, 5084, 7, 5, 0, 0, 5084, 5085, 7, 15, 0, 0, 5085, 5086, 7, 9, 0, 0, 5086, 994, 1, 0, 0, 0, 5087, 5088, 7, 27, 0, 0, 5088, 5089, 7, 5, 0, 0, 5089, 5090, 7, 13, 0, 0, 5090, 5091, 7, 17, 0, 0, 5091, 5092, 7, 5, 0, 0, 5092, 5093, 7, 18, 0, 0, 5093, 5094, 7, 6, 0, 0, 5094, 5095, 7, 10, 0, 0, 5095, 5096, 5, 95, 0, 0, 5096, 5097, 7, 14, 0, 0, 5097, 5098, 7, 19, 0, 0, 5098, 5099, 7, 7, 0, 0, 5099, 5100, 7, 25, 0, 0, 5100, 5101, 7, 6, 0, 0, 5101, 5102, 7, 17, 0, 0, 5102, 5103, 7, 14, 0, 0, 5103, 5104, 7, 16, 0, 0, 5104, 996, 1, 0, 0, 0, 5105, 5106, 7, 10, 0, 0, 5106, 5107, 7, 13, 0, 0, 5107, 5108, 7, 13, 0, 0, 5108, 5109, 7, 19, 0, 0, 5109, 5110, 7, 13, 0, 0, 5110, 998, 1, 0, 0, 0, 5111, 5112, 7, 22, 0, 0, 5112, 5113, 7, 9, 0, 0, 5113, 5114, 7, 10, 0, 0, 5114, 5115, 5, 95, 0, 0, 5115, 5116, 7, 27, 0, 0, 5116, 5117, 7, 5, 0, 0, 5117, 5118, 7, 13, 0, 0, 5118, 5119, 7, 17, 0, 0, 5119, 5120, 7, 5, 0, 0, 5120, 5121, 7, 18, 0, 0, 5121, 5122, 7, 6, 0, 0, 5122, 5123, 7, 10, 0, 0, 5123, 1000, 1, 0, 0, 0, 5124, 5125, 7, 22, 0, 0, 5125, 5126, 7, 9, 0, 0, 5126, 5127, 7, 10, 0, 0, 5127, 5128, 5, 95, 0, 0, 5128, 5129, 7, 14, 0, 0, 5129, 5130, 7, 19, 0, 0, 5130, 5131, 7, 6, 0, 0, 5131, 5132, 7, 22, 0, 0, 5132, 5133, 7, 15, 0, 0, 5133, 5134, 7, 7, 0, 0, 5134, 1002, 1, 0, 0, 0, 5135, 5136, 7, 5, 0, 0, 5136, 5137, 7, 6, 0, 0, 5137, 5138, 7, 17, 0, 0, 5138, 5139, 7, 5, 0, 0, 5139, 5140, 7, 9, 0, 0, 5140, 1004, 1, 0, 0, 0, 5141, 5142, 7, 14, 0, 0, 5142, 5143, 7, 19, 0, 0, 5143, 5144, 7, 7, 0, 0, 5144, 5145, 7, 9, 0, 0, 5145, 5146, 7, 16, 0, 0, 5146, 5147, 7, 5, 0, 0, 5147, 5148, 7, 7, 0, 0, 5148, 5149, 7, 16, 0, 0, 5149, 1006, 1, 0, 0, 0, 5150, 5151, 7, 24, 0, 0, 5151, 5152, 7, 10, 0, 0, 5152, 5153, 7, 13, 0, 0, 5153, 5154, 7, 25, 0, 0, 5154, 5155, 7, 19, 0, 0, 5155, 5156, 7, 13, 0, 0, 5156, 5157, 7, 15, 0, 0, 5157, 1008, 1, 0, 0, 0, 5158, 5159, 7, 23, 0, 0, 5159, 5160, 7, 10, 0, 0, 5160, 5161, 7, 16, 0, 0, 5161, 1010, 1, 0, 0, 0, 5162, 5163, 7, 12, 0, 0, 5163, 5164, 7, 17, 0, 0, 5164, 5165, 7, 5, 0, 0, 5165, 5166, 7, 23, 0, 0, 5166, 5167, 7, 7, 0, 0, 5167, 5168, 7, 19, 0, 0, 5168, 5169, 7, 9, 0, 0, 5169, 5170, 7, 16, 0, 0, 5170, 5171, 7, 17, 0, 0, 5171, 5172, 7, 14, 0, 0, 5172, 5173, 7, 9, 0, 0, 5173, 1012, 1, 0, 0, 0, 5174, 5175, 7, 9, 0, 0, 5175, 5176, 7, 16, 0, 0, 5176, 5177, 7, 5, 0, 0, 5177, 5178, 7, 14, 0, 0, 5178, 5179, 7, 21, 0, 0, 5179, 5180, 7, 10, 0, 0, 5180, 5181, 7, 12, 0, 0, 5181, 1014, 1, 0, 0, 0, 5182, 5183, 7, 10, 0, 0, 5183, 5184, 7, 6, 0, 0, 5184, 5185, 7, 9, 0, 0, 5185, 5186, 7, 17, 0, 0, 5186, 5187, 7, 25, 0, 0, 5187, 1016, 1, 0, 0, 0, 5188, 5189, 7, 29, 0, 0, 5189, 5190, 7, 20, 0, 0, 5190, 5191, 7, 17, 0, 0, 5191, 5192, 7, 6, 0, 0, 5192, 5193, 7, 10, 0, 0, 5193, 1018, 1, 0, 0, 0, 5194, 5195, 7, 13, 0, 0, 5195, 5196, 7, 10, 0, 0, 5196, 5197, 7, 27, 0, 0, 5197, 5198, 7, 10, 0, 0, 5198, 5199, 7, 13, 0, 0, 5199, 5200, 7, 9, 0, 0, 5200, 5201, 7, 10, 0, 0, 5201, 1020, 1, 0, 0, 0, 5202, 5203, 7, 25, 0, 0, 5203, 5204, 7, 19, 0, 0, 5204, 5205, 7, 13, 0, 0, 5205, 5206, 7, 10, 0, 0, 5206, 5207, 7, 5, 0, 0, 5207, 5208, 7, 14, 0, 0, 5208, 5209, 7, 20, 0, 0, 5209, 1022, 1, 0, 0, 0, 5210, 5211, 7, 9, 0, 0, 5211, 5212, 7, 6, 0, 0, 5212, 5213, 7, 17, 0, 0, 5213, 5214, 7, 14, 0, 0, 5214, 5215, 7, 10, 0, 0, 5215, 1024, 1, 0, 0, 0, 5216, 5217, 7, 10, 0, 0, 5217, 5218, 7, 26, 0, 0, 5218, 5219, 7, 17, 0, 0, 5219, 5220, 7, 16, 0, 0, 5220, 1026, 1, 0, 0, 0, 5221, 5222, 7, 13, 0, 0, 5222, 5223, 7, 10, 0, 0, 5223, 5224, 7, 16, 0, 0, 5224, 5225, 7, 22, 0, 0, 5225, 5226, 7, 13, 0, 0, 5226, 5227, 7, 7, 0, 0, 5227, 1028, 1, 0, 0, 0, 5228, 5229, 7, 28, 0, 0, 5229, 5230, 7, 22, 0, 0, 5230, 5231, 7, 10, 0, 0, 5231, 5232, 7, 13, 0, 0, 5232, 5233, 7, 8, 0, 0, 5233, 1030, 1, 0, 0, 0, 5234, 5235, 7, 13, 0, 0, 5235, 5236, 7, 5, 0, 0, 5236, 5237, 7, 17, 0, 0, 5237, 5238, 7, 9, 0, 0, 5238, 5239, 7, 10, 0, 0, 5239, 1032, 1, 0, 0, 0, 5240, 5241, 7, 9, 0, 0, 5241, 5242, 7, 28, 0, 0, 5242, 5243, 7, 6, 0, 0, 5243, 5244, 7, 9, 0, 0, 5244, 5245, 7, 16, 0, 0, 5245, 5246, 7, 5, 0, 0, 5246, 5247, 7, 16, 0, 0, 5247, 5248, 7, 10, 0, 0, 5248, 1034, 1, 0, 0, 0, 5249, 5250, 7, 12, 0, 0, 5250, 5251, 7, 10, 0, 0, 5251, 5252, 7, 18, 0, 0, 5252, 5253, 7, 22, 0, 0, 5253, 5254, 7, 23, 0, 0, 5254, 1036, 1, 0, 0, 0, 5255, 5256, 7, 6, 0, 0, 5256, 5257, 7, 19, 0, 0, 5257, 5258, 7, 23, 0, 0, 5258, 1038, 1, 0, 0, 0, 5259, 5260, 7, 17, 0, 0, 5260, 5261, 7, 7, 0, 0, 5261, 5262, 7, 25, 0, 0, 5262, 5263, 7, 19, 0, 0, 5263, 1040, 1, 0, 0, 0, 5264, 5265, 7, 7, 0, 0, 5265, 5266, 7, 19, 0, 0, 5266, 5267, 7, 16, 0, 0, 5267, 5268, 7, 17, 0, 0, 5268, 5269, 7, 14, 0, 0, 5269, 5270, 7, 10, 0, 0, 5270, 1042, 1, 0, 0, 0, 5271, 5272, 7, 29, 0, 0, 5272, 5273, 7, 5, 0, 0, 5273, 5274, 7, 13, 0, 0, 5274, 5275, 7, 7, 0, 0, 5275, 5276, 7, 17, 0, 0, 5276, 5277, 7, 7, 0, 0, 5277, 5278, 7, 23, 0, 0, 5278, 1044, 1, 0, 0, 0, 5279, 5280, 7, 10, 0, 0, 5280, 5281, 7, 26, 0, 0, 5281, 5282, 7, 14, 0, 0, 5282, 5283, 7, 10, 0, 0, 5283, 5284, 7, 24, 0, 0, 5284, 5285, 7, 16, 0, 0, 5285, 5286, 7, 17, 0, 0, 5286, 5287, 7, 19, 0, 0, 5287, 5288, 7, 7, 0, 0, 5288, 1046, 1, 0, 0, 0, 5289, 5290, 7, 5, 0, 0, 5290, 5291, 7, 9, 0, 0, 5291, 5292, 7, 9, 0, 0, 5292, 5293, 7, 10, 0, 0, 5293, 5294, 7, 13, 0, 0, 5294, 5295, 7, 16, 0, 0, 5295, 1048, 1, 0, 0, 0, 5296, 5297, 7, 6, 0, 0, 5297, 5298, 7, 19, 0, 0, 5298, 5299, 7, 19, 0, 0, 5299, 5300, 7, 24, 0, 0, 5300, 1050, 1, 0, 0, 0, 5301, 5302, 7, 19, 0, 0, 5302, 5303, 7, 24, 0, 0, 5303, 5304, 7, 10, 0, 0, 5304, 5305, 7, 7, 0, 0, 5305, 1052, 1, 0, 0, 0, 5306, 5307, 7, 5, 0, 0, 5307, 5308, 7, 18, 0, 0, 5308, 5309, 7, 9, 0, 0, 5309, 1054, 1, 0, 0, 0, 5310, 5311, 7, 14, 0, 0, 5311, 5312, 7, 18, 0, 0, 5312, 5313, 7, 13, 0, 0, 5313, 5314, 7, 16, 0, 0, 5314, 1056, 1, 0, 0, 0, 5315, 5316, 7, 14, 0, 0, 5316, 5317, 7, 10, 0, 0, 5317, 5318, 7, 17, 0, 0, 5318, 5319, 7, 6, 0, 0, 5319, 1058, 1, 0, 0, 0, 5320, 5321, 7, 14, 0, 0, 5321, 5322, 7, 10, 0, 0, 5322, 5323, 7, 17, 0, 0, 5323, 5324, 7, 6, 0, 0, 5324, 5325, 7, 17, 0, 0, 5325, 5326, 7, 7, 0, 0, 5326, 5327, 7, 23, 0, 0, 5327, 1060, 1, 0, 0, 0, 5328, 5329, 7, 12, 0, 0, 5329, 5330, 7, 10, 0, 0, 5330, 5331, 7, 23, 0, 0, 5331, 5332, 7, 13, 0, 0, 5332, 5333, 7, 10, 0, 0, 5333, 5334, 7, 10, 0, 0, 5334, 5335, 7, 9, 0, 0, 5335, 1062, 1, 0, 0, 0, 5336, 5337, 7, 12, 0, 0, 5337, 5338, 7, 17, 0, 0, 5338, 5339, 7, 27, 0, 0, 5339, 1064, 1, 0, 0, 0, 5340, 5341, 7, 10, 0, 0, 5341, 5342, 7, 26, 0, 0, 5342, 5343, 7, 24, 0, 0, 5343, 1066, 1, 0, 0, 0, 5344, 5345, 7, 25, 0, 0, 5345, 5346, 7, 5, 0, 0, 5346, 5347, 7, 14, 0, 0, 5347, 5348, 7, 16, 0, 0, 5348, 5349, 7, 19, 0, 0, 5349, 5350, 7, 13, 0, 0, 5350, 5351, 7, 17, 0, 0, 5351, 5352, 7, 5, 0, 0, 5352, 5353, 7, 6, 0, 0, 5353, 1068, 1, 0, 0, 0, 5354, 5355, 7, 25, 0, 0, 5355, 5356, 7, 6, 0, 0, 5356, 5357, 7, 19, 0, 0, 5357, 5358, 7, 19, 0, 0, 5358, 5359, 7, 13, 0, 0, 5359, 1070, 1, 0, 0, 0, 5360, 5361, 7, 23, 0, 0, 5361, 5362, 7, 14, 0, 0, 5362, 5363, 7, 12, 0, 0, 5363, 1072, 1, 0, 0, 0, 5364, 5365, 7, 6, 0, 0, 5365, 5366, 7, 14, 0, 0, 5366, 5367, 7, 15, 0, 0, 5367, 1074, 1, 0, 0, 0, 5368, 5369, 7, 6, 0, 0, 5369, 5370, 7, 7, 0, 0, 5370, 1076, 1, 0, 0, 0, 5371, 5372, 7, 6, 0, 0, 5372, 5373, 7, 19, 0, 0, 5373, 5374, 7, 23, 0, 0, 5374, 5375, 5, 49, 0, 0, 5375, 5376, 5, 48, 0, 0, 5376, 1078, 1, 0, 0, 0, 5377, 5378, 7, 15, 0, 0, 5378, 5379, 7, 17, 0, 0, 5379, 5380, 7, 7, 0, 0, 5380, 5381, 5, 95, 0, 0, 5381, 5382, 7, 9, 0, 0, 5382, 5383, 7, 14, 0, 0, 5383, 5384, 7, 5, 0, 0, 5384, 5385, 7, 6, 0, 0, 5385, 5386, 7, 10, 0, 0, 5386, 1080, 1, 0, 0, 0, 5387, 5388, 7, 15, 0, 0, 5388, 5389, 7, 19, 0, 0, 5389, 5390, 7, 12, 0, 0, 5390, 1082, 1, 0, 0, 0, 5391, 5392, 7, 24, 0, 0, 5392, 5393, 7, 17, 0, 0, 5393, 1084, 1, 0, 0, 0, 5394, 5395, 7, 24, 0, 0, 5395, 5396, 7, 19, 0, 0, 5396, 5397, 7, 29, 0, 0, 5397, 5398, 7, 10, 0, 0, 5398, 5399, 7, 13, 0, 0, 5399, 1086, 1, 0, 0, 0, 5400, 5401, 7, 13, 0, 0, 5401, 5402, 7, 5, 0, 0, 5402, 5403, 7, 12, 0, 0, 5403, 5404, 7, 17, 0, 0, 5404, 5405, 7, 5, 0, 0, 5405, 5406, 7, 7, 0, 0, 5406, 5407, 7, 9, 0, 0, 5407, 1088, 1, 0, 0, 0, 5408, 5409, 7, 13, 0, 0, 5409, 5410, 7, 19, 0, 0, 5410, 5411, 7, 22, 0, 0, 5411, 5412, 7, 7, 0, 0, 5412, 5413, 7, 12, 0, 0, 5413, 1090, 1, 0, 0, 0, 5414, 5415, 7, 9, 0, 0, 5415, 5416, 7, 14, 0, 0, 5416, 5417, 7, 5, 0, 0, 5417, 5418, 7, 6, 0, 0, 5418, 5419, 7, 10, 0, 0, 5419, 1092, 1, 0, 0, 0, 5420, 5421, 7, 9, 0, 0, 5421, 5422, 7, 17, 0, 0, 5422, 5423, 7, 23, 0, 0, 5423, 5424, 7, 7, 0, 0, 5424, 1094, 1, 0, 0, 0, 5425, 5426, 7, 9, 0, 0, 5426, 5427, 7, 28, 0, 0, 5427, 5428, 7, 13, 0, 0, 5428, 5429, 7, 16, 0, 0, 5429, 1096, 1, 0, 0, 0, 5430, 5431, 7, 16, 0, 0, 5431, 5432, 7, 13, 0, 0, 5432, 5433, 7, 17, 0, 0, 5433, 5434, 7, 15, 0, 0, 5434, 5435, 5, 95, 0, 0, 5435, 5436, 7, 9, 0, 0, 5436, 5437, 7, 14, 0, 0, 5437, 5438, 7, 5, 0, 0, 5438, 5439, 7, 6, 0, 0, 5439, 5440, 7, 10, 0, 0, 5440, 1098, 1, 0, 0, 0, 5441, 5442, 7, 16, 0, 0, 5442, 5443, 7, 13, 0, 0, 5443, 5444, 7, 22, 0, 0, 5444, 5445, 7, 7, 0, 0, 5445, 5446, 7, 14, 0, 0, 5446, 1100, 1, 0, 0, 0, 5447, 5448, 7, 29, 0, 0, 5448, 5449, 7, 17, 0, 0, 5449, 5450, 7, 12, 0, 0, 5450, 5451, 7, 16, 0, 0, 5451, 5452, 7, 20, 0, 0, 5452, 5453, 5, 95, 0, 0, 5453, 5454, 7, 18, 0, 0, 5454, 5455, 7, 22, 0, 0, 5455, 5456, 7, 14, 0, 0, 5456, 5457, 7, 21, 0, 0, 5457, 5458, 7, 10, 0, 0, 5458, 5459, 7, 16, 0, 0, 5459, 1102, 1, 0, 0, 0, 5460, 5461, 7, 13, 0, 0, 5461, 5462, 7, 5, 0, 0, 5462, 5463, 7, 7, 0, 0, 5463, 5464, 7, 12, 0, 0, 5464, 5465, 7, 19, 0, 0, 5465, 5466, 7, 15, 0, 0, 5466, 1104, 1, 0, 0, 0, 5467, 5468, 7, 9, 0, 0, 5468, 5469, 7, 10, 0, 0, 5469, 5470, 7, 16, 0, 0, 5470, 5471, 7, 9, 0, 0, 5471, 5472, 7, 10, 0, 0, 5472, 5473, 7, 10, 0, 0, 5473, 5474, 7, 12, 0, 0, 5474, 1106, 1, 0, 0, 0, 5475, 5476, 7, 5, 0, 0, 5476, 5477, 7, 14, 0, 0, 5477, 5478, 7, 19, 0, 0, 5478, 5479, 7, 9, 0, 0, 5479, 1108, 1, 0, 0, 0, 5480, 5481, 7, 5, 0, 0, 5481, 5482, 7, 14, 0, 0, 5482, 5483, 7, 19, 0, 0, 5483, 5484, 7, 9, 0, 0, 5484, 5485, 7, 12, 0, 0, 5485, 1110, 1, 0, 0, 0, 5486, 5487, 7, 5, 0, 0, 5487, 5488, 7, 9, 0, 0, 5488, 5489, 7, 17, 0, 0, 5489, 5490, 7, 7, 0, 0, 5490, 1112, 1, 0, 0, 0, 5491, 5492, 7, 5, 0, 0, 5492, 5493, 7, 9, 0, 0, 5493, 5494, 7, 17, 0, 0, 5494, 5495, 7, 7, 0, 0, 5495, 5496, 7, 12, 0, 0, 5496, 1114, 1, 0, 0, 0, 5497, 5498, 7, 5, 0, 0, 5498, 5499, 7, 16, 0, 0, 5499, 5500, 7, 5, 0, 0, 5500, 5501, 7, 7, 0, 0, 5501, 1116, 1, 0, 0, 0, 5502, 5503, 7, 5, 0, 0, 5503, 5504, 7, 16, 0, 0, 5504, 5505, 7, 5, 0, 0, 5505, 5506, 7, 7, 0, 0, 5506, 5507, 7, 12, 0, 0, 5507, 1118, 1, 0, 0, 0, 5508, 5509, 7, 5, 0, 0, 5509, 5510, 7, 16, 0, 0, 5510, 5511, 7, 5, 0, 0, 5511, 5512, 7, 7, 0, 0, 5512, 5513, 5, 50, 0, 0, 5513, 1120, 1, 0, 0, 0, 5514, 5515, 7, 5, 0, 0, 5515, 5516, 7, 16, 0, 0, 5516, 5517, 7, 5, 0, 0, 5517, 5518, 7, 7, 0, 0, 5518, 5519, 5, 50, 0, 0, 5519, 5520, 7, 12, 0, 0, 5520, 1122, 1, 0, 0, 0, 5521, 5522, 7, 14, 0, 0, 5522, 5523, 7, 19, 0, 0, 5523, 5524, 7, 9, 0, 0, 5524, 1124, 1, 0, 0, 0, 5525, 5526, 7, 14, 0, 0, 5526, 5527, 7, 19, 0, 0, 5527, 5528, 7, 9, 0, 0, 5528, 5529, 7, 12, 0, 0, 5529, 1126, 1, 0, 0, 0, 5530, 5531, 7, 14, 0, 0, 5531, 5532, 7, 19, 0, 0, 5532, 5533, 7, 16, 0, 0, 5533, 1128, 1, 0, 0, 0, 5534, 5535, 7, 14, 0, 0, 5535, 5536, 7, 19, 0, 0, 5536, 5537, 7, 16, 0, 0, 5537, 5538, 7, 12, 0, 0, 5538, 1130, 1, 0, 0, 0, 5539, 5540, 7, 9, 0, 0, 5540, 5541, 7, 17, 0, 0, 5541, 5542, 7, 7, 0, 0, 5542, 1132, 1, 0, 0, 0, 5543, 5544, 7, 9, 0, 0, 5544, 5545, 7, 17, 0, 0, 5545, 5546, 7, 7, 0, 0, 5546, 5547, 7, 12, 0, 0, 5547, 1134, 1, 0, 0, 0, 5548, 5549, 7, 16, 0, 0, 5549, 5550, 7, 5, 0, 0, 5550, 5551, 7, 7, 0, 0, 5551, 1136, 1, 0, 0, 0, 5552, 5553, 7, 16, 0, 0, 5553, 5554, 7, 5, 0, 0, 5554, 5555, 7, 7, 0, 0, 5555, 5556, 7, 12, 0, 0, 5556, 1138, 1, 0, 0, 0, 5557, 5558, 7, 9, 0, 0, 5558, 5559, 7, 17, 0, 0, 5559, 5560, 7, 7, 0, 0, 5560, 5561, 7, 20, 0, 0, 5561, 1140, 1, 0, 0, 0, 5562, 5563, 7, 14, 0, 0, 5563, 5564, 7, 19, 0, 0, 5564, 5565, 7, 9, 0, 0, 5565, 5566, 7, 20, 0, 0, 5566, 1142, 1, 0, 0, 0, 5567, 5568, 7, 16, 0, 0, 5568, 5569, 7, 5, 0, 0, 5569, 5570, 7, 7, 0, 0, 5570, 5571, 7, 20, 0, 0, 5571, 1144, 1, 0, 0, 0, 5572, 5573, 7, 5, 0, 0, 5573, 5574, 7, 9, 0, 0, 5574, 5575, 7, 17, 0, 0, 5575, 5576, 7, 7, 0, 0, 5576, 5577, 7, 20, 0, 0, 5577, 1146, 1, 0, 0, 0, 5578, 5579, 7, 5, 0, 0, 5579, 5580, 7, 14, 0, 0, 5580, 5581, 7, 19, 0, 0, 5581, 5582, 7, 9, 0, 0, 5582, 5583, 7, 20, 0, 0, 5583, 1148, 1, 0, 0, 0, 5584, 5585, 7, 5, 0, 0, 5585, 5586, 7, 16, 0, 0, 5586, 5587, 7, 5, 0, 0, 5587, 5588, 7, 7, 0, 0, 5588, 5589, 7, 20, 0, 0, 5589, 1150, 1, 0, 0, 0, 5590, 5591, 7, 18, 0, 0, 5591, 5592, 7, 17, 0, 0, 5592, 5593, 7, 16, 0, 0, 5593, 5594, 5, 95, 0, 0, 5594, 5595, 7, 6, 0, 0, 5595, 5596, 7, 10, 0, 0, 5596, 5597, 7, 7, 0, 0, 5597, 5598, 7, 23, 0, 0, 5598, 5599, 7, 16, 0, 0, 5599, 5600, 7, 20, 0, 0, 5600, 1152, 1, 0, 0, 0, 5601, 5602, 7, 14, 0, 0, 5602, 5603, 7, 20, 0, 0, 5603, 5604, 7, 5, 0, 0, 5604, 5605, 7, 13, 0, 0, 5605, 5606, 5, 95, 0, 0, 5606, 5607, 7, 6, 0, 0, 5607, 5608, 7, 10, 0, 0, 5608, 5609, 7, 7, 0, 0, 5609, 5610, 7, 23, 0, 0, 5610, 5611, 7, 16, 0, 0, 5611, 5612, 7, 20, 0, 0, 5612, 1154, 1, 0, 0, 0, 5613, 5614, 7, 14, 0, 0, 5614, 5615, 7, 20, 0, 0, 5615, 5616, 7, 5, 0, 0, 5616, 5617, 7, 13, 0, 0, 5617, 5618, 7, 5, 0, 0, 5618, 5619, 7, 14, 0, 0, 5619, 5620, 7, 16, 0, 0, 5620, 5621, 7, 10, 0, 0, 5621, 5622, 7, 13, 0, 0, 5622, 5623, 5, 95, 0, 0, 5623, 5624, 7, 6, 0, 0, 5624, 5625, 7, 10, 0, 0, 5625, 5626, 7, 7, 0, 0, 5626, 5627, 7, 23, 0, 0, 5627, 5628, 7, 16, 0, 0, 5628, 5629, 7, 20, 0, 0, 5629, 1156, 1, 0, 0, 0, 5630, 5631, 7, 6, 0, 0, 5631, 5632, 7, 19, 0, 0, 5632, 5633, 7, 29, 0, 0, 5633, 5634, 7, 10, 0, 0, 5634, 5635, 7, 13, 0, 0, 5635, 1158, 1, 0, 0, 0, 5636, 5637, 7, 19, 0, 0, 5637, 5638, 7, 14, 0, 0, 5638, 5639, 7, 16, 0, 0, 5639, 5640, 7, 10, 0, 0, 5640, 5641, 7, 16, 0, 0, 5641, 5642, 5, 95, 0, 0, 5642, 5643, 7, 6, 0, 0, 5643, 5644, 7, 10, 0, 0, 5644, 5645, 7, 7, 0, 0, 5645, 5646, 7, 23, 0, 0, 5646, 5647, 7, 16, 0, 0, 5647, 5648, 7, 20, 0, 0, 5648, 1160, 1, 0, 0, 0, 5649, 5650, 7, 22, 0, 0, 5650, 5651, 7, 24, 0, 0, 5651, 5652, 7, 24, 0, 0, 5652, 5653, 7, 10, 0, 0, 5653, 5654, 7, 13, 0, 0, 5654, 1162, 1, 0, 0, 0, 5655, 5656, 7, 5, 0, 0, 5656, 5657, 7, 9, 0, 0, 5657, 5658, 7, 14, 0, 0, 5658, 5659, 7, 17, 0, 0, 5659, 5660, 7, 17, 0, 0, 5660, 1164, 1, 0, 0, 0, 5661, 5662, 7, 18, 0, 0, 5662, 5663, 7, 16, 0, 0, 5663, 5664, 7, 13, 0, 0, 5664, 5665, 7, 17, 0, 0, 5665, 5666, 7, 15, 0, 0, 5666, 1166, 1, 0, 0, 0, 5667, 5668, 7, 14, 0, 0, 5668, 5669, 7, 20, 0, 0, 5669, 5670, 7, 13, 0, 0, 5670, 1168, 1, 0, 0, 0, 5671, 5672, 7, 14, 0, 0, 5672, 5673, 7, 19, 0, 0, 5673, 5674, 7, 7, 0, 0, 5674, 5675, 7, 14, 0, 0, 5675, 5676, 7, 5, 0, 0, 5676, 5677, 7, 16, 0, 0, 5677, 1170, 1, 0, 0, 0, 5678, 5679, 7, 14, 0, 0, 5679, 5680, 7, 19, 0, 0, 5680, 5681, 7, 7, 0, 0, 5681, 5682, 7, 14, 0, 0, 5682, 5683, 7, 5, 0, 0, 5683, 5684, 7, 16, 0, 0, 5684, 5685, 5, 95, 0, 0, 5685, 5686, 7, 29, 0, 0, 5686, 5687, 7, 9, 0, 0, 5687, 1172, 1, 0, 0, 0, 5688, 5689, 7, 25, 0, 0, 5689, 5690, 7, 19, 0, 0, 5690, 5691, 7, 13, 0, 0, 5691, 5692, 7, 15, 0, 0, 5692, 5693, 7, 5, 0, 0, 5693, 5694, 7, 16, 0, 0, 5694, 1174, 1, 0, 0, 0, 5695, 5696, 7, 17, 0, 0, 5696, 5697, 7, 7, 0, 0, 5697, 5698, 7, 17, 0, 0, 5698, 5699, 7, 16, 0, 0, 5699, 5700, 7, 14, 0, 0, 5700, 5701, 7, 5, 0, 0, 5701, 5702, 7, 24, 0, 0, 5702, 1176, 1, 0, 0, 0, 5703, 5704, 7, 6, 0, 0, 5704, 5705, 7, 10, 0, 0, 5705, 5706, 7, 7, 0, 0, 5706, 5707, 7, 23, 0, 0, 5707, 5708, 7, 16, 0, 0, 5708, 5709, 7, 20, 0, 0, 5709, 1178, 1, 0, 0, 0, 5710, 5711, 7, 6, 0, 0, 5711, 5712, 7, 24, 0, 0, 5712, 5713, 7, 5, 0, 0, 5713, 5714, 7, 12, 0, 0, 5714, 1180, 1, 0, 0, 0, 5715, 5716, 7, 6, 0, 0, 5716, 5717, 7, 16, 0, 0, 5717, 5718, 7, 13, 0, 0, 5718, 5719, 7, 17, 0, 0, 5719, 5720, 7, 15, 0, 0, 5720, 1182, 1, 0, 0, 0, 5721, 5722, 7, 15, 0, 0, 5722, 5723, 7, 12, 0, 0, 5723, 5724, 5, 53, 0, 0, 5724, 1184, 1, 0, 0, 0, 5725, 5726, 7, 24, 0, 0, 5726, 5727, 7, 5, 0, 0, 5727, 5728, 7, 13, 0, 0, 5728, 5729, 7, 9, 0, 0, 5729, 5730, 7, 10, 0, 0, 5730, 5731, 5, 95, 0, 0, 5731, 5732, 7, 17, 0, 0, 5732, 5733, 7, 12, 0, 0, 5733, 5734, 7, 10, 0, 0, 5734, 5735, 7, 7, 0, 0, 5735, 5736, 7, 16, 0, 0, 5736, 1186, 1, 0, 0, 0, 5737, 5738, 7, 24, 0, 0, 5738, 5739, 7, 23, 0, 0, 5739, 5740, 5, 95, 0, 0, 5740, 5741, 7, 14, 0, 0, 5741, 5742, 7, 6, 0, 0, 5742, 5743, 7, 17, 0, 0, 5743, 5744, 7, 10, 0, 0, 5744, 5745, 7, 7, 0, 0, 5745, 5746, 7, 16, 0, 0, 5746, 5747, 5, 95, 0, 0, 5747, 5748, 7, 10, 0, 0, 5748, 5749, 7, 7, 0, 0, 5749, 5750, 7, 14, 0, 0, 5750, 5751, 7, 19, 0, 0, 5751, 5752, 7, 12, 0, 0, 5752, 5753, 7, 17, 0, 0, 5753, 5754, 7, 7, 0, 0, 5754, 5755, 7, 23, 0, 0, 5755, 1188, 1, 0, 0, 0, 5756, 5757, 7, 28, 0, 0, 5757, 5758, 7, 22, 0, 0, 5758, 5759, 7, 19, 0, 0, 5759, 5760, 7, 16, 0, 0, 5760, 5761, 7, 10, 0, 0, 5761, 5762, 5, 95, 0, 0, 5762, 5763, 7, 17, 0, 0, 5763, 5764, 7, 12, 0, 0, 5764, 5765, 7, 10, 0, 0, 5765, 5766, 7, 7, 0, 0, 5766, 5767, 7, 16, 0, 0, 5767, 1190, 1, 0, 0, 0, 5768, 5769, 7, 28, 0, 0, 5769, 5770, 7, 22, 0, 0, 5770, 5771, 7, 19, 0, 0, 5771, 5772, 7, 16, 0, 0, 5772, 5773, 7, 10, 0, 0, 5773, 5774, 5, 95, 0, 0, 5774, 5775, 7, 6, 0, 0, 5775, 5776, 7, 17, 0, 0, 5776, 5777, 7, 16, 0, 0, 5777, 5778, 7, 10, 0, 0, 5778, 5779, 7, 13, 0, 0, 5779, 5780, 7, 5, 0, 0, 5780, 5781, 7, 6, 0, 0, 5781, 1192, 1, 0, 0, 0, 5782, 5783, 7, 28, 0, 0, 5783, 5784, 7, 22, 0, 0, 5784, 5785, 7, 19, 0, 0, 5785, 5786, 7, 16, 0, 0, 5786, 5787, 7, 10, 0, 0, 5787, 5788, 5, 95, 0, 0, 5788, 5789, 7, 7, 0, 0, 5789, 5790, 7, 22, 0, 0, 5790, 5791, 7, 6, 0, 0, 5791, 5792, 7, 6, 0, 0, 5792, 5793, 7, 5, 0, 0, 5793, 5794, 7, 18, 0, 0, 5794, 5795, 7, 6, 0, 0, 5795, 5796, 7, 10, 0, 0, 5796, 1194, 1, 0, 0, 0, 5797, 5798, 7, 13, 0, 0, 5798, 5799, 7, 10, 0, 0, 5799, 5800, 7, 23, 0, 0, 5800, 5801, 7, 10, 0, 0, 5801, 5802, 7, 26, 0, 0, 5802, 5803, 7, 24, 0, 0, 5803, 5804, 5, 95, 0, 0, 5804, 5805, 7, 14, 0, 0, 5805, 5806, 7, 19, 0, 0, 5806, 5807, 7, 22, 0, 0, 5807, 5808, 7, 7, 0, 0, 5808, 5809, 7, 16, 0, 0, 5809, 1196, 1, 0, 0, 0, 5810, 5811, 7, 13, 0, 0, 5811, 5812, 7, 10, 0, 0, 5812, 5813, 7, 23, 0, 0, 5813, 5814, 7, 10, 0, 0, 5814, 5815, 7, 26, 0, 0, 5815, 5816, 7, 24, 0, 0, 5816, 5817, 5, 95, 0, 0, 5817, 5818, 7, 17, 0, 0, 5818, 5819, 7, 7, 0, 0, 5819, 5820, 7, 9, 0, 0, 5820, 5821, 7, 16, 0, 0, 5821, 5822, 7, 13, 0, 0, 5822, 1198, 1, 0, 0, 0, 5823, 5824, 7, 13, 0, 0, 5824, 5825, 7, 10, 0, 0, 5825, 5826, 7, 23, 0, 0, 5826, 5827, 7, 10, 0, 0, 5827, 5828, 7, 26, 0, 0, 5828, 5829, 7, 24, 0, 0, 5829, 5830, 5, 95, 0, 0, 5830, 5831, 7, 6, 0, 0, 5831, 5832, 7, 17, 0, 0, 5832, 5833, 7, 21, 0, 0, 5833, 5834, 7, 10, 0, 0, 5834, 1200, 1, 0, 0, 0, 5835, 5836, 7, 13, 0, 0, 5836, 5837, 7, 10, 0, 0, 5837, 5838, 7, 23, 0, 0, 5838, 5839, 7, 10, 0, 0, 5839, 5840, 7, 26, 0, 0, 5840, 5841, 7, 24, 0, 0, 5841, 5842, 5, 95, 0, 0, 5842, 5843, 7, 15, 0, 0, 5843, 5844, 7, 5, 0, 0, 5844, 5845, 7, 16, 0, 0, 5845, 5846, 7, 14, 0, 0, 5846, 5847, 7, 20, 0, 0, 5847, 1202, 1, 0, 0, 0, 5848, 5849, 7, 13, 0, 0, 5849, 5850, 7, 10, 0, 0, 5850, 5851, 7, 23, 0, 0, 5851, 5852, 7, 10, 0, 0, 5852, 5853, 7, 26, 0, 0, 5853, 5854, 7, 24, 0, 0, 5854, 5855, 5, 95, 0, 0, 5855, 5856, 7, 15, 0, 0, 5856, 5857, 7, 5, 0, 0, 5857, 5858, 7, 16, 0, 0, 5858, 5859, 7, 14, 0, 0, 5859, 5860, 7, 20, 0, 0, 5860, 5861, 7, 10, 0, 0, 5861, 5862, 7, 9, 0, 0, 5862, 1204, 1, 0, 0, 0, 5863, 5864, 7, 13, 0, 0, 5864, 5865, 7, 10, 0, 0, 5865, 5866, 7, 23, 0, 0, 5866, 5867, 7, 10, 0, 0, 5867, 5868, 7, 26, 0, 0, 5868, 5869, 7, 24, 0, 0, 5869, 5870, 5, 95, 0, 0, 5870, 5871, 7, 13, 0, 0, 5871, 5872, 7, 10, 0, 0, 5872, 5873, 7, 24, 0, 0, 5873, 5874, 7, 6, 0, 0, 5874, 5875, 7, 5, 0, 0, 5875, 5876, 7, 14, 0, 0, 5876, 5877, 7, 10, 0, 0, 5877, 1206, 1, 0, 0, 0, 5878, 5879, 7, 13, 0, 0, 5879, 5880, 7, 10, 0, 0, 5880, 5881, 7, 23, 0, 0, 5881, 5882, 7, 10, 0, 0, 5882, 5883, 7, 26, 0, 0, 5883, 5884, 7, 24, 0, 0, 5884, 5885, 5, 95, 0, 0, 5885, 5886, 7, 9, 0, 0, 5886, 5887, 7, 24, 0, 0, 5887, 5888, 7, 6, 0, 0, 5888, 5889, 7, 17, 0, 0, 5889, 5890, 7, 16, 0, 0, 5890, 5891, 5, 95, 0, 0, 5891, 5892, 7, 16, 0, 0, 5892, 5893, 7, 19, 0, 0, 5893, 5894, 5, 95, 0, 0, 5894, 5895, 7, 5, 0, 0, 5895, 5896, 7, 13, 0, 0, 5896, 5897, 7, 13, 0, 0, 5897, 5898, 7, 5, 0, 0, 5898, 5899, 7, 8, 0, 0, 5899, 1208, 1, 0, 0, 0, 5900, 5901, 7, 13, 0, 0, 5901, 5902, 7, 10, 0, 0, 5902, 5903, 7, 23, 0, 0, 5903, 5904, 7, 10, 0, 0, 5904, 5905, 7, 26, 0, 0, 5905, 5906, 7, 24, 0, 0, 5906, 5907, 5, 95, 0, 0, 5907, 5908, 7, 9, 0, 0, 5908, 5909, 7, 24, 0, 0, 5909, 5910, 7, 6, 0, 0, 5910, 5911, 7, 17, 0, 0, 5911, 5912, 7, 16, 0, 0, 5912, 5913, 5, 95, 0, 0, 5913, 5914, 7, 16, 0, 0, 5914, 5915, 7, 19, 0, 0, 5915, 5916, 5, 95, 0, 0, 5916, 5917, 7, 16, 0, 0, 5917, 5918, 7, 5, 0, 0, 5918, 5919, 7, 18, 0, 0, 5919, 5920, 7, 6, 0, 0, 5920, 5921, 7, 10, 0, 0, 5921, 1210, 1, 0, 0, 0, 5922, 5923, 7, 13, 0, 0, 5923, 5924, 7, 10, 0, 0, 5924, 5925, 7, 23, 0, 0, 5925, 5926, 7, 10, 0, 0, 5926, 5927, 7, 26, 0, 0, 5927, 5928, 7, 24, 0, 0, 5928, 5929, 5, 95, 0, 0, 5929, 5930, 7, 9, 0, 0, 5930, 5931, 7, 22, 0, 0, 5931, 5932, 7, 18, 0, 0, 5932, 5933, 7, 9, 0, 0, 5933, 5934, 7, 16, 0, 0, 5934, 5935, 7, 13, 0, 0, 5935, 1212, 1, 0, 0, 0, 5936, 5937, 7, 13, 0, 0, 5937, 5938, 7, 10, 0, 0, 5938, 5939, 7, 24, 0, 0, 5939, 5940, 7, 10, 0, 0, 5940, 5941, 7, 5, 0, 0, 5941, 5942, 7, 16, 0, 0, 5942, 1214, 1, 0, 0, 0, 5943, 5944, 7, 13, 0, 0, 5944, 5945, 7, 24, 0, 0, 5945, 5946, 7, 5, 0, 0, 5946, 5947, 7, 12, 0, 0, 5947, 1216, 1, 0, 0, 0, 5948, 5949, 7, 13, 0, 0, 5949, 5950, 7, 16, 0, 0, 5950, 5951, 7, 13, 0, 0, 5951, 5952, 7, 17, 0, 0, 5952, 5953, 7, 15, 0, 0, 5953, 1218, 1, 0, 0, 0, 5954, 5955, 7, 9, 0, 0, 5955, 5956, 7, 24, 0, 0, 5956, 5957, 7, 6, 0, 0, 5957, 5958, 7, 17, 0, 0, 5958, 5959, 7, 16, 0, 0, 5959, 5960, 5, 95, 0, 0, 5960, 5961, 7, 24, 0, 0, 5961, 5962, 7, 5, 0, 0, 5962, 5963, 7, 13, 0, 0, 5963, 5964, 7, 16, 0, 0, 5964, 1220, 1, 0, 0, 0, 5965, 5966, 7, 9, 0, 0, 5966, 5967, 7, 16, 0, 0, 5967, 5968, 7, 5, 0, 0, 5968, 5969, 7, 13, 0, 0, 5969, 5970, 7, 16, 0, 0, 5970, 5971, 7, 9, 0, 0, 5971, 5972, 5, 95, 0, 0, 5972, 5973, 7, 29, 0, 0, 5973, 5974, 7, 17, 0, 0, 5974, 5975, 7, 16, 0, 0, 5975, 5976, 7, 20, 0, 0, 5976, 1222, 1, 0, 0, 0, 5977, 5978, 7, 9, 0, 0, 5978, 5979, 7, 16, 0, 0, 5979, 5980, 7, 13, 0, 0, 5980, 5981, 7, 17, 0, 0, 5981, 5982, 7, 7, 0, 0, 5982, 5983, 7, 23, 0, 0, 5983, 5984, 5, 95, 0, 0, 5984, 5985, 7, 16, 0, 0, 5985, 5986, 7, 19, 0, 0, 5986, 5987, 5, 95, 0, 0, 5987, 5988, 7, 5, 0, 0, 5988, 5989, 7, 13, 0, 0, 5989, 5990, 7, 13, 0, 0, 5990, 5991, 7, 5, 0, 0, 5991, 5992, 7, 8, 0, 0, 5992, 1224, 1, 0, 0, 0, 5993, 5994, 7, 9, 0, 0, 5994, 5995, 7, 16, 0, 0, 5995, 5996, 7, 13, 0, 0, 5996, 5997, 7, 17, 0, 0, 5997, 5998, 7, 7, 0, 0, 5998, 5999, 7, 23, 0, 0, 5999, 6000, 5, 95, 0, 0, 6000, 6001, 7, 16, 0, 0, 6001, 6002, 7, 19, 0, 0, 6002, 6003, 5, 95, 0, 0, 6003, 6004, 7, 16, 0, 0, 6004, 6005, 7, 5, 0, 0, 6005, 6006, 7, 18, 0, 0, 6006, 6007, 7, 6, 0, 0, 6007, 6008, 7, 10, 0, 0, 6008, 1226, 1, 0, 0, 0, 6009, 6010, 7, 9, 0, 0, 6010, 6011, 7, 16, 0, 0, 6011, 6012, 7, 13, 0, 0, 6012, 6013, 7, 24, 0, 0, 6013, 6014, 7, 19, 0, 0, 6014, 6015, 7, 9, 0, 0, 6015, 1228, 1, 0, 0, 0, 6016, 6017, 7, 9, 0, 0, 6017, 6018, 7, 22, 0, 0, 6018, 6019, 7, 18, 0, 0, 6019, 6020, 7, 9, 0, 0, 6020, 6021, 7, 16, 0, 0, 6021, 6022, 7, 13, 0, 0, 6022, 1230, 1, 0, 0, 0, 6023, 6024, 7, 16, 0, 0, 6024, 6025, 7, 19, 0, 0, 6025, 6026, 5, 95, 0, 0, 6026, 6027, 7, 5, 0, 0, 6027, 6028, 7, 9, 0, 0, 6028, 6029, 7, 14, 0, 0, 6029, 6030, 7, 17, 0, 0, 6030, 6031, 7, 17, 0, 0, 6031, 1232, 1, 0, 0, 0, 6032, 6033, 7, 16, 0, 0, 6033, 6034, 7, 19, 0, 0, 6034, 6035, 5, 95, 0, 0, 6035, 6036, 7, 20, 0, 0, 6036, 6037, 7, 10, 0, 0, 6037, 6038, 7, 26, 0, 0, 6038, 1234, 1, 0, 0, 0, 6039, 6040, 7, 16, 0, 0, 6040, 6041, 7, 13, 0, 0, 6041, 6042, 7, 5, 0, 0, 6042, 6043, 7, 7, 0, 0, 6043, 6044, 7, 9, 0, 0, 6044, 6045, 7, 6, 0, 0, 6045, 6046, 7, 5, 0, 0, 6046, 6047, 7, 16, 0, 0, 6047, 6048, 7, 10, 0, 0, 6048, 1236, 1, 0, 0, 0, 6049, 6050, 7, 22, 0, 0, 6050, 6051, 7, 7, 0, 0, 6051, 6052, 7, 17, 0, 0, 6052, 6053, 7, 9, 0, 0, 6053, 6054, 7, 16, 0, 0, 6054, 6055, 7, 13, 0, 0, 6055, 1238, 1, 0, 0, 0, 6056, 6057, 7, 5, 0, 0, 6057, 6058, 7, 23, 0, 0, 6058, 6059, 7, 10, 0, 0, 6059, 1240, 1, 0, 0, 0, 6060, 6061, 7, 14, 0, 0, 6061, 6062, 7, 6, 0, 0, 6062, 6063, 7, 19, 0, 0, 6063, 6064, 7, 14, 0, 0, 6064, 6065, 7, 21, 0, 0, 6065, 6066, 5, 95, 0, 0, 6066, 6067, 7, 16, 0, 0, 6067, 6068, 7, 17, 0, 0, 6068, 6069, 7, 15, 0, 0, 6069, 6070, 7, 10, 0, 0, 6070, 6071, 7, 9, 0, 0, 6071, 6072, 7, 16, 0, 0, 6072, 6073, 7, 5, 0, 0, 6073, 6074, 7, 15, 0, 0, 6074, 6075, 7, 24, 0, 0, 6075, 1242, 1, 0, 0, 0, 6076, 6077, 7, 12, 0, 0, 6077, 6078, 7, 5, 0, 0, 6078, 6079, 7, 16, 0, 0, 6079, 6080, 7, 10, 0, 0, 6080, 6081, 5, 95, 0, 0, 6081, 6082, 7, 18, 0, 0, 6082, 6083, 7, 17, 0, 0, 6083, 6084, 7, 7, 0, 0, 6084, 1244, 1, 0, 0, 0, 6085, 6086, 7, 12, 0, 0, 6086, 6087, 7, 5, 0, 0, 6087, 6088, 7, 16, 0, 0, 6088, 6089, 7, 10, 0, 0, 6089, 6090, 5, 95, 0, 0, 6090, 6091, 7, 24, 0, 0, 6091, 6092, 7, 5, 0, 0, 6092, 6093, 7, 13, 0, 0, 6093, 6094, 7, 16, 0, 0, 6094, 1246, 1, 0, 0, 0, 6095, 6096, 7, 12, 0, 0, 6096, 6097, 7, 5, 0, 0, 6097, 6098, 7, 16, 0, 0, 6098, 6099, 7, 10, 0, 0, 6099, 6100, 5, 95, 0, 0, 6100, 6101, 7, 16, 0, 0, 6101, 6102, 7, 13, 0, 0, 6102, 6103, 7, 22, 0, 0, 6103, 6104, 7, 7, 0, 0, 6104, 6105, 7, 14, 0, 0, 6105, 1248, 1, 0, 0, 0, 6106, 6107, 7, 17, 0, 0, 6107, 6108, 7, 9, 0, 0, 6108, 6109, 7, 25, 0, 0, 6109, 6110, 7, 17, 0, 0, 6110, 6111, 7, 7, 0, 0, 6111, 6112, 7, 17, 0, 0, 6112, 6113, 7, 16, 0, 0, 6113, 6114, 7, 10, 0, 0, 6114, 1250, 1, 0, 0, 0, 6115, 6116, 7, 30, 0, 0, 6116, 6117, 7, 22, 0, 0, 6117, 6118, 7, 9, 0, 0, 6118, 6119, 7, 16, 0, 0, 6119, 6120, 7, 17, 0, 0, 6120, 6121, 7, 25, 0, 0, 6121, 6122, 7, 8, 0, 0, 6122, 6123, 5, 95, 0, 0, 6123, 6124, 7, 12, 0, 0, 6124, 6125, 7, 5, 0, 0, 6125, 6126, 7, 8, 0, 0, 6126, 6127, 7, 9, 0, 0, 6127, 1252, 1, 0, 0, 0, 6128, 6129, 7, 30, 0, 0, 6129, 6130, 7, 22, 0, 0, 6130, 6131, 7, 9, 0, 0, 6131, 6132, 7, 16, 0, 0, 6132, 6133, 7, 17, 0, 0, 6133, 6134, 7, 25, 0, 0, 6134, 6135, 7, 8, 0, 0, 6135, 6136, 5, 95, 0, 0, 6136, 6137, 7, 20, 0, 0, 6137, 6138, 7, 19, 0, 0, 6138, 6139, 7, 22, 0, 0, 6139, 6140, 7, 13, 0, 0, 6140, 6141, 7, 9, 0, 0, 6141, 1254, 1, 0, 0, 0, 6142, 6143, 7, 30, 0, 0, 6143, 6144, 7, 22, 0, 0, 6144, 6145, 7, 9, 0, 0, 6145, 6146, 7, 16, 0, 0, 6146, 6147, 7, 17, 0, 0, 6147, 6148, 7, 25, 0, 0, 6148, 6149, 7, 8, 0, 0, 6149, 6150, 5, 95, 0, 0, 6150, 6151, 7, 17, 0, 0, 6151, 6152, 7, 7, 0, 0, 6152, 6153, 7, 16, 0, 0, 6153, 6154, 7, 10, 0, 0, 6154, 6155, 7, 13, 0, 0, 6155, 6156, 7, 27, 0, 0, 6156, 6157, 7, 5, 0, 0, 6157, 6158, 7, 6, 0, 0, 6158, 1256, 1, 0, 0, 0, 6159, 6160, 7, 15, 0, 0, 6160, 6161, 7, 5, 0, 0, 6161, 6162, 7, 21, 0, 0, 6162, 6163, 7, 10, 0, 0, 6163, 6164, 5, 95, 0, 0, 6164, 6165, 7, 12, 0, 0, 6165, 6166, 7, 5, 0, 0, 6166, 6167, 7, 16, 0, 0, 6167, 6168, 7, 10, 0, 0, 6168, 1258, 1, 0, 0, 0, 6169, 6170, 7, 15, 0, 0, 6170, 6171, 7, 5, 0, 0, 6171, 6172, 7, 21, 0, 0, 6172, 6173, 7, 10, 0, 0, 6173, 6174, 5, 95, 0, 0, 6174, 6175, 7, 17, 0, 0, 6175, 6176, 7, 7, 0, 0, 6176, 6177, 7, 16, 0, 0, 6177, 6178, 7, 10, 0, 0, 6178, 6179, 7, 13, 0, 0, 6179, 6180, 7, 27, 0, 0, 6180, 6181, 7, 5, 0, 0, 6181, 6182, 7, 6, 0, 0, 6182, 1260, 1, 0, 0, 0, 6183, 6184, 7, 15, 0, 0, 6184, 6185, 7, 5, 0, 0, 6185, 6186, 7, 21, 0, 0, 6186, 6187, 7, 10, 0, 0, 6187, 6188, 5, 95, 0, 0, 6188, 6189, 7, 16, 0, 0, 6189, 6190, 7, 17, 0, 0, 6190, 6191, 7, 15, 0, 0, 6191, 6192, 7, 10, 0, 0, 6192, 1262, 1, 0, 0, 0, 6193, 6194, 7, 15, 0, 0, 6194, 6195, 7, 5, 0, 0, 6195, 6196, 7, 21, 0, 0, 6196, 6197, 7, 10, 0, 0, 6197, 6198, 5, 95, 0, 0, 6198, 6199, 7, 16, 0, 0, 6199, 6200, 7, 17, 0, 0, 6200, 6201, 7, 15, 0, 0, 6201, 6202, 7, 10, 0, 0, 6202, 6203, 7, 9, 0, 0, 6203, 6204, 7, 16, 0, 0, 6204, 6205, 7, 5, 0, 0, 6205, 6206, 7, 15, 0, 0, 6206, 6207, 7, 24, 0, 0, 6207, 1264, 1, 0, 0, 0, 6208, 6209, 7, 15, 0, 0, 6209, 6210, 7, 5, 0, 0, 6210, 6211, 7, 21, 0, 0, 6211, 6212, 7, 10, 0, 0, 6212, 6213, 5, 95, 0, 0, 6213, 6214, 7, 16, 0, 0, 6214, 6215, 7, 17, 0, 0, 6215, 6216, 7, 15, 0, 0, 6216, 6217, 7, 10, 0, 0, 6217, 6218, 7, 9, 0, 0, 6218, 6219, 7, 16, 0, 0, 6219, 6220, 7, 5, 0, 0, 6220, 6221, 7, 15, 0, 0, 6221, 6222, 7, 24, 0, 0, 6222, 6223, 7, 16, 0, 0, 6223, 6224, 7, 11, 0, 0, 6224, 1266, 1, 0, 0, 0, 6225, 6226, 7, 7, 0, 0, 6226, 6227, 7, 19, 0, 0, 6227, 6228, 7, 29, 0, 0, 6228, 1268, 1, 0, 0, 0, 6229, 6230, 7, 9, 0, 0, 6230, 6231, 7, 16, 0, 0, 6231, 6232, 7, 5, 0, 0, 6232, 6233, 7, 16, 0, 0, 6233, 6234, 7, 10, 0, 0, 6234, 6235, 7, 15, 0, 0, 6235, 6236, 7, 10, 0, 0, 6236, 6237, 7, 7, 0, 0, 6237, 6238, 7, 16, 0, 0, 6238, 6239, 5, 95, 0, 0, 6239, 6240, 7, 16, 0, 0, 6240, 6241, 7, 17, 0, 0, 6241, 6242, 7, 15, 0, 0, 6242, 6243, 7, 10, 0, 0, 6243, 6244, 7, 9, 0, 0, 6244, 6245, 7, 16, 0, 0, 6245, 6246, 7, 5, 0, 0, 6246, 6247, 7, 15, 0, 0, 6247, 6248, 7, 24, 0, 0, 6248, 1270, 1, 0, 0, 0, 6249, 6250, 7, 16, 0, 0, 6250, 6251, 7, 17, 0, 0, 6251, 6252, 7, 15, 0, 0, 6252, 6253, 7, 10, 0, 0, 6253, 6254, 7, 19, 0, 0, 6254, 6255, 7, 25, 0, 0, 6255, 6256, 7, 12, 0, 0, 6256, 6257, 7, 5, 0, 0, 6257, 6258, 7, 8, 0, 0, 6258, 1272, 1, 0, 0, 0, 6259, 6260, 7, 16, 0, 0, 6260, 6261, 7, 13, 0, 0, 6261, 6262, 7, 5, 0, 0, 6262, 6263, 7, 7, 0, 0, 6263, 6264, 7, 9, 0, 0, 6264, 6265, 7, 5, 0, 0, 6265, 6266, 7, 14, 0, 0, 6266, 6267, 7, 16, 0, 0, 6267, 6268, 7, 17, 0, 0, 6268, 6269, 7, 19, 0, 0, 6269, 6270, 7, 7, 0, 0, 6270, 6271, 5, 95, 0, 0, 6271, 6272, 7, 16, 0, 0, 6272, 6273, 7, 17, 0, 0, 6273, 6274, 7, 15, 0, 0, 6274, 6275, 7, 10, 0, 0, 6275, 6276, 7, 9, 0, 0, 6276, 6277, 7, 16, 0, 0, 6277, 6278, 7, 5, 0, 0, 6278, 6279, 7, 15, 0, 0, 6279, 6280, 7, 24, 0, 0, 6280, 1274, 1, 0, 0, 0, 6281, 6282, 7, 16, 0, 0, 6282, 6283, 7, 19, 0, 0, 6283, 6284, 5, 95, 0, 0, 6284, 6285, 7, 16, 0, 0, 6285, 6286, 7, 17, 0, 0, 6286, 6287, 7, 15, 0, 0, 6287, 6288, 7, 10, 0, 0, 6288, 6289, 7, 9, 0, 0, 6289, 6290, 7, 16, 0, 0, 6290, 6291, 7, 5, 0, 0, 6291, 6292, 7, 15, 0, 0, 6292, 6293, 7, 24, 0, 0, 6293, 1276, 1, 0, 0, 0, 6294, 6295, 7, 16, 0, 0, 6295, 6296, 7, 19, 0, 0, 6296, 6297, 5, 95, 0, 0, 6297, 6298, 7, 14, 0, 0, 6298, 6299, 7, 20, 0, 0, 6299, 6300, 7, 5, 0, 0, 6300, 6301, 7, 13, 0, 0, 6301, 1278, 1, 0, 0, 0, 6302, 6303, 7, 16, 0, 0, 6303, 6304, 7, 19, 0, 0, 6304, 6305, 5, 95, 0, 0, 6305, 6306, 7, 12, 0, 0, 6306, 6307, 7, 5, 0, 0, 6307, 6308, 7, 16, 0, 0, 6308, 6309, 7, 10, 0, 0, 6309, 1280, 1, 0, 0, 0, 6310, 6311, 7, 16, 0, 0, 6311, 6312, 7, 19, 0, 0, 6312, 6313, 5, 95, 0, 0, 6313, 6314, 7, 7, 0, 0, 6314, 6315, 7, 22, 0, 0, 6315, 6316, 7, 15, 0, 0, 6316, 6317, 7, 18, 0, 0, 6317, 6318, 7, 10, 0, 0, 6318, 6319, 7, 13, 0, 0, 6319, 1282, 1, 0, 0, 0, 6320, 6324, 3, 1285, 640, 0, 6321, 6323, 3, 1287, 641, 0, 6322, 6321, 1, 0, 0, 0, 6323, 6326, 1, 0, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 1284, 1, 0, 0, 0, 6326, 6324, 1, 0, 0, 0, 6327, 6334, 7, 31, 0, 0, 6328, 6329, 7, 32, 0, 0, 6329, 6334, 4, 640, 6, 0, 6330, 6331, 7, 33, 0, 0, 6331, 6332, 7, 34, 0, 0, 6332, 6334, 4, 640, 7, 0, 6333, 6327, 1, 0, 0, 0, 6333, 6328, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 1286, 1, 0, 0, 0, 6335, 6338, 3, 1289, 642, 0, 6336, 6338, 5, 36, 0, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6336, 1, 0, 0, 0, 6338, 1288, 1, 0, 0, 0, 6339, 6342, 3, 1285, 640, 0, 6340, 6342, 7, 0, 0, 0, 6341, 6339, 1, 0, 0, 0, 6341, 6340, 1, 0, 0, 0, 6342, 1290, 1, 0, 0, 0, 6343, 6344, 3, 1293, 644, 0, 6344, 6345, 5, 34, 0, 0, 6345, 1292, 1, 0, 0, 0, 6346, 6352, 5, 34, 0, 0, 6347, 6348, 5, 34, 0, 0, 6348, 6351, 5, 34, 0, 0, 6349, 6351, 8, 35, 0, 0, 6350, 6347, 1, 0, 0, 0, 6350, 6349, 1, 0, 0, 0, 6351, 6354, 1, 0, 0, 0, 6352, 6350, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 1294, 1, 0, 0, 0, 6354, 6352, 1, 0, 0, 0, 6355, 6356, 3, 1297, 646, 0, 6356, 6357, 5, 34, 0, 0, 6357, 1296, 1, 0, 0, 0, 6358, 6364, 5, 34, 0, 0, 6359, 6360, 5, 34, 0, 0, 6360, 6363, 5, 34, 0, 0, 6361, 6363, 8, 36, 0, 0, 6362, 6359, 1, 0, 0, 0, 6362, 6361, 1, 0, 0, 0, 6363, 6366, 1, 0, 0, 0, 6364, 6362, 1, 0, 0, 0, 6364, 6365, 1, 0, 0, 0, 6365, 1298, 1, 0, 0, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6368, 7, 22, 0, 0, 6368, 6369, 5, 38, 0, 0, 6369, 6370, 3, 1291, 643, 0, 6370, 1300, 1, 0, 0, 0, 6371, 6372, 7, 22, 0, 0, 6372, 6373, 5, 38, 0, 0, 6373, 6374, 3, 1293, 644, 0, 6374, 1302, 1, 0, 0, 0, 6375, 6376, 7, 22, 0, 0, 6376, 6377, 5, 38, 0, 0, 6377, 6378, 3, 1295, 645, 0, 6378, 1304, 1, 0, 0, 0, 6379, 6380, 7, 22, 0, 0, 6380, 6381, 5, 38, 0, 0, 6381, 6382, 3, 1297, 646, 0, 6382, 1306, 1, 0, 0, 0, 6383, 6384, 3, 1309, 652, 0, 6384, 6385, 5, 39, 0, 0, 6385, 1308, 1, 0, 0, 0, 6386, 6392, 5, 39, 0, 0, 6387, 6388, 5, 39, 0, 0, 6388, 6391, 5, 39, 0, 0, 6389, 6391, 8, 37, 0, 0, 6390, 6387, 1, 0, 0, 0, 6390, 6389, 1, 0, 0, 0, 6391, 6394, 1, 0, 0, 0, 6392, 6390, 1, 0, 0, 0, 6392, 6393, 1, 0, 0, 0, 6393, 1310, 1, 0, 0, 0, 6394, 6392, 1, 0, 0, 0, 6395, 6396, 7, 10, 0, 0, 6396, 6397, 5, 39, 0, 0, 6397, 6398, 1, 0, 0, 0, 6398, 6399, 6, 653, 2, 0, 6399, 6400, 6, 653, 3, 0, 6400, 1312, 1, 0, 0, 0, 6401, 6402, 3, 1315, 655, 0, 6402, 6403, 5, 39, 0, 0, 6403, 1314, 1, 0, 0, 0, 6404, 6405, 7, 22, 0, 0, 6405, 6406, 5, 38, 0, 0, 6406, 6407, 3, 1309, 652, 0, 6407, 1316, 1, 0, 0, 0, 6408, 6410, 5, 36, 0, 0, 6409, 6411, 3, 1319, 657, 0, 6410, 6409, 1, 0, 0, 0, 6410, 6411, 1, 0, 0, 0, 6411, 6412, 1, 0, 0, 0, 6412, 6413, 5, 36, 0, 0, 6413, 6414, 6, 656, 4, 0, 6414, 6415, 1, 0, 0, 0, 6415, 6416, 6, 656, 5, 0, 6416, 1318, 1, 0, 0, 0, 6417, 6421, 3, 1285, 640, 0, 6418, 6420, 3, 1289, 642, 0, 6419, 6418, 1, 0, 0, 0, 6420, 6423, 1, 0, 0, 0, 6421, 6419, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 1320, 1, 0, 0, 0, 6423, 6421, 1, 0, 0, 0, 6424, 6425, 3, 1323, 659, 0, 6425, 6426, 5, 39, 0, 0, 6426, 1322, 1, 0, 0, 0, 6427, 6428, 7, 18, 0, 0, 6428, 6432, 5, 39, 0, 0, 6429, 6431, 7, 38, 0, 0, 6430, 6429, 1, 0, 0, 0, 6431, 6434, 1, 0, 0, 0, 6432, 6430, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 1324, 1, 0, 0, 0, 6434, 6432, 1, 0, 0, 0, 6435, 6436, 3, 1327, 661, 0, 6436, 6437, 5, 39, 0, 0, 6437, 1326, 1, 0, 0, 0, 6438, 6439, 7, 18, 0, 0, 6439, 6440, 3, 1309, 652, 0, 6440, 1328, 1, 0, 0, 0, 6441, 6442, 3, 1331, 663, 0, 6442, 6443, 5, 39, 0, 0, 6443, 1330, 1, 0, 0, 0, 6444, 6445, 7, 26, 0, 0, 6445, 6449, 5, 39, 0, 0, 6446, 6448, 7, 39, 0, 0, 6447, 6446, 1, 0, 0, 0, 6448, 6451, 1, 0, 0, 0, 6449, 6447, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 1332, 1, 0, 0, 0, 6451, 6449, 1, 0, 0, 0, 6452, 6453, 3, 1335, 665, 0, 6453, 6454, 5, 39, 0, 0, 6454, 1334, 1, 0, 0, 0, 6455, 6456, 7, 26, 0, 0, 6456, 6457, 3, 1309, 652, 0, 6457, 1336, 1, 0, 0, 0, 6458, 6459, 3, 1343, 669, 0, 6459, 1338, 1, 0, 0, 0, 6460, 6461, 3, 1343, 669, 0, 6461, 6462, 5, 46, 0, 0, 6462, 6463, 5, 46, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6465, 6, 667, 6, 0, 6465, 1340, 1, 0, 0, 0, 6466, 6467, 3, 1343, 669, 0, 6467, 6469, 5, 46, 0, 0, 6468, 6470, 3, 1343, 669, 0, 6469, 6468, 1, 0, 0, 0, 6469, 6470, 1, 0, 0, 0, 6470, 6476, 1, 0, 0, 0, 6471, 6473, 7, 10, 0, 0, 6472, 6474, 7, 1, 0, 0, 6473, 6472, 1, 0, 0, 0, 6473, 6474, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6477, 3, 1343, 669, 0, 6476, 6471, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6495, 1, 0, 0, 0, 6478, 6479, 5, 46, 0, 0, 6479, 6485, 3, 1343, 669, 0, 6480, 6482, 7, 10, 0, 0, 6481, 6483, 7, 1, 0, 0, 6482, 6481, 1, 0, 0, 0, 6482, 6483, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 6486, 3, 1343, 669, 0, 6485, 6480, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 6495, 1, 0, 0, 0, 6487, 6488, 3, 1343, 669, 0, 6488, 6490, 7, 10, 0, 0, 6489, 6491, 7, 1, 0, 0, 6490, 6489, 1, 0, 0, 0, 6490, 6491, 1, 0, 0, 0, 6491, 6492, 1, 0, 0, 0, 6492, 6493, 3, 1343, 669, 0, 6493, 6495, 1, 0, 0, 0, 6494, 6466, 1, 0, 0, 0, 6494, 6478, 1, 0, 0, 0, 6494, 6487, 1, 0, 0, 0, 6495, 1342, 1, 0, 0, 0, 6496, 6498, 7, 0, 0, 0, 6497, 6496, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6497, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 1344, 1, 0, 0, 0, 6501, 6502, 5, 58, 0, 0, 6502, 6506, 7, 40, 0, 0, 6503, 6505, 7, 41, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6508, 1, 0, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6507, 1, 0, 0, 0, 6507, 1346, 1, 0, 0, 0, 6508, 6506, 1, 0, 0, 0, 6509, 6510, 5, 58, 0, 0, 6510, 6511, 5, 34, 0, 0, 6511, 6519, 1, 0, 0, 0, 6512, 6513, 5, 92, 0, 0, 6513, 6518, 9, 0, 0, 0, 6514, 6515, 5, 34, 0, 0, 6515, 6518, 5, 34, 0, 0, 6516, 6518, 8, 42, 0, 0, 6517, 6512, 1, 0, 0, 0, 6517, 6514, 1, 0, 0, 0, 6517, 6516, 1, 0, 0, 0, 6518, 6521, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6519, 6520, 1, 0, 0, 0, 6520, 6522, 1, 0, 0, 0, 6521, 6519, 1, 0, 0, 0, 6522, 6523, 5, 34, 0, 0, 6523, 1348, 1, 0, 0, 0, 6524, 6526, 7, 43, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6525, 1, 0, 0, 0, 6527, 6528, 1, 0, 0, 0, 6528, 6529, 1, 0, 0, 0, 6529, 6530, 6, 672, 7, 0, 6530, 1350, 1, 0, 0, 0, 6531, 6533, 5, 13, 0, 0, 6532, 6534, 5, 10, 0, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6537, 1, 0, 0, 0, 6535, 6537, 5, 10, 0, 0, 6536, 6531, 1, 0, 0, 0, 6536, 6535, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6539, 6, 673, 7, 0, 6539, 1352, 1, 0, 0, 0, 6540, 6541, 5, 45, 0, 0, 6541, 6542, 5, 45, 0, 0, 6542, 6546, 1, 0, 0, 0, 6543, 6545, 8, 44, 0, 0, 6544, 6543, 1, 0, 0, 0, 6545, 6548, 1, 0, 0, 0, 6546, 6544, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6549, 1, 0, 0, 0, 6548, 6546, 1, 0, 0, 0, 6549, 6550, 6, 674, 7, 0, 6550, 1354, 1, 0, 0, 0, 6551, 6552, 5, 47, 0, 0, 6552, 6553, 5, 42, 0, 0, 6553, 6576, 1, 0, 0, 0, 6554, 6556, 5, 47, 0, 0, 6555, 6554, 1, 0, 0, 0, 6556, 6559, 1, 0, 0, 0, 6557, 6555, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6575, 3, 1355, 675, 0, 6561, 6575, 8, 45, 0, 0, 6562, 6564, 5, 47, 0, 0, 6563, 6562, 1, 0, 0, 0, 6564, 6565, 1, 0, 0, 0, 6565, 6563, 1, 0, 0, 0, 6565, 6566, 1, 0, 0, 0, 6566, 6567, 1, 0, 0, 0, 6567, 6575, 8, 45, 0, 0, 6568, 6570, 5, 42, 0, 0, 6569, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6569, 1, 0, 0, 0, 6571, 6572, 1, 0, 0, 0, 6572, 6573, 1, 0, 0, 0, 6573, 6575, 8, 45, 0, 0, 6574, 6557, 1, 0, 0, 0, 6574, 6561, 1, 0, 0, 0, 6574, 6563, 1, 0, 0, 0, 6574, 6569, 1, 0, 0, 0, 6575, 6578, 1, 0, 0, 0, 6576, 6574, 1, 0, 0, 0, 6576, 6577, 1, 0, 0, 0, 6577, 6582, 1, 0, 0, 0, 6578, 6576, 1, 0, 0, 0, 6579, 6581, 5, 42, 0, 0, 6580, 6579, 1, 0, 0, 0, 6581, 6584, 1, 0, 0, 0, 6582, 6580, 1, 0, 0, 0, 6582, 6583, 1, 0, 0, 0, 6583, 6585, 1, 0, 0, 0, 6584, 6582, 1, 0, 0, 0, 6585, 6586, 5, 42, 0, 0, 6586, 6587, 5, 47, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 6589, 6, 675, 7, 0, 6589, 1356, 1, 0, 0, 0, 6590, 6591, 5, 47, 0, 0, 6591, 6592, 5, 42, 0, 0, 6592, 6617, 1, 0, 0, 0, 6593, 6595, 5, 47, 0, 0, 6594, 6593, 1, 0, 0, 0, 6595, 6598, 1, 0, 0, 0, 6596, 6594, 1, 0, 0, 0, 6596, 6597, 1, 0, 0, 0, 6597, 6599, 1, 0, 0, 0, 6598, 6596, 1, 0, 0, 0, 6599, 6616, 3, 1355, 675, 0, 6600, 6616, 8, 45, 0, 0, 6601, 6603, 5, 47, 0, 0, 6602, 6601, 1, 0, 0, 0, 6603, 6604, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6614, 8, 45, 0, 0, 6607, 6609, 5, 42, 0, 0, 6608, 6607, 1, 0, 0, 0, 6609, 6610, 1, 0, 0, 0, 6610, 6608, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6614, 8, 45, 0, 0, 6613, 6602, 1, 0, 0, 0, 6613, 6608, 1, 0, 0, 0, 6614, 6616, 1, 0, 0, 0, 6615, 6596, 1, 0, 0, 0, 6615, 6600, 1, 0, 0, 0, 6615, 6613, 1, 0, 0, 0, 6616, 6619, 1, 0, 0, 0, 6617, 6615, 1, 0, 0, 0, 6617, 6618, 1, 0, 0, 0, 6618, 6637, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6622, 5, 47, 0, 0, 6621, 6620, 1, 0, 0, 0, 6622, 6623, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6623, 6624, 1, 0, 0, 0, 6624, 6638, 1, 0, 0, 0, 6625, 6627, 5, 42, 0, 0, 6626, 6625, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6626, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6638, 1, 0, 0, 0, 6630, 6632, 5, 47, 0, 0, 6631, 6630, 1, 0, 0, 0, 6632, 6635, 1, 0, 0, 0, 6633, 6631, 1, 0, 0, 0, 6633, 6634, 1, 0, 0, 0, 6634, 6636, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6638, 3, 1357, 676, 0, 6637, 6621, 1, 0, 0, 0, 6637, 6626, 1, 0, 0, 0, 6637, 6633, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6640, 6, 676, 8, 0, 6640, 1358, 1, 0, 0, 0, 6641, 6653, 5, 92, 0, 0, 6642, 6652, 8, 46, 0, 0, 6643, 6647, 5, 34, 0, 0, 6644, 6646, 8, 47, 0, 0, 6645, 6644, 1, 0, 0, 0, 6646, 6649, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6650, 1, 0, 0, 0, 6649, 6647, 1, 0, 0, 0, 6650, 6652, 5, 34, 0, 0, 6651, 6642, 1, 0, 0, 0, 6651, 6643, 1, 0, 0, 0, 6652, 6655, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6663, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6656, 6660, 5, 34, 0, 0, 6657, 6659, 8, 47, 0, 0, 6658, 6657, 1, 0, 0, 0, 6659, 6662, 1, 0, 0, 0, 6660, 6658, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6664, 1, 0, 0, 0, 6662, 6660, 1, 0, 0, 0, 6663, 6656, 1, 0, 0, 0, 6663, 6664, 1, 0, 0, 0, 6664, 1360, 1, 0, 0, 0, 6665, 6666, 5, 92, 0, 0, 6666, 6667, 5, 92, 0, 0, 6667, 1362, 1, 0, 0, 0, 6668, 6669, 9, 0, 0, 0, 6669, 1364, 1, 0, 0, 0, 6670, 6671, 3, 1369, 682, 0, 6671, 6672, 5, 39, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 6, 680, 9, 0, 6674, 1366, 1, 0, 0, 0, 6675, 6677, 3, 1369, 682, 0, 6676, 6678, 5, 92, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6680, 5, 0, 0, 1, 6680, 1368, 1, 0, 0, 0, 6681, 6682, 5, 39, 0, 0, 6682, 6705, 5, 39, 0, 0, 6683, 6701, 5, 92, 0, 0, 6684, 6685, 5, 120, 0, 0, 6685, 6702, 7, 39, 0, 0, 6686, 6687, 5, 117, 0, 0, 6687, 6688, 7, 39, 0, 0, 6688, 6689, 7, 39, 0, 0, 6689, 6690, 7, 39, 0, 0, 6690, 6702, 7, 39, 0, 0, 6691, 6692, 5, 85, 0, 0, 6692, 6693, 7, 39, 0, 0, 6693, 6694, 7, 39, 0, 0, 6694, 6695, 7, 39, 0, 0, 6695, 6696, 7, 39, 0, 0, 6696, 6697, 7, 39, 0, 0, 6697, 6698, 7, 39, 0, 0, 6698, 6699, 7, 39, 0, 0, 6699, 6702, 7, 39, 0, 0, 6700, 6702, 8, 48, 0, 0, 6701, 6684, 1, 0, 0, 0, 6701, 6686, 1, 0, 0, 0, 6701, 6691, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 6705, 1, 0, 0, 0, 6703, 6705, 8, 49, 0, 0, 6704, 6681, 1, 0, 0, 0, 6704, 6683, 1, 0, 0, 0, 6704, 6703, 1, 0, 0, 0, 6705, 6708, 1, 0, 0, 0, 6706, 6704, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 1370, 1, 0, 0, 0, 6708, 6706, 1, 0, 0, 0, 6709, 6710, 3, 1375, 685, 0, 6710, 6711, 5, 39, 0, 0, 6711, 6712, 1, 0, 0, 0, 6712, 6713, 6, 683, 9, 0, 6713, 1372, 1, 0, 0, 0, 6714, 6716, 3, 1375, 685, 0, 6715, 6717, 5, 92, 0, 0, 6716, 6715, 1, 0, 0, 0, 6716, 6717, 1, 0, 0, 0, 6717, 6718, 1, 0, 0, 0, 6718, 6719, 5, 0, 0, 1, 6719, 1374, 1, 0, 0, 0, 6720, 6721, 5, 39, 0, 0, 6721, 6726, 5, 39, 0, 0, 6722, 6723, 5, 92, 0, 0, 6723, 6726, 9, 0, 0, 0, 6724, 6726, 8, 49, 0, 0, 6725, 6720, 1, 0, 0, 0, 6725, 6722, 1, 0, 0, 0, 6725, 6724, 1, 0, 0, 0, 6726, 6729, 1, 0, 0, 0, 6727, 6725, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 1376, 1, 0, 0, 0, 6729, 6727, 1, 0, 0, 0, 6730, 6731, 3, 1349, 672, 0, 6731, 6732, 1, 0, 0, 0, 6732, 6733, 6, 686, 10, 0, 6733, 6734, 6, 686, 7, 0, 6734, 1378, 1, 0, 0, 0, 6735, 6736, 3, 1351, 673, 0, 6736, 6737, 1, 0, 0, 0, 6737, 6738, 6, 687, 11, 0, 6738, 6739, 6, 687, 7, 0, 6739, 6740, 6, 687, 12, 0, 6740, 1380, 1, 0, 0, 0, 6741, 6742, 6, 688, 13, 0, 6742, 6743, 1, 0, 0, 0, 6743, 6744, 6, 688, 14, 0, 6744, 6745, 6, 688, 15, 0, 6745, 1382, 1, 0, 0, 0, 6746, 6747, 3, 1349, 672, 0, 6747, 6748, 1, 0, 0, 0, 6748, 6749, 6, 689, 10, 0, 6749, 6750, 6, 689, 7, 0, 6750, 1384, 1, 0, 0, 0, 6751, 6752, 3, 1351, 673, 0, 6752, 6753, 1, 0, 0, 0, 6753, 6754, 6, 690, 11, 0, 6754, 6755, 6, 690, 7, 0, 6755, 1386, 1, 0, 0, 0, 6756, 6757, 5, 39, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6759, 6, 691, 2, 0, 6759, 6760, 6, 691, 16, 0, 6760, 1388, 1, 0, 0, 0, 6761, 6762, 6, 692, 17, 0, 6762, 6763, 1, 0, 0, 0, 6763, 6764, 6, 692, 14, 0, 6764, 6765, 6, 692, 15, 0, 6765, 1390, 1, 0, 0, 0, 6766, 6768, 8, 50, 0, 0, 6767, 6766, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6767, 1, 0, 0, 0, 6769, 6770, 1, 0, 0, 0, 6770, 6779, 1, 0, 0, 0, 6771, 6775, 5, 36, 0, 0, 6772, 6774, 8, 50, 0, 0, 6773, 6772, 1, 0, 0, 0, 6774, 6777, 1, 0, 0, 0, 6775, 6773, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6779, 1, 0, 0, 0, 6777, 6775, 1, 0, 0, 0, 6778, 6767, 1, 0, 0, 0, 6778, 6771, 1, 0, 0, 0, 6779, 1392, 1, 0, 0, 0, 6780, 6782, 5, 36, 0, 0, 6781, 6783, 3, 1319, 657, 0, 6782, 6781, 1, 0, 0, 0, 6782, 6783, 1, 0, 0, 0, 6783, 6784, 1, 0, 0, 0, 6784, 6785, 5, 36, 0, 0, 6785, 6786, 1, 0, 0, 0, 6786, 6787, 4, 694, 8, 0, 6787, 6788, 6, 694, 18, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6790, 6, 694, 15, 0, 6790, 1394, 1, 0, 0, 0, 78, 0, 1, 2, 3, 4, 1462, 1468, 1470, 1475, 1479, 1481, 1484, 1493, 1495, 1500, 1505, 1507, 6324, 6333, 6337, 6341, 6350, 6352, 6362, 6364, 6390, 6392, 6410, 6421, 6432, 6449, 6469, 6473, 6476, 6482, 6485, 6490, 6494, 6499, 6506, 6517, 6519, 6527, 6533, 6536, 6546, 6557, 6565, 6571, 6574, 6576, 6582, 6596, 6604, 6610, 6613, 6615, 6617, 6623, 6628, 6633, 6637, 6647, 6651, 6653, 6660, 6663, 6677, 6701, 6704, 6706, 6716, 6725, 6727, 6769, 6775, 6778, 6782, 19, 1, 28, 0, 7, 29, 0, 3, 0, 0, 5, 1, 0, 1, 656, 1, 5, 4, 0, 1, 667, 2, 0, 1, 0, 1, 676, 3, 2, 2, 0, 7, 663, 0, 7, 664, 0, 2, 3, 0, 1, 688, 4, 6, 0, 0, 4, 0, 0, 2, 1, 0, 1, 692, 5, 1, 694, 6] \ No newline at end of file diff --git a/antlr4_postgresql/PostgreSQLLexer.py b/antlr4_postgresql/PostgreSQLLexer.py deleted file mode 100644 index 04f6899..0000000 --- a/antlr4_postgresql/PostgreSQLLexer.py +++ /dev/null @@ -1,3840 +0,0 @@ -# Generated from PostgreSQLLexer.g4 by ANTLR 4.13.2 -from antlr4 import * -from io import StringIO -import sys -if sys.version_info[1] > 5: - from typing import TextIO -else: - from typing.io import TextIO - - -def serializedATN(): - return [ - 4,0,679,6791,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2, - 3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10, - 2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17, - 7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23, - 2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30, - 7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36, - 2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43, - 7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49, - 2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56, - 7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62, - 2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69, - 7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75, - 2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82, - 7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88, - 2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95, - 7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7, - 101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106, - 2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112, - 7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117, - 2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123, - 7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128, - 2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134, - 7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139, - 2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145, - 7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150, - 2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156, - 7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161, - 2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167, - 7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172, - 2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178, - 7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183, - 2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189, - 7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194, - 2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200, - 7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205, - 2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211, - 7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216, - 2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222, - 7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227, - 2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233, - 7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238, - 2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244, - 7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249, - 2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255, - 7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260, - 2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266, - 7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271, - 2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277, - 7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282, - 2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288, - 7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293, - 2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299, - 7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304, - 2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310, - 7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315, - 2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321, - 7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326, - 2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332, - 7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337, - 2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343, - 7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348, - 2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354, - 7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359, - 2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365, - 7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370, - 2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376, - 7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381, - 2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387, - 7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392, - 2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398, - 7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403, - 2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409, - 7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414, - 2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420, - 7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425, - 2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431, - 7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436, - 2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442, - 7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447, - 2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453, - 7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458, - 2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464, - 7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469, - 2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475, - 7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480, - 2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486, - 7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491, - 2,492,7,492,2,493,7,493,2,494,7,494,2,495,7,495,2,496,7,496,2,497, - 7,497,2,498,7,498,2,499,7,499,2,500,7,500,2,501,7,501,2,502,7,502, - 2,503,7,503,2,504,7,504,2,505,7,505,2,506,7,506,2,507,7,507,2,508, - 7,508,2,509,7,509,2,510,7,510,2,511,7,511,2,512,7,512,2,513,7,513, - 2,514,7,514,2,515,7,515,2,516,7,516,2,517,7,517,2,518,7,518,2,519, - 7,519,2,520,7,520,2,521,7,521,2,522,7,522,2,523,7,523,2,524,7,524, - 2,525,7,525,2,526,7,526,2,527,7,527,2,528,7,528,2,529,7,529,2,530, - 7,530,2,531,7,531,2,532,7,532,2,533,7,533,2,534,7,534,2,535,7,535, - 2,536,7,536,2,537,7,537,2,538,7,538,2,539,7,539,2,540,7,540,2,541, - 7,541,2,542,7,542,2,543,7,543,2,544,7,544,2,545,7,545,2,546,7,546, - 2,547,7,547,2,548,7,548,2,549,7,549,2,550,7,550,2,551,7,551,2,552, - 7,552,2,553,7,553,2,554,7,554,2,555,7,555,2,556,7,556,2,557,7,557, - 2,558,7,558,2,559,7,559,2,560,7,560,2,561,7,561,2,562,7,562,2,563, - 7,563,2,564,7,564,2,565,7,565,2,566,7,566,2,567,7,567,2,568,7,568, - 2,569,7,569,2,570,7,570,2,571,7,571,2,572,7,572,2,573,7,573,2,574, - 7,574,2,575,7,575,2,576,7,576,2,577,7,577,2,578,7,578,2,579,7,579, - 2,580,7,580,2,581,7,581,2,582,7,582,2,583,7,583,2,584,7,584,2,585, - 7,585,2,586,7,586,2,587,7,587,2,588,7,588,2,589,7,589,2,590,7,590, - 2,591,7,591,2,592,7,592,2,593,7,593,2,594,7,594,2,595,7,595,2,596, - 7,596,2,597,7,597,2,598,7,598,2,599,7,599,2,600,7,600,2,601,7,601, - 2,602,7,602,2,603,7,603,2,604,7,604,2,605,7,605,2,606,7,606,2,607, - 7,607,2,608,7,608,2,609,7,609,2,610,7,610,2,611,7,611,2,612,7,612, - 2,613,7,613,2,614,7,614,2,615,7,615,2,616,7,616,2,617,7,617,2,618, - 7,618,2,619,7,619,2,620,7,620,2,621,7,621,2,622,7,622,2,623,7,623, - 2,624,7,624,2,625,7,625,2,626,7,626,2,627,7,627,2,628,7,628,2,629, - 7,629,2,630,7,630,2,631,7,631,2,632,7,632,2,633,7,633,2,634,7,634, - 2,635,7,635,2,636,7,636,2,637,7,637,2,638,7,638,2,639,7,639,2,640, - 7,640,2,641,7,641,2,642,7,642,2,643,7,643,2,644,7,644,2,645,7,645, - 2,646,7,646,2,647,7,647,2,648,7,648,2,649,7,649,2,650,7,650,2,651, - 7,651,2,652,7,652,2,653,7,653,2,654,7,654,2,655,7,655,2,656,7,656, - 2,657,7,657,2,658,7,658,2,659,7,659,2,660,7,660,2,661,7,661,2,662, - 7,662,2,663,7,663,2,664,7,664,2,665,7,665,2,666,7,666,2,667,7,667, - 2,668,7,668,2,669,7,669,2,670,7,670,2,671,7,671,2,672,7,672,2,673, - 7,673,2,674,7,674,2,675,7,675,2,676,7,676,2,677,7,677,2,678,7,678, - 2,679,7,679,2,680,7,680,2,681,7,681,2,682,7,682,2,683,7,683,2,684, - 7,684,2,685,7,685,2,686,7,686,2,687,7,687,2,688,7,688,2,689,7,689, - 2,690,7,690,2,691,7,691,2,692,7,692,2,693,7,693,2,694,7,694,1,0, - 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8, - 1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1, - 15,1,15,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1, - 20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1, - 24,1,24,1,25,1,25,1,25,1,26,1,26,1,27,1,27,4,27,1461,8,27,11,27, - 12,27,1462,1,28,1,28,1,28,1,28,4,28,1469,8,28,11,28,12,28,1470,1, - 28,1,28,1,28,3,28,1476,8,28,1,28,1,28,4,28,1480,8,28,11,28,12,28, - 1481,1,28,3,28,1485,8,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,5,29, - 1494,8,29,10,29,12,29,1497,9,29,1,29,1,29,3,29,1501,8,29,1,29,1, - 29,1,29,4,29,1506,8,29,11,29,12,29,1507,1,29,1,29,1,30,1,30,1,31, - 1,31,1,32,1,32,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34, - 1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36, - 1,36,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39, - 1,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41, - 1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43, - 1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47, - 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49, - 1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50, - 1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51, - 1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, - 1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53, - 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54, - 1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54, - 1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55, - 1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57, - 1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,59,1,59, - 1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,61, - 1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63, - 1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,66, - 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68, - 1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72, - 1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73, - 1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75, - 1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77, - 1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78, - 1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79, - 1,79,1,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,1,82, - 1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84, - 1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87, - 1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89, - 1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90, - 1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91, - 1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92, - 1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94, - 1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96, - 1,96,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98, - 1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,101, - 1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102, - 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104, - 1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,106,1,106, - 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107, - 1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110, - 1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111, - 1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112, - 1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113, - 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114, - 1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115, - 1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117, - 1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122, - 1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125, - 1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127, - 1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130, - 1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131, - 1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136, - 1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138, - 1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, - 1,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141, - 1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143, - 1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144, - 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,146, - 1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147, - 1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148, - 1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150, - 1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152, - 1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,153,1,153, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155, - 1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156, - 1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, - 1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158, - 1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159, - 1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161, - 1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165, - 1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166, - 1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167, - 1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,168,1,168,1,168, - 1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169, - 1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170, - 1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,173,1,173, - 1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175, - 1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,176,1,177,1,177, - 1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180, - 1,180,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181, - 1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184, - 1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185, - 1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,186, - 1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187, - 1,187,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188,1,188, - 1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,190,1,190, - 1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191, - 1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194, - 1,194,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196, - 1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197, - 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199, - 1,199,1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200, - 1,201,1,201,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202, - 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,203, - 1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204,1,204, - 1,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206, - 1,206,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,207, - 1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208, - 1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,210, - 1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211, - 1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,213, - 1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214, - 1,214,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215,1,215,1,215, - 1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219,1,219,1,219, - 1,219,1,220,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221, - 1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223, - 1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226, - 1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227, - 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228, - 1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229, - 1,229,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231, - 1,231,1,231,1,231,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232, - 1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233,1,233,1,233,1,233, - 1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234, - 1,234,1,235,1,235,1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236, - 1,236,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237, - 1,237,1,237,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238, - 1,238,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240,1,240, - 1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242, - 1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,244,1,244, - 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245, - 1,245,1,245,1,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,247, - 1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,248,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250, - 1,250,1,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,251,1,252, - 1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,253, - 1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254, - 1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255, - 1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,257,1,257,1,257, - 1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260, - 1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262, - 1,262,1,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264, - 1,264,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,266,1,266, - 1,266,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,268,1,268,1,268, - 1,268,1,268,1,268,1,268,1,269,1,269,1,269,1,269,1,269,1,269,1,270, - 1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,272,1,272, - 1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274, - 1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275, - 1,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,277,1,277, - 1,277,1,277,1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,279, - 1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280, - 1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283, - 1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,283,1,284,1,284,1,284, - 1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,285, - 1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,287, - 1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,287,1,288,1,288,1,288, - 1,288,1,288,1,288,1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289, - 1,289,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290,1,290, - 1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291, - 1,291,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292, - 1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294,1,294,1,294, - 1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,1,296,1,296, - 1,296,1,296,1,296,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297, - 1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299, - 1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300, - 1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302, - 1,302,1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303, - 1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304,1,304,1,304,1,304, - 1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,306,1,306,1,306, - 1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307, - 1,307,1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308, - 1,308,1,308,1,309,1,309,1,309,1,309,1,309,1,309,1,310,1,310,1,310, - 1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,311,1,311,1,311,1,311, - 1,311,1,311,1,311,1,312,1,312,1,312,1,312,1,312,1,312,1,312,1,312, - 1,313,1,313,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314, - 1,314,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,315,1,316, - 1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,1,318, - 1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,318,1,319,1,319,1,319, - 1,319,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320,1,320,1,320, - 1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322, - 1,322,1,322,1,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323, - 1,323,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,325, - 1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,326,1,326, - 1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326,1,326, - 1,327,1,327,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,1,328, - 1,328,1,328,1,328,1,328,1,329,1,329,1,329,1,329,1,330,1,330,1,330, - 1,330,1,330,1,330,1,331,1,331,1,331,1,331,1,331,1,332,1,332,1,332, - 1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,333,1,333,1,333,1,333, - 1,333,1,333,1,334,1,334,1,334,1,334,1,334,1,334,1,334,1,335,1,335, - 1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,335,1,336,1,336, - 1,336,1,336,1,336,1,336,1,337,1,337,1,337,1,337,1,337,1,337,1,337, - 1,337,1,337,1,337,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338, - 1,338,1,338,1,338,1,339,1,339,1,339,1,339,1,339,1,339,1,340,1,340, - 1,340,1,340,1,340,1,340,1,340,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,342,1,342,1,342,1,342,1,342,1,342,1,342,1,343,1,343, - 1,343,1,343,1,343,1,343,1,344,1,344,1,344,1,344,1,344,1,344,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,346,1,346,1,346,1,346,1,346, - 1,346,1,346,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347,1,347, - 1,347,1,347,1,348,1,348,1,348,1,348,1,348,1,349,1,349,1,349,1,349, - 1,349,1,349,1,349,1,349,1,349,1,350,1,350,1,350,1,350,1,350,1,350, - 1,350,1,350,1,350,1,350,1,351,1,351,1,351,1,351,1,351,1,352,1,352, - 1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,353, - 1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,354,1,354,1,354,1,354, - 1,354,1,354,1,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355,1,355, - 1,355,1,355,1,356,1,356,1,356,1,356,1,356,1,357,1,357,1,357,1,357, - 1,357,1,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358,1,358, - 1,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359,1,359, - 1,359,1,359,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360, - 1,360,1,360,1,360,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,363,1,363, - 1,363,1,363,1,363,1,363,1,363,1,363,1,363,1,364,1,364,1,364,1,364, - 1,364,1,364,1,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,367,1,367,1,367,1,367,1,367,1,367, - 1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,368,1,369,1,369, - 1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,369,1,370,1,370,1,370, - 1,370,1,370,1,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371, - 1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,373,1,373,1,373,1,373, - 1,373,1,373,1,373,1,373,1,373,1,374,1,374,1,374,1,374,1,374,1,374, - 1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375,1,375,1,375,1,375, - 1,375,1,375,1,376,1,376,1,376,1,376,1,376,1,377,1,377,1,377,1,377, - 1,377,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,378,1,378,1,379, - 1,379,1,379,1,379,1,380,1,380,1,380,1,380,1,380,1,381,1,381,1,381, - 1,381,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1,383,1,383,1,383, - 1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,384,1,385, - 1,385,1,385,1,385,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, - 1,387,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,388,1,388, - 1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,389,1,389,1,389, - 1,389,1,389,1,390,1,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391, - 1,391,1,391,1,391,1,392,1,392,1,392,1,392,1,392,1,392,1,392,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,394,1,394,1,394,1,394, - 1,394,1,394,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,395,1,395, - 1,396,1,396,1,396,1,396,1,396,1,396,1,397,1,397,1,397,1,397,1,398, - 1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,399,1,399,1,399,1,399, - 1,399,1,399,1,399,1,399,1,399,1,400,1,400,1,400,1,400,1,400,1,400, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,402,1,402, - 1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,403,1,403,1,404,1,404, - 1,404,1,404,1,404,1,404,1,404,1,405,1,405,1,405,1,405,1,405,1,405, - 1,405,1,405,1,406,1,406,1,406,1,406,1,406,1,406,1,406,1,406,1,407, - 1,407,1,407,1,407,1,407,1,407,1,407,1,407,1,407,1,408,1,408,1,408, - 1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,409,1,409,1,409,1,409, - 1,409,1,410,1,410,1,410,1,410,1,411,1,411,1,411,1,411,1,411,1,411, - 1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,412,1,413,1,413, - 1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,414,1,414,1,414, - 1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, - 1,415,1,416,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417, - 1,417,1,418,1,418,1,418,1,418,1,418,1,418,1,418,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,420,1,420,1,420,1,420,1,420,1,420, - 1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,420,1,421,1,421,1,421, - 1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422, - 1,422,1,422,1,422,1,422,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424, - 1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424, - 1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,425,1,425,1,425,1,425, - 1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425, - 1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425,1,425, - 1,425,1,426,1,426,1,426,1,426,1,426,1,426,1,427,1,427,1,427,1,427, - 1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,427,1,428,1,428, - 1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,428,1,429,1,429,1,429, - 1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,429,1,430,1,430,1,430, - 1,430,1,430,1,430,1,430,1,430,1,430,1,430,1,431,1,431,1,431,1,431, - 1,431,1,431,1,431,1,431,1,431,1,431,1,432,1,432,1,432,1,432,1,432, - 1,432,1,432,1,432,1,432,1,433,1,433,1,433,1,433,1,433,1,433,1,434, - 1,434,1,434,1,434,1,434,1,434,1,434,1,434,1,435,1,435,1,435,1,435, - 1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,435,1,436,1,436, - 1,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437, - 1,438,1,438,1,438,1,438,1,438,1,438,1,438,1,439,1,439,1,439,1,439, - 1,439,1,439,1,439,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440, - 1,440,1,440,1,440,1,441,1,441,1,441,1,441,1,441,1,441,1,441,1,441, - 1,441,1,441,1,442,1,442,1,442,1,442,1,442,1,442,1,442,1,443,1,443, - 1,443,1,443,1,443,1,443,1,443,1,444,1,444,1,444,1,444,1,444,1,444, - 1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,446, - 1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,446,1,447,1,447, - 1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,448, - 1,448,1,449,1,449,1,449,1,449,1,449,1,449,1,449,1,450,1,450,1,450, - 1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,451,1,451, - 1,451,1,451,1,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453, - 1,453,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454, - 1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,455,1,455, - 1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,457,1,457,1,457, - 1,457,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,459, - 1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460, - 1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,461,1,461,1,461,1,461, - 1,461,1,461,1,462,1,462,1,462,1,462,1,462,1,462,1,462,1,462,1,463, - 1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,463,1,464,1,464,1,464, - 1,464,1,465,1,465,1,465,1,465,1,465,1,465,1,465,1,465,1,466,1,466, - 1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,466,1,467,1,467, - 1,467,1,467,1,467,1,467,1,467,1,467,1,467,1,468,1,468,1,468,1,468, - 1,468,1,469,1,469,1,469,1,469,1,469,1,469,1,469,1,470,1,470,1,470, - 1,470,1,470,1,471,1,471,1,471,1,471,1,471,1,471,1,471,1,472,1,472, - 1,472,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,473,1,473, - 1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475, - 1,475,1,475,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476, - 1,476,1,476,1,476,1,476,1,476,1,476,1,476,1,477,1,477,1,477,1,477, - 1,477,1,477,1,477,1,477,1,477,1,478,1,478,1,478,1,478,1,478,1,478, - 1,478,1,478,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479,1,479, - 1,479,1,479,1,479,1,479,1,479,1,480,1,480,1,480,1,480,1,480,1,480, - 1,480,1,480,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481,1,481, - 1,481,1,481,1,482,1,482,1,482,1,482,1,482,1,482,1,482,1,483,1,483, - 1,483,1,483,1,483,1,483,1,483,1,484,1,484,1,484,1,484,1,484,1,484, - 1,484,1,485,1,485,1,485,1,485,1,485,1,485,1,485,1,486,1,486,1,486, - 1,486,1,487,1,487,1,487,1,487,1,488,1,488,1,488,1,488,1,488,1,489, - 1,489,1,489,1,489,1,489,1,490,1,490,1,490,1,490,1,490,1,490,1,490, - 1,490,1,491,1,491,1,491,1,491,1,491,1,491,1,492,1,492,1,492,1,492, - 1,492,1,492,1,492,1,492,1,492,1,492,1,493,1,493,1,493,1,493,1,493, - 1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494, - 1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,494,1,495,1,495, - 1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495,1,495, - 1,495,1,495,1,495,1,495,1,495,1,496,1,496,1,496,1,496,1,496,1,496, - 1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497,1,497, - 1,497,1,497,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,1,498, - 1,498,1,498,1,499,1,499,1,499,1,499,1,499,1,499,1,500,1,500,1,500, - 1,500,1,500,1,500,1,500,1,500,1,500,1,501,1,501,1,501,1,501,1,501, - 1,501,1,501,1,501,1,502,1,502,1,502,1,502,1,503,1,503,1,503,1,503, - 1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,503,1,504,1,504,1,504, - 1,504,1,504,1,504,1,504,1,504,1,505,1,505,1,505,1,505,1,505,1,505, - 1,506,1,506,1,506,1,506,1,506,1,506,1,507,1,507,1,507,1,507,1,507, - 1,507,1,507,1,507,1,508,1,508,1,508,1,508,1,508,1,508,1,508,1,508, - 1,509,1,509,1,509,1,509,1,509,1,509,1,510,1,510,1,510,1,510,1,510, - 1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,512,1,512,1,512,1,512, - 1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513,1,514,1,514,1,514, - 1,514,1,514,1,514,1,514,1,514,1,514,1,515,1,515,1,515,1,515,1,515, - 1,515,1,516,1,516,1,516,1,516,1,517,1,517,1,517,1,517,1,517,1,518, - 1,518,1,518,1,518,1,518,1,518,1,518,1,519,1,519,1,519,1,519,1,519, - 1,519,1,519,1,519,1,520,1,520,1,520,1,520,1,520,1,520,1,520,1,520, - 1,520,1,520,1,521,1,521,1,521,1,521,1,521,1,521,1,521,1,522,1,522, - 1,522,1,522,1,522,1,523,1,523,1,523,1,523,1,523,1,524,1,524,1,524, - 1,524,1,525,1,525,1,525,1,525,1,525,1,526,1,526,1,526,1,526,1,526, - 1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,527,1,528,1,528,1,528, - 1,528,1,528,1,528,1,528,1,528,1,529,1,529,1,529,1,529,1,530,1,530, - 1,530,1,530,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,531,1,531, - 1,531,1,532,1,532,1,532,1,532,1,532,1,532,1,533,1,533,1,533,1,533, - 1,534,1,534,1,534,1,534,1,535,1,535,1,535,1,536,1,536,1,536,1,536, - 1,536,1,536,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,537,1,537, - 1,537,1,538,1,538,1,538,1,538,1,539,1,539,1,539,1,540,1,540,1,540, - 1,540,1,540,1,540,1,541,1,541,1,541,1,541,1,541,1,541,1,541,1,541, - 1,542,1,542,1,542,1,542,1,542,1,542,1,543,1,543,1,543,1,543,1,543, - 1,543,1,544,1,544,1,544,1,544,1,544,1,545,1,545,1,545,1,545,1,545, - 1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546,1,546, - 1,547,1,547,1,547,1,547,1,547,1,547,1,548,1,548,1,548,1,548,1,548, - 1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,548,1,549,1,549,1,549, - 1,549,1,549,1,549,1,549,1,550,1,550,1,550,1,550,1,550,1,550,1,550, - 1,550,1,551,1,551,1,551,1,551,1,551,1,552,1,552,1,552,1,552,1,552, - 1,552,1,553,1,553,1,553,1,553,1,553,1,554,1,554,1,554,1,554,1,554, - 1,554,1,555,1,555,1,555,1,555,1,555,1,556,1,556,1,556,1,556,1,556, - 1,556,1,557,1,557,1,557,1,557,1,557,1,557,1,558,1,558,1,558,1,558, - 1,558,1,558,1,558,1,559,1,559,1,559,1,559,1,560,1,560,1,560,1,560, - 1,560,1,561,1,561,1,561,1,561,1,562,1,562,1,562,1,562,1,562,1,563, - 1,563,1,563,1,563,1,564,1,564,1,564,1,564,1,564,1,565,1,565,1,565, - 1,565,1,566,1,566,1,566,1,566,1,566,1,567,1,567,1,567,1,567,1,567, - 1,568,1,568,1,568,1,568,1,568,1,569,1,569,1,569,1,569,1,569,1,570, - 1,570,1,570,1,570,1,570,1,570,1,571,1,571,1,571,1,571,1,571,1,571, - 1,572,1,572,1,572,1,572,1,572,1,572,1,573,1,573,1,573,1,573,1,573, - 1,573,1,573,1,573,1,573,1,573,1,573,1,574,1,574,1,574,1,574,1,574, - 1,574,1,574,1,574,1,574,1,574,1,574,1,574,1,575,1,575,1,575,1,575, - 1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575,1,575, - 1,575,1,575,1,576,1,576,1,576,1,576,1,576,1,576,1,577,1,577,1,577, - 1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,577,1,578, - 1,578,1,578,1,578,1,578,1,578,1,579,1,579,1,579,1,579,1,579,1,579, - 1,580,1,580,1,580,1,580,1,580,1,580,1,581,1,581,1,581,1,581,1,582, - 1,582,1,582,1,582,1,582,1,582,1,582,1,583,1,583,1,583,1,583,1,583, - 1,583,1,583,1,583,1,583,1,583,1,584,1,584,1,584,1,584,1,584,1,584, - 1,584,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,585,1,586,1,586, - 1,586,1,586,1,586,1,586,1,586,1,587,1,587,1,587,1,587,1,587,1,588, - 1,588,1,588,1,588,1,588,1,588,1,589,1,589,1,589,1,589,1,590,1,590, - 1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,591, - 1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591, - 1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,592,1,592,1,592,1,592, - 1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,592,1,593,1,593,1,593, - 1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593,1,593, - 1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594,1,594, - 1,594,1,594,1,594,1,594,1,595,1,595,1,595,1,595,1,595,1,595,1,595, - 1,595,1,595,1,595,1,595,1,595,1,595,1,596,1,596,1,596,1,596,1,596, - 1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,596,1,597,1,597,1,597, - 1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,597,1,598,1,598, - 1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598,1,598, - 1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599,1,599, - 1,599,1,599,1,599,1,599,1,600,1,600,1,600,1,600,1,600,1,600,1,600, - 1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,600,1,601,1,601,1,601, - 1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601, - 1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,601,1,602,1,602,1,602, - 1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602, - 1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,603,1,603,1,603, - 1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603, - 1,604,1,604,1,604,1,604,1,604,1,604,1,604,1,605,1,605,1,605,1,605, - 1,605,1,606,1,606,1,606,1,606,1,606,1,606,1,607,1,607,1,607,1,607, - 1,607,1,607,1,607,1,607,1,607,1,607,1,607,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,609,1,609,1,609, - 1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609,1,609, - 1,609,1,609,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610, - 1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,611,1,611,1,611,1,611, - 1,611,1,611,1,611,1,612,1,612,1,612,1,612,1,612,1,612,1,612,1,613, - 1,613,1,613,1,613,1,613,1,613,1,613,1,613,1,613,1,614,1,614,1,614, - 1,614,1,614,1,614,1,614,1,615,1,615,1,615,1,615,1,615,1,615,1,615, - 1,615,1,615,1,615,1,616,1,616,1,616,1,616,1,616,1,616,1,616,1,617, - 1,617,1,617,1,617,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618, - 1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,618,1,619,1,619,1,619, - 1,619,1,619,1,619,1,619,1,619,1,619,1,620,1,620,1,620,1,620,1,620, - 1,620,1,620,1,620,1,620,1,620,1,621,1,621,1,621,1,621,1,621,1,621, - 1,621,1,621,1,621,1,621,1,621,1,622,1,622,1,622,1,622,1,622,1,622, - 1,622,1,622,1,622,1,623,1,623,1,623,1,623,1,623,1,623,1,623,1,623, - 1,623,1,623,1,623,1,623,1,623,1,624,1,624,1,624,1,624,1,624,1,624, - 1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,624,1,625,1,625,1,625, - 1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625,1,625, - 1,625,1,625,1,625,1,626,1,626,1,626,1,626,1,626,1,626,1,626,1,626, - 1,626,1,626,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627, - 1,627,1,627,1,627,1,627,1,627,1,628,1,628,1,628,1,628,1,628,1,628, - 1,628,1,628,1,628,1,628,1,629,1,629,1,629,1,629,1,629,1,629,1,629, - 1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,629,1,630,1,630,1,630, - 1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630,1,630, - 1,630,1,630,1,630,1,631,1,631,1,631,1,631,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632,1,632, - 1,632,1,632,1,632,1,632,1,632,1,633,1,633,1,633,1,633,1,633,1,633, - 1,633,1,633,1,633,1,633,1,634,1,634,1,634,1,634,1,634,1,634,1,634, - 1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634,1,634, - 1,634,1,634,1,634,1,634,1,635,1,635,1,635,1,635,1,635,1,635,1,635, - 1,635,1,635,1,635,1,635,1,635,1,635,1,636,1,636,1,636,1,636,1,636, - 1,636,1,636,1,636,1,637,1,637,1,637,1,637,1,637,1,637,1,637,1,637, - 1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,638,1,639, - 1,639,5,639,6323,8,639,10,639,12,639,6326,9,639,1,640,1,640,1,640, - 1,640,1,640,1,640,3,640,6334,8,640,1,641,1,641,3,641,6338,8,641, - 1,642,1,642,3,642,6342,8,642,1,643,1,643,1,643,1,644,1,644,1,644, - 1,644,5,644,6351,8,644,10,644,12,644,6354,9,644,1,645,1,645,1,645, - 1,646,1,646,1,646,1,646,5,646,6363,8,646,10,646,12,646,6366,9,646, - 1,647,1,647,1,647,1,647,1,648,1,648,1,648,1,648,1,649,1,649,1,649, - 1,649,1,650,1,650,1,650,1,650,1,651,1,651,1,651,1,652,1,652,1,652, - 1,652,5,652,6391,8,652,10,652,12,652,6394,9,652,1,653,1,653,1,653, - 1,653,1,653,1,653,1,654,1,654,1,654,1,655,1,655,1,655,1,655,1,656, - 1,656,3,656,6411,8,656,1,656,1,656,1,656,1,656,1,656,1,657,1,657, - 5,657,6420,8,657,10,657,12,657,6423,9,657,1,658,1,658,1,658,1,659, - 1,659,1,659,5,659,6431,8,659,10,659,12,659,6434,9,659,1,660,1,660, - 1,660,1,661,1,661,1,661,1,662,1,662,1,662,1,663,1,663,1,663,5,663, - 6448,8,663,10,663,12,663,6451,9,663,1,664,1,664,1,664,1,665,1,665, - 1,665,1,666,1,666,1,667,1,667,1,667,1,667,1,667,1,667,1,668,1,668, - 1,668,3,668,6470,8,668,1,668,1,668,3,668,6474,8,668,1,668,3,668, - 6477,8,668,1,668,1,668,1,668,1,668,3,668,6483,8,668,1,668,3,668, - 6486,8,668,1,668,1,668,1,668,3,668,6491,8,668,1,668,1,668,3,668, - 6495,8,668,1,669,4,669,6498,8,669,11,669,12,669,6499,1,670,1,670, - 1,670,5,670,6505,8,670,10,670,12,670,6508,9,670,1,671,1,671,1,671, - 1,671,1,671,1,671,1,671,1,671,5,671,6518,8,671,10,671,12,671,6521, - 9,671,1,671,1,671,1,672,4,672,6526,8,672,11,672,12,672,6527,1,672, - 1,672,1,673,1,673,3,673,6534,8,673,1,673,3,673,6537,8,673,1,673, - 1,673,1,674,1,674,1,674,1,674,5,674,6545,8,674,10,674,12,674,6548, - 9,674,1,674,1,674,1,675,1,675,1,675,1,675,5,675,6556,8,675,10,675, - 12,675,6559,9,675,1,675,1,675,1,675,4,675,6564,8,675,11,675,12,675, - 6565,1,675,1,675,4,675,6570,8,675,11,675,12,675,6571,1,675,5,675, - 6575,8,675,10,675,12,675,6578,9,675,1,675,5,675,6581,8,675,10,675, - 12,675,6584,9,675,1,675,1,675,1,675,1,675,1,675,1,676,1,676,1,676, - 1,676,5,676,6595,8,676,10,676,12,676,6598,9,676,1,676,1,676,1,676, - 4,676,6603,8,676,11,676,12,676,6604,1,676,1,676,4,676,6609,8,676, - 11,676,12,676,6610,1,676,3,676,6614,8,676,5,676,6616,8,676,10,676, - 12,676,6619,9,676,1,676,4,676,6622,8,676,11,676,12,676,6623,1,676, - 4,676,6627,8,676,11,676,12,676,6628,1,676,5,676,6632,8,676,10,676, - 12,676,6635,9,676,1,676,3,676,6638,8,676,1,676,1,676,1,677,1,677, - 1,677,1,677,5,677,6646,8,677,10,677,12,677,6649,9,677,1,677,5,677, - 6652,8,677,10,677,12,677,6655,9,677,1,677,1,677,5,677,6659,8,677, - 10,677,12,677,6662,9,677,3,677,6664,8,677,1,678,1,678,1,678,1,679, - 1,679,1,680,1,680,1,680,1,680,1,680,1,681,1,681,3,681,6678,8,681, - 1,681,1,681,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682, - 1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682,1,682, - 3,682,6702,8,682,1,682,5,682,6705,8,682,10,682,12,682,6708,9,682, - 1,683,1,683,1,683,1,683,1,683,1,684,1,684,3,684,6717,8,684,1,684, - 1,684,1,685,1,685,1,685,1,685,1,685,5,685,6726,8,685,10,685,12,685, - 6729,9,685,1,686,1,686,1,686,1,686,1,686,1,687,1,687,1,687,1,687, - 1,687,1,687,1,688,1,688,1,688,1,688,1,688,1,689,1,689,1,689,1,689, - 1,689,1,690,1,690,1,690,1,690,1,690,1,691,1,691,1,691,1,691,1,691, - 1,692,1,692,1,692,1,692,1,692,1,693,4,693,6768,8,693,11,693,12,693, - 6769,1,693,1,693,5,693,6774,8,693,10,693,12,693,6777,9,693,3,693, - 6779,8,693,1,694,1,694,3,694,6783,8,694,1,694,1,694,1,694,1,694, - 1,694,1,694,1,694,0,0,695,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8,21, - 9,23,10,25,11,27,12,29,13,31,14,33,15,35,16,37,17,39,18,41,19,43, - 20,45,21,47,22,49,23,51,24,53,25,55,26,57,27,59,28,61,29,63,0,65, - 0,67,0,69,0,71,30,73,31,75,32,77,33,79,34,81,35,83,36,85,37,87,38, - 89,39,91,40,93,41,95,42,97,43,99,44,101,45,103,46,105,47,107,48, - 109,49,111,50,113,51,115,52,117,53,119,54,121,55,123,56,125,57,127, - 58,129,59,131,60,133,61,135,62,137,63,139,64,141,65,143,66,145,67, - 147,68,149,69,151,70,153,71,155,72,157,73,159,74,161,75,163,76,165, - 77,167,78,169,79,171,80,173,81,175,82,177,83,179,84,181,85,183,86, - 185,87,187,88,189,89,191,90,193,91,195,92,197,93,199,94,201,95,203, - 96,205,97,207,98,209,99,211,100,213,101,215,102,217,103,219,104, - 221,105,223,106,225,107,227,108,229,109,231,110,233,111,235,112, - 237,113,239,114,241,115,243,116,245,117,247,118,249,119,251,120, - 253,121,255,122,257,123,259,124,261,125,263,126,265,127,267,128, - 269,129,271,130,273,131,275,132,277,133,279,134,281,135,283,136, - 285,137,287,138,289,139,291,140,293,141,295,142,297,143,299,144, - 301,145,303,146,305,147,307,148,309,149,311,150,313,151,315,152, - 317,153,319,154,321,155,323,156,325,157,327,158,329,159,331,160, - 333,161,335,162,337,163,339,164,341,165,343,166,345,167,347,168, - 349,169,351,170,353,171,355,172,357,173,359,174,361,175,363,176, - 365,177,367,178,369,179,371,180,373,181,375,182,377,183,379,184, - 381,185,383,186,385,187,387,188,389,189,391,190,393,191,395,192, - 397,193,399,194,401,195,403,196,405,197,407,198,409,199,411,200, - 413,201,415,202,417,203,419,204,421,205,423,206,425,207,427,208, - 429,209,431,210,433,211,435,212,437,213,439,214,441,215,443,216, - 445,217,447,218,449,219,451,220,453,221,455,222,457,223,459,224, - 461,225,463,226,465,227,467,228,469,229,471,230,473,231,475,232, - 477,233,479,234,481,235,483,236,485,237,487,238,489,239,491,240, - 493,241,495,242,497,243,499,244,501,245,503,246,505,247,507,248, - 509,249,511,250,513,251,515,252,517,253,519,254,521,255,523,256, - 525,257,527,258,529,259,531,260,533,261,535,262,537,263,539,264, - 541,265,543,266,545,267,547,268,549,269,551,270,553,271,555,272, - 557,273,559,274,561,275,563,276,565,277,567,278,569,279,571,280, - 573,281,575,282,577,283,579,284,581,285,583,286,585,287,587,288, - 589,289,591,290,593,291,595,292,597,293,599,294,601,295,603,296, - 605,297,607,298,609,299,611,300,613,301,615,302,617,303,619,304, - 621,305,623,306,625,307,627,308,629,309,631,310,633,311,635,312, - 637,313,639,314,641,315,643,316,645,317,647,318,649,319,651,320, - 653,321,655,322,657,323,659,324,661,325,663,326,665,327,667,328, - 669,329,671,330,673,331,675,332,677,333,679,334,681,335,683,336, - 685,337,687,338,689,339,691,340,693,341,695,342,697,343,699,344, - 701,345,703,346,705,347,707,348,709,349,711,350,713,351,715,352, - 717,353,719,354,721,355,723,356,725,357,727,358,729,359,731,360, - 733,361,735,362,737,363,739,364,741,365,743,366,745,367,747,368, - 749,369,751,370,753,371,755,372,757,373,759,374,761,375,763,376, - 765,377,767,378,769,379,771,380,773,381,775,382,777,383,779,384, - 781,385,783,386,785,387,787,388,789,389,791,390,793,391,795,392, - 797,393,799,394,801,395,803,396,805,397,807,398,809,399,811,400, - 813,401,815,402,817,403,819,404,821,405,823,406,825,407,827,408, - 829,409,831,410,833,411,835,412,837,413,839,414,841,415,843,416, - 845,417,847,418,849,419,851,420,853,421,855,422,857,423,859,424, - 861,425,863,426,865,427,867,428,869,429,871,430,873,431,875,432, - 877,433,879,434,881,435,883,436,885,437,887,438,889,439,891,440, - 893,441,895,442,897,443,899,444,901,445,903,446,905,447,907,448, - 909,449,911,450,913,451,915,452,917,453,919,454,921,455,923,456, - 925,457,927,458,929,459,931,460,933,461,935,462,937,463,939,464, - 941,465,943,466,945,467,947,468,949,469,951,470,953,471,955,472, - 957,473,959,474,961,475,963,476,965,477,967,478,969,479,971,480, - 973,481,975,482,977,483,979,484,981,485,983,486,985,487,987,488, - 989,489,991,490,993,491,995,492,997,493,999,494,1001,495,1003,496, - 1005,497,1007,498,1009,499,1011,500,1013,501,1015,502,1017,503,1019, - 504,1021,505,1023,506,1025,507,1027,508,1029,509,1031,510,1033,511, - 1035,512,1037,513,1039,514,1041,515,1043,516,1045,517,1047,518,1049, - 519,1051,520,1053,521,1055,522,1057,523,1059,524,1061,525,1063,526, - 1065,527,1067,528,1069,529,1071,530,1073,531,1075,532,1077,533,1079, - 534,1081,535,1083,536,1085,537,1087,538,1089,539,1091,540,1093,541, - 1095,542,1097,543,1099,544,1101,545,1103,546,1105,547,1107,548,1109, - 549,1111,550,1113,551,1115,552,1117,553,1119,554,1121,555,1123,556, - 1125,557,1127,558,1129,559,1131,560,1133,561,1135,562,1137,563,1139, - 564,1141,565,1143,566,1145,567,1147,568,1149,569,1151,570,1153,571, - 1155,572,1157,573,1159,574,1161,575,1163,576,1165,577,1167,578,1169, - 579,1171,580,1173,581,1175,582,1177,583,1179,584,1181,585,1183,586, - 1185,587,1187,588,1189,589,1191,590,1193,591,1195,592,1197,593,1199, - 594,1201,595,1203,596,1205,597,1207,598,1209,599,1211,600,1213,601, - 1215,602,1217,603,1219,604,1221,605,1223,606,1225,607,1227,608,1229, - 609,1231,610,1233,611,1235,612,1237,613,1239,614,1241,615,1243,616, - 1245,617,1247,618,1249,619,1251,620,1253,621,1255,622,1257,623,1259, - 624,1261,625,1263,626,1265,627,1267,628,1269,629,1271,630,1273,631, - 1275,632,1277,633,1279,634,1281,635,1283,636,1285,0,1287,0,1289, - 0,1291,637,1293,638,1295,639,1297,640,1299,641,1301,642,1303,643, - 1305,644,1307,645,1309,646,1311,0,1313,647,1315,648,1317,649,1319, - 0,1321,650,1323,651,1325,652,1327,653,1329,654,1331,655,1333,656, - 1335,657,1337,658,1339,659,1341,660,1343,0,1345,661,1347,662,1349, - 663,1351,664,1353,665,1355,666,1357,667,1359,668,1361,669,1363,670, - 1365,671,1367,672,1369,0,1371,673,1373,674,1375,0,1377,0,1379,0, - 1381,675,1383,0,1385,0,1387,679,1389,676,1391,677,1393,678,5,0,1, - 2,3,4,51,1,0,48,57,2,0,43,43,45,45,9,0,33,33,35,35,37,38,42,42,60, - 64,94,94,96,96,124,124,126,126,2,0,42,43,60,62,8,0,33,33,35,35,37, - 38,63,64,94,94,96,96,124,124,126,126,2,0,65,65,97,97,2,0,76,76,108, - 108,2,0,78,78,110,110,2,0,89,89,121,121,2,0,83,83,115,115,2,0,69, - 69,101,101,2,0,90,90,122,122,2,0,68,68,100,100,2,0,82,82,114,114, - 2,0,67,67,99,99,2,0,77,77,109,109,2,0,84,84,116,116,2,0,73,73,105, - 105,2,0,66,66,98,98,2,0,79,79,111,111,2,0,72,72,104,104,2,0,75,75, - 107,107,2,0,85,85,117,117,2,0,71,71,103,103,2,0,80,80,112,112,2, - 0,70,70,102,102,2,0,88,88,120,120,2,0,86,86,118,118,2,0,81,81,113, - 113,2,0,87,87,119,119,2,0,74,74,106,106,9,0,65,90,95,95,97,122,170, - 170,181,181,186,186,192,214,216,246,248,255,2,0,256,55295,57344, - 65535,1,0,55296,56319,1,0,56320,57343,2,0,0,0,34,34,1,0,34,34,1, - 0,39,39,1,0,48,49,3,0,48,57,65,70,97,102,3,0,65,90,95,95,97,122, - 5,0,36,36,48,57,65,90,95,95,97,122,2,0,34,34,92,92,2,0,9,9,32,32, - 2,0,10,10,13,13,2,0,42,42,47,47,4,0,10,10,13,13,34,34,92,92,3,0, - 10,10,13,13,34,34,3,0,85,85,117,117,120,120,2,0,39,39,92,92,1,0, - 36,36,6863,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13, - 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23, - 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33, - 1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, - 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53, - 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63, - 1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79, - 1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89, - 1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99, - 1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0, - 0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1, - 0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0, - 127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0, - 0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145, - 1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0, - 0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1, - 0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0, - 173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0, - 0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191, - 1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0, - 0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1, - 0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0, - 219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0, - 0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237, - 1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0, - 0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1, - 0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0, - 265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0, - 0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283, - 1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0, - 0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1, - 0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0, - 311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0, - 0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329, - 1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0, - 0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1, - 0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0, - 357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0, - 0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375, - 1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0, - 0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1, - 0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0, - 403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0, - 0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421, - 1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0, - 0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1, - 0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0, - 449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1,0, - 0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467, - 1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0, - 0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485,1, - 0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0, - 495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1,0, - 0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513, - 1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0, - 0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531,1, - 0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0, - 541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1,0, - 0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0,559, - 1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0,0,0, - 0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577,1, - 0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0,0, - 587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1,0, - 0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605, - 1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0, - 0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623,1, - 0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0,0, - 633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1,0, - 0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0,651, - 1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0,0,0, - 0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669,1, - 0,0,0,0,671,1,0,0,0,0,673,1,0,0,0,0,675,1,0,0,0,0,677,1,0,0,0,0, - 679,1,0,0,0,0,681,1,0,0,0,0,683,1,0,0,0,0,685,1,0,0,0,0,687,1,0, - 0,0,0,689,1,0,0,0,0,691,1,0,0,0,0,693,1,0,0,0,0,695,1,0,0,0,0,697, - 1,0,0,0,0,699,1,0,0,0,0,701,1,0,0,0,0,703,1,0,0,0,0,705,1,0,0,0, - 0,707,1,0,0,0,0,709,1,0,0,0,0,711,1,0,0,0,0,713,1,0,0,0,0,715,1, - 0,0,0,0,717,1,0,0,0,0,719,1,0,0,0,0,721,1,0,0,0,0,723,1,0,0,0,0, - 725,1,0,0,0,0,727,1,0,0,0,0,729,1,0,0,0,0,731,1,0,0,0,0,733,1,0, - 0,0,0,735,1,0,0,0,0,737,1,0,0,0,0,739,1,0,0,0,0,741,1,0,0,0,0,743, - 1,0,0,0,0,745,1,0,0,0,0,747,1,0,0,0,0,749,1,0,0,0,0,751,1,0,0,0, - 0,753,1,0,0,0,0,755,1,0,0,0,0,757,1,0,0,0,0,759,1,0,0,0,0,761,1, - 0,0,0,0,763,1,0,0,0,0,765,1,0,0,0,0,767,1,0,0,0,0,769,1,0,0,0,0, - 771,1,0,0,0,0,773,1,0,0,0,0,775,1,0,0,0,0,777,1,0,0,0,0,779,1,0, - 0,0,0,781,1,0,0,0,0,783,1,0,0,0,0,785,1,0,0,0,0,787,1,0,0,0,0,789, - 1,0,0,0,0,791,1,0,0,0,0,793,1,0,0,0,0,795,1,0,0,0,0,797,1,0,0,0, - 0,799,1,0,0,0,0,801,1,0,0,0,0,803,1,0,0,0,0,805,1,0,0,0,0,807,1, - 0,0,0,0,809,1,0,0,0,0,811,1,0,0,0,0,813,1,0,0,0,0,815,1,0,0,0,0, - 817,1,0,0,0,0,819,1,0,0,0,0,821,1,0,0,0,0,823,1,0,0,0,0,825,1,0, - 0,0,0,827,1,0,0,0,0,829,1,0,0,0,0,831,1,0,0,0,0,833,1,0,0,0,0,835, - 1,0,0,0,0,837,1,0,0,0,0,839,1,0,0,0,0,841,1,0,0,0,0,843,1,0,0,0, - 0,845,1,0,0,0,0,847,1,0,0,0,0,849,1,0,0,0,0,851,1,0,0,0,0,853,1, - 0,0,0,0,855,1,0,0,0,0,857,1,0,0,0,0,859,1,0,0,0,0,861,1,0,0,0,0, - 863,1,0,0,0,0,865,1,0,0,0,0,867,1,0,0,0,0,869,1,0,0,0,0,871,1,0, - 0,0,0,873,1,0,0,0,0,875,1,0,0,0,0,877,1,0,0,0,0,879,1,0,0,0,0,881, - 1,0,0,0,0,883,1,0,0,0,0,885,1,0,0,0,0,887,1,0,0,0,0,889,1,0,0,0, - 0,891,1,0,0,0,0,893,1,0,0,0,0,895,1,0,0,0,0,897,1,0,0,0,0,899,1, - 0,0,0,0,901,1,0,0,0,0,903,1,0,0,0,0,905,1,0,0,0,0,907,1,0,0,0,0, - 909,1,0,0,0,0,911,1,0,0,0,0,913,1,0,0,0,0,915,1,0,0,0,0,917,1,0, - 0,0,0,919,1,0,0,0,0,921,1,0,0,0,0,923,1,0,0,0,0,925,1,0,0,0,0,927, - 1,0,0,0,0,929,1,0,0,0,0,931,1,0,0,0,0,933,1,0,0,0,0,935,1,0,0,0, - 0,937,1,0,0,0,0,939,1,0,0,0,0,941,1,0,0,0,0,943,1,0,0,0,0,945,1, - 0,0,0,0,947,1,0,0,0,0,949,1,0,0,0,0,951,1,0,0,0,0,953,1,0,0,0,0, - 955,1,0,0,0,0,957,1,0,0,0,0,959,1,0,0,0,0,961,1,0,0,0,0,963,1,0, - 0,0,0,965,1,0,0,0,0,967,1,0,0,0,0,969,1,0,0,0,0,971,1,0,0,0,0,973, - 1,0,0,0,0,975,1,0,0,0,0,977,1,0,0,0,0,979,1,0,0,0,0,981,1,0,0,0, - 0,983,1,0,0,0,0,985,1,0,0,0,0,987,1,0,0,0,0,989,1,0,0,0,0,991,1, - 0,0,0,0,993,1,0,0,0,0,995,1,0,0,0,0,997,1,0,0,0,0,999,1,0,0,0,0, - 1001,1,0,0,0,0,1003,1,0,0,0,0,1005,1,0,0,0,0,1007,1,0,0,0,0,1009, - 1,0,0,0,0,1011,1,0,0,0,0,1013,1,0,0,0,0,1015,1,0,0,0,0,1017,1,0, - 0,0,0,1019,1,0,0,0,0,1021,1,0,0,0,0,1023,1,0,0,0,0,1025,1,0,0,0, - 0,1027,1,0,0,0,0,1029,1,0,0,0,0,1031,1,0,0,0,0,1033,1,0,0,0,0,1035, - 1,0,0,0,0,1037,1,0,0,0,0,1039,1,0,0,0,0,1041,1,0,0,0,0,1043,1,0, - 0,0,0,1045,1,0,0,0,0,1047,1,0,0,0,0,1049,1,0,0,0,0,1051,1,0,0,0, - 0,1053,1,0,0,0,0,1055,1,0,0,0,0,1057,1,0,0,0,0,1059,1,0,0,0,0,1061, - 1,0,0,0,0,1063,1,0,0,0,0,1065,1,0,0,0,0,1067,1,0,0,0,0,1069,1,0, - 0,0,0,1071,1,0,0,0,0,1073,1,0,0,0,0,1075,1,0,0,0,0,1077,1,0,0,0, - 0,1079,1,0,0,0,0,1081,1,0,0,0,0,1083,1,0,0,0,0,1085,1,0,0,0,0,1087, - 1,0,0,0,0,1089,1,0,0,0,0,1091,1,0,0,0,0,1093,1,0,0,0,0,1095,1,0, - 0,0,0,1097,1,0,0,0,0,1099,1,0,0,0,0,1101,1,0,0,0,0,1103,1,0,0,0, - 0,1105,1,0,0,0,0,1107,1,0,0,0,0,1109,1,0,0,0,0,1111,1,0,0,0,0,1113, - 1,0,0,0,0,1115,1,0,0,0,0,1117,1,0,0,0,0,1119,1,0,0,0,0,1121,1,0, - 0,0,0,1123,1,0,0,0,0,1125,1,0,0,0,0,1127,1,0,0,0,0,1129,1,0,0,0, - 0,1131,1,0,0,0,0,1133,1,0,0,0,0,1135,1,0,0,0,0,1137,1,0,0,0,0,1139, - 1,0,0,0,0,1141,1,0,0,0,0,1143,1,0,0,0,0,1145,1,0,0,0,0,1147,1,0, - 0,0,0,1149,1,0,0,0,0,1151,1,0,0,0,0,1153,1,0,0,0,0,1155,1,0,0,0, - 0,1157,1,0,0,0,0,1159,1,0,0,0,0,1161,1,0,0,0,0,1163,1,0,0,0,0,1165, - 1,0,0,0,0,1167,1,0,0,0,0,1169,1,0,0,0,0,1171,1,0,0,0,0,1173,1,0, - 0,0,0,1175,1,0,0,0,0,1177,1,0,0,0,0,1179,1,0,0,0,0,1181,1,0,0,0, - 0,1183,1,0,0,0,0,1185,1,0,0,0,0,1187,1,0,0,0,0,1189,1,0,0,0,0,1191, - 1,0,0,0,0,1193,1,0,0,0,0,1195,1,0,0,0,0,1197,1,0,0,0,0,1199,1,0, - 0,0,0,1201,1,0,0,0,0,1203,1,0,0,0,0,1205,1,0,0,0,0,1207,1,0,0,0, - 0,1209,1,0,0,0,0,1211,1,0,0,0,0,1213,1,0,0,0,0,1215,1,0,0,0,0,1217, - 1,0,0,0,0,1219,1,0,0,0,0,1221,1,0,0,0,0,1223,1,0,0,0,0,1225,1,0, - 0,0,0,1227,1,0,0,0,0,1229,1,0,0,0,0,1231,1,0,0,0,0,1233,1,0,0,0, - 0,1235,1,0,0,0,0,1237,1,0,0,0,0,1239,1,0,0,0,0,1241,1,0,0,0,0,1243, - 1,0,0,0,0,1245,1,0,0,0,0,1247,1,0,0,0,0,1249,1,0,0,0,0,1251,1,0, - 0,0,0,1253,1,0,0,0,0,1255,1,0,0,0,0,1257,1,0,0,0,0,1259,1,0,0,0, - 0,1261,1,0,0,0,0,1263,1,0,0,0,0,1265,1,0,0,0,0,1267,1,0,0,0,0,1269, - 1,0,0,0,0,1271,1,0,0,0,0,1273,1,0,0,0,0,1275,1,0,0,0,0,1277,1,0, - 0,0,0,1279,1,0,0,0,0,1281,1,0,0,0,0,1283,1,0,0,0,0,1291,1,0,0,0, - 0,1293,1,0,0,0,0,1295,1,0,0,0,0,1297,1,0,0,0,0,1299,1,0,0,0,0,1301, - 1,0,0,0,0,1303,1,0,0,0,0,1305,1,0,0,0,0,1307,1,0,0,0,0,1309,1,0, - 0,0,0,1311,1,0,0,0,0,1313,1,0,0,0,0,1315,1,0,0,0,0,1317,1,0,0,0, - 0,1321,1,0,0,0,0,1323,1,0,0,0,0,1325,1,0,0,0,0,1327,1,0,0,0,0,1329, - 1,0,0,0,0,1331,1,0,0,0,0,1333,1,0,0,0,0,1335,1,0,0,0,0,1337,1,0, - 0,0,0,1339,1,0,0,0,0,1341,1,0,0,0,0,1345,1,0,0,0,0,1347,1,0,0,0, - 0,1349,1,0,0,0,0,1351,1,0,0,0,0,1353,1,0,0,0,0,1355,1,0,0,0,0,1357, - 1,0,0,0,0,1359,1,0,0,0,0,1361,1,0,0,0,0,1363,1,0,0,0,1,1365,1,0, - 0,0,1,1367,1,0,0,0,1,1371,1,0,0,0,1,1373,1,0,0,0,2,1377,1,0,0,0, - 2,1379,1,0,0,0,2,1381,1,0,0,0,3,1383,1,0,0,0,3,1385,1,0,0,0,3,1387, - 1,0,0,0,3,1389,1,0,0,0,4,1391,1,0,0,0,4,1393,1,0,0,0,5,1395,1,0, - 0,0,7,1397,1,0,0,0,9,1399,1,0,0,0,11,1401,1,0,0,0,13,1403,1,0,0, - 0,15,1405,1,0,0,0,17,1407,1,0,0,0,19,1409,1,0,0,0,21,1411,1,0,0, - 0,23,1413,1,0,0,0,25,1415,1,0,0,0,27,1417,1,0,0,0,29,1419,1,0,0, - 0,31,1421,1,0,0,0,33,1423,1,0,0,0,35,1425,1,0,0,0,37,1427,1,0,0, - 0,39,1429,1,0,0,0,41,1432,1,0,0,0,43,1435,1,0,0,0,45,1438,1,0,0, - 0,47,1441,1,0,0,0,49,1444,1,0,0,0,51,1447,1,0,0,0,53,1450,1,0,0, - 0,55,1453,1,0,0,0,57,1456,1,0,0,0,59,1458,1,0,0,0,61,1484,1,0,0, - 0,63,1495,1,0,0,0,65,1511,1,0,0,0,67,1513,1,0,0,0,69,1515,1,0,0, - 0,71,1517,1,0,0,0,73,1521,1,0,0,0,75,1529,1,0,0,0,77,1537,1,0,0, - 0,79,1541,1,0,0,0,81,1545,1,0,0,0,83,1551,1,0,0,0,85,1554,1,0,0, - 0,87,1558,1,0,0,0,89,1569,1,0,0,0,91,1574,1,0,0,0,93,1579,1,0,0, - 0,95,1584,1,0,0,0,97,1590,1,0,0,0,99,1598,1,0,0,0,101,1605,1,0,0, - 0,103,1616,1,0,0,0,105,1623,1,0,0,0,107,1639,1,0,0,0,109,1652,1, - 0,0,0,111,1665,1,0,0,0,113,1678,1,0,0,0,115,1696,1,0,0,0,117,1709, - 1,0,0,0,119,1717,1,0,0,0,121,1728,1,0,0,0,123,1733,1,0,0,0,125,1742, - 1,0,0,0,127,1745,1,0,0,0,129,1750,1,0,0,0,131,1757,1,0,0,0,133,1763, - 1,0,0,0,135,1769,1,0,0,0,137,1773,1,0,0,0,139,1781,1,0,0,0,141,1786, - 1,0,0,0,143,1792,1,0,0,0,145,1798,1,0,0,0,147,1805,1,0,0,0,149,1808, - 1,0,0,0,151,1818,1,0,0,0,153,1828,1,0,0,0,155,1833,1,0,0,0,157,1841, - 1,0,0,0,159,1849,1,0,0,0,161,1855,1,0,0,0,163,1865,1,0,0,0,165,1880, - 1,0,0,0,167,1884,1,0,0,0,169,1889,1,0,0,0,171,1896,1,0,0,0,173,1899, - 1,0,0,0,175,1904,1,0,0,0,177,1907,1,0,0,0,179,1913,1,0,0,0,181,1921, - 1,0,0,0,183,1929,1,0,0,0,185,1940,1,0,0,0,187,1950,1,0,0,0,189,1957, - 1,0,0,0,191,1970,1,0,0,0,193,1975,1,0,0,0,195,1985,1,0,0,0,197,1991, - 1,0,0,0,199,1996,1,0,0,0,201,1999,1,0,0,0,203,2008,1,0,0,0,205,2013, - 1,0,0,0,207,2019,1,0,0,0,209,2026,1,0,0,0,211,2031,1,0,0,0,213,2037, - 1,0,0,0,215,2046,1,0,0,0,217,2051,1,0,0,0,219,2057,1,0,0,0,221,2064, - 1,0,0,0,223,2069,1,0,0,0,225,2083,1,0,0,0,227,2090,1,0,0,0,229,2100, - 1,0,0,0,231,2113,1,0,0,0,233,2119,1,0,0,0,235,2134,1,0,0,0,237,2141, - 1,0,0,0,239,2146,1,0,0,0,241,2152,1,0,0,0,243,2158,1,0,0,0,245,2161, - 1,0,0,0,247,2168,1,0,0,0,249,2173,1,0,0,0,251,2178,1,0,0,0,253,2183, - 1,0,0,0,255,2191,1,0,0,0,257,2199,1,0,0,0,259,2205,1,0,0,0,261,2210, - 1,0,0,0,263,2219,1,0,0,0,265,2225,1,0,0,0,267,2233,1,0,0,0,269,2241, - 1,0,0,0,271,2247,1,0,0,0,273,2256,1,0,0,0,275,2263,1,0,0,0,277,2270, - 1,0,0,0,279,2274,1,0,0,0,281,2280,1,0,0,0,283,2286,1,0,0,0,285,2296, - 1,0,0,0,287,2301,1,0,0,0,289,2307,1,0,0,0,291,2314,1,0,0,0,293,2324, - 1,0,0,0,295,2335,1,0,0,0,297,2338,1,0,0,0,299,2348,1,0,0,0,301,2357, - 1,0,0,0,303,2364,1,0,0,0,305,2370,1,0,0,0,307,2373,1,0,0,0,309,2379, - 1,0,0,0,311,2386,1,0,0,0,313,2394,1,0,0,0,315,2403,1,0,0,0,317,2411, - 1,0,0,0,319,2417,1,0,0,0,321,2433,1,0,0,0,323,2444,1,0,0,0,325,2450, - 1,0,0,0,327,2456,1,0,0,0,329,2464,1,0,0,0,331,2472,1,0,0,0,333,2481, - 1,0,0,0,335,2488,1,0,0,0,337,2498,1,0,0,0,339,2512,1,0,0,0,341,2523, - 1,0,0,0,343,2535,1,0,0,0,345,2543,1,0,0,0,347,2552,1,0,0,0,349,2563, - 1,0,0,0,351,2568,1,0,0,0,353,2573,1,0,0,0,355,2577,1,0,0,0,357,2584, - 1,0,0,0,359,2590,1,0,0,0,361,2595,1,0,0,0,363,2604,1,0,0,0,365,2608, - 1,0,0,0,367,2619,1,0,0,0,369,2627,1,0,0,0,371,2636,1,0,0,0,373,2645, - 1,0,0,0,375,2653,1,0,0,0,377,2660,1,0,0,0,379,2670,1,0,0,0,381,2681, - 1,0,0,0,383,2692,1,0,0,0,385,2700,1,0,0,0,387,2708,1,0,0,0,389,2717, - 1,0,0,0,391,2724,1,0,0,0,393,2731,1,0,0,0,395,2736,1,0,0,0,397,2741, - 1,0,0,0,399,2748,1,0,0,0,401,2757,1,0,0,0,403,2767,1,0,0,0,405,2772, - 1,0,0,0,407,2779,1,0,0,0,409,2785,1,0,0,0,411,2793,1,0,0,0,413,2803, - 1,0,0,0,415,2813,1,0,0,0,417,2821,1,0,0,0,419,2829,1,0,0,0,421,2839, - 1,0,0,0,423,2848,1,0,0,0,425,2855,1,0,0,0,427,2861,1,0,0,0,429,2871, - 1,0,0,0,431,2877,1,0,0,0,433,2885,1,0,0,0,435,2894,1,0,0,0,437,2904, - 1,0,0,0,439,2911,1,0,0,0,441,2919,1,0,0,0,443,2927,1,0,0,0,445,2934, - 1,0,0,0,447,2939,1,0,0,0,449,2944,1,0,0,0,451,2953,1,0,0,0,453,2956, - 1,0,0,0,455,2966,1,0,0,0,457,2976,1,0,0,0,459,2985,1,0,0,0,461,2995, - 1,0,0,0,463,3005,1,0,0,0,465,3011,1,0,0,0,467,3019,1,0,0,0,469,3027, - 1,0,0,0,471,3036,1,0,0,0,473,3043,1,0,0,0,475,3055,1,0,0,0,477,3062, - 1,0,0,0,479,3070,1,0,0,0,481,3078,1,0,0,0,483,3088,1,0,0,0,485,3092, - 1,0,0,0,487,3098,1,0,0,0,489,3107,1,0,0,0,491,3113,1,0,0,0,493,3118, - 1,0,0,0,495,3128,1,0,0,0,497,3134,1,0,0,0,499,3141,1,0,0,0,501,3146, - 1,0,0,0,503,3152,1,0,0,0,505,3161,1,0,0,0,507,3166,1,0,0,0,509,3174, - 1,0,0,0,511,3180,1,0,0,0,513,3188,1,0,0,0,515,3201,1,0,0,0,517,3210, - 1,0,0,0,519,3216,1,0,0,0,521,3223,1,0,0,0,523,3232,1,0,0,0,525,3237, - 1,0,0,0,527,3243,1,0,0,0,529,3248,1,0,0,0,531,3253,1,0,0,0,533,3259, - 1,0,0,0,535,3264,1,0,0,0,537,3267,1,0,0,0,539,3275,1,0,0,0,541,3282, - 1,0,0,0,543,3289,1,0,0,0,545,3295,1,0,0,0,547,3302,1,0,0,0,549,3305, - 1,0,0,0,551,3309,1,0,0,0,553,3314,1,0,0,0,555,3323,1,0,0,0,557,3330, - 1,0,0,0,559,3338,1,0,0,0,561,3344,1,0,0,0,563,3350,1,0,0,0,565,3357, - 1,0,0,0,567,3365,1,0,0,0,569,3375,1,0,0,0,571,3383,1,0,0,0,573,3392, - 1,0,0,0,575,3398,1,0,0,0,577,3408,1,0,0,0,579,3416,1,0,0,0,581,3425, - 1,0,0,0,583,3434,1,0,0,0,585,3440,1,0,0,0,587,3451,1,0,0,0,589,3462, - 1,0,0,0,591,3472,1,0,0,0,593,3480,1,0,0,0,595,3486,1,0,0,0,597,3492, - 1,0,0,0,599,3497,1,0,0,0,601,3506,1,0,0,0,603,3514,1,0,0,0,605,3524, - 1,0,0,0,607,3528,1,0,0,0,609,3536,1,0,0,0,611,3544,1,0,0,0,613,3553, - 1,0,0,0,615,3561,1,0,0,0,617,3568,1,0,0,0,619,3579,1,0,0,0,621,3587, - 1,0,0,0,623,3595,1,0,0,0,625,3601,1,0,0,0,627,3609,1,0,0,0,629,3618, - 1,0,0,0,631,3626,1,0,0,0,633,3633,1,0,0,0,635,3638,1,0,0,0,637,3647, - 1,0,0,0,639,3652,1,0,0,0,641,3657,1,0,0,0,643,3667,1,0,0,0,645,3674, - 1,0,0,0,647,3681,1,0,0,0,649,3688,1,0,0,0,651,3695,1,0,0,0,653,3704, - 1,0,0,0,655,3713,1,0,0,0,657,3723,1,0,0,0,659,3736,1,0,0,0,661,3743, - 1,0,0,0,663,3751,1,0,0,0,665,3755,1,0,0,0,667,3761,1,0,0,0,669,3766, - 1,0,0,0,671,3773,1,0,0,0,673,3782,1,0,0,0,675,3789,1,0,0,0,677,3800, - 1,0,0,0,679,3806,1,0,0,0,681,3816,1,0,0,0,683,3827,1,0,0,0,685,3833, - 1,0,0,0,687,3840,1,0,0,0,689,3848,1,0,0,0,691,3855,1,0,0,0,693,3861, - 1,0,0,0,695,3867,1,0,0,0,697,3874,1,0,0,0,699,3881,1,0,0,0,701,3892, - 1,0,0,0,703,3897,1,0,0,0,705,3906,1,0,0,0,707,3916,1,0,0,0,709,3921, - 1,0,0,0,711,3933,1,0,0,0,713,3941,1,0,0,0,715,3950,1,0,0,0,717,3958, - 1,0,0,0,719,3963,1,0,0,0,721,3969,1,0,0,0,723,3979,1,0,0,0,725,3991, - 1,0,0,0,727,4003,1,0,0,0,729,4011,1,0,0,0,731,4020,1,0,0,0,733,4029, - 1,0,0,0,735,4035,1,0,0,0,737,4042,1,0,0,0,739,4049,1,0,0,0,741,4055, - 1,0,0,0,743,4064,1,0,0,0,745,4074,1,0,0,0,747,4082,1,0,0,0,749,4090, - 1,0,0,0,751,4095,1,0,0,0,753,4104,1,0,0,0,755,4115,1,0,0,0,757,4123, - 1,0,0,0,759,4128,1,0,0,0,761,4136,1,0,0,0,763,4142,1,0,0,0,765,4146, - 1,0,0,0,767,4151,1,0,0,0,769,4155,1,0,0,0,771,4160,1,0,0,0,773,4168, - 1,0,0,0,775,4175,1,0,0,0,777,4179,1,0,0,0,779,4187,1,0,0,0,781,4192, - 1,0,0,0,783,4202,1,0,0,0,785,4211,1,0,0,0,787,4215,1,0,0,0,789,4223, - 1,0,0,0,791,4230,1,0,0,0,793,4238,1,0,0,0,795,4244,1,0,0,0,797,4253, - 1,0,0,0,799,4259,1,0,0,0,801,4263,1,0,0,0,803,4271,1,0,0,0,805,4280, - 1,0,0,0,807,4286,1,0,0,0,809,4295,1,0,0,0,811,4301,1,0,0,0,813,4306, - 1,0,0,0,815,4313,1,0,0,0,817,4321,1,0,0,0,819,4329,1,0,0,0,821,4338, - 1,0,0,0,823,4348,1,0,0,0,825,4353,1,0,0,0,827,4357,1,0,0,0,829,4363, - 1,0,0,0,831,4372,1,0,0,0,833,4382,1,0,0,0,835,4387,1,0,0,0,837,4397, - 1,0,0,0,839,4403,1,0,0,0,841,4408,1,0,0,0,843,4415,1,0,0,0,845,4423, - 1,0,0,0,847,4437,1,0,0,0,849,4448,1,0,0,0,851,4455,1,0,0,0,853,4474, - 1,0,0,0,855,4502,1,0,0,0,857,4529,1,0,0,0,859,4535,1,0,0,0,861,4548, - 1,0,0,0,863,4558,1,0,0,0,865,4569,1,0,0,0,867,4579,1,0,0,0,869,4589, - 1,0,0,0,871,4598,1,0,0,0,873,4604,1,0,0,0,875,4612,1,0,0,0,877,4625, - 1,0,0,0,879,4630,1,0,0,0,881,4638,1,0,0,0,883,4645,1,0,0,0,885,4652, - 1,0,0,0,887,4663,1,0,0,0,889,4673,1,0,0,0,891,4680,1,0,0,0,893,4687, - 1,0,0,0,895,4695,1,0,0,0,897,4703,1,0,0,0,899,4713,1,0,0,0,901,4720, - 1,0,0,0,903,4727,1,0,0,0,905,4734,1,0,0,0,907,4746,1,0,0,0,909,4750, - 1,0,0,0,911,4754,1,0,0,0,913,4760,1,0,0,0,915,4773,1,0,0,0,917,4785, - 1,0,0,0,919,4789,1,0,0,0,921,4793,1,0,0,0,923,4802,1,0,0,0,925,4810, - 1,0,0,0,927,4821,1,0,0,0,929,4827,1,0,0,0,931,4835,1,0,0,0,933,4844, - 1,0,0,0,935,4848,1,0,0,0,937,4856,1,0,0,0,939,4867,1,0,0,0,941,4876, - 1,0,0,0,943,4881,1,0,0,0,945,4888,1,0,0,0,947,4893,1,0,0,0,949,4900, - 1,0,0,0,951,4905,1,0,0,0,953,4914,1,0,0,0,955,4919,1,0,0,0,957,4931, - 1,0,0,0,959,4942,1,0,0,0,961,4951,1,0,0,0,963,4959,1,0,0,0,965,4973, - 1,0,0,0,967,4981,1,0,0,0,969,4992,1,0,0,0,971,4999,1,0,0,0,973,5006, - 1,0,0,0,975,5013,1,0,0,0,977,5020,1,0,0,0,979,5024,1,0,0,0,981,5028, - 1,0,0,0,983,5033,1,0,0,0,985,5038,1,0,0,0,987,5046,1,0,0,0,989,5052, - 1,0,0,0,991,5062,1,0,0,0,993,5067,1,0,0,0,995,5087,1,0,0,0,997,5105, - 1,0,0,0,999,5111,1,0,0,0,1001,5124,1,0,0,0,1003,5135,1,0,0,0,1005, - 5141,1,0,0,0,1007,5150,1,0,0,0,1009,5158,1,0,0,0,1011,5162,1,0,0, - 0,1013,5174,1,0,0,0,1015,5182,1,0,0,0,1017,5188,1,0,0,0,1019,5194, - 1,0,0,0,1021,5202,1,0,0,0,1023,5210,1,0,0,0,1025,5216,1,0,0,0,1027, - 5221,1,0,0,0,1029,5228,1,0,0,0,1031,5234,1,0,0,0,1033,5240,1,0,0, - 0,1035,5249,1,0,0,0,1037,5255,1,0,0,0,1039,5259,1,0,0,0,1041,5264, - 1,0,0,0,1043,5271,1,0,0,0,1045,5279,1,0,0,0,1047,5289,1,0,0,0,1049, - 5296,1,0,0,0,1051,5301,1,0,0,0,1053,5306,1,0,0,0,1055,5310,1,0,0, - 0,1057,5315,1,0,0,0,1059,5320,1,0,0,0,1061,5328,1,0,0,0,1063,5336, - 1,0,0,0,1065,5340,1,0,0,0,1067,5344,1,0,0,0,1069,5354,1,0,0,0,1071, - 5360,1,0,0,0,1073,5364,1,0,0,0,1075,5368,1,0,0,0,1077,5371,1,0,0, - 0,1079,5377,1,0,0,0,1081,5387,1,0,0,0,1083,5391,1,0,0,0,1085,5394, - 1,0,0,0,1087,5400,1,0,0,0,1089,5408,1,0,0,0,1091,5414,1,0,0,0,1093, - 5420,1,0,0,0,1095,5425,1,0,0,0,1097,5430,1,0,0,0,1099,5441,1,0,0, - 0,1101,5447,1,0,0,0,1103,5460,1,0,0,0,1105,5467,1,0,0,0,1107,5475, - 1,0,0,0,1109,5480,1,0,0,0,1111,5486,1,0,0,0,1113,5491,1,0,0,0,1115, - 5497,1,0,0,0,1117,5502,1,0,0,0,1119,5508,1,0,0,0,1121,5514,1,0,0, - 0,1123,5521,1,0,0,0,1125,5525,1,0,0,0,1127,5530,1,0,0,0,1129,5534, - 1,0,0,0,1131,5539,1,0,0,0,1133,5543,1,0,0,0,1135,5548,1,0,0,0,1137, - 5552,1,0,0,0,1139,5557,1,0,0,0,1141,5562,1,0,0,0,1143,5567,1,0,0, - 0,1145,5572,1,0,0,0,1147,5578,1,0,0,0,1149,5584,1,0,0,0,1151,5590, - 1,0,0,0,1153,5601,1,0,0,0,1155,5613,1,0,0,0,1157,5630,1,0,0,0,1159, - 5636,1,0,0,0,1161,5649,1,0,0,0,1163,5655,1,0,0,0,1165,5661,1,0,0, - 0,1167,5667,1,0,0,0,1169,5671,1,0,0,0,1171,5678,1,0,0,0,1173,5688, - 1,0,0,0,1175,5695,1,0,0,0,1177,5703,1,0,0,0,1179,5710,1,0,0,0,1181, - 5715,1,0,0,0,1183,5721,1,0,0,0,1185,5725,1,0,0,0,1187,5737,1,0,0, - 0,1189,5756,1,0,0,0,1191,5768,1,0,0,0,1193,5782,1,0,0,0,1195,5797, - 1,0,0,0,1197,5810,1,0,0,0,1199,5823,1,0,0,0,1201,5835,1,0,0,0,1203, - 5848,1,0,0,0,1205,5863,1,0,0,0,1207,5878,1,0,0,0,1209,5900,1,0,0, - 0,1211,5922,1,0,0,0,1213,5936,1,0,0,0,1215,5943,1,0,0,0,1217,5948, - 1,0,0,0,1219,5954,1,0,0,0,1221,5965,1,0,0,0,1223,5977,1,0,0,0,1225, - 5993,1,0,0,0,1227,6009,1,0,0,0,1229,6016,1,0,0,0,1231,6023,1,0,0, - 0,1233,6032,1,0,0,0,1235,6039,1,0,0,0,1237,6049,1,0,0,0,1239,6056, - 1,0,0,0,1241,6060,1,0,0,0,1243,6076,1,0,0,0,1245,6085,1,0,0,0,1247, - 6095,1,0,0,0,1249,6106,1,0,0,0,1251,6115,1,0,0,0,1253,6128,1,0,0, - 0,1255,6142,1,0,0,0,1257,6159,1,0,0,0,1259,6169,1,0,0,0,1261,6183, - 1,0,0,0,1263,6193,1,0,0,0,1265,6208,1,0,0,0,1267,6225,1,0,0,0,1269, - 6229,1,0,0,0,1271,6249,1,0,0,0,1273,6259,1,0,0,0,1275,6281,1,0,0, - 0,1277,6294,1,0,0,0,1279,6302,1,0,0,0,1281,6310,1,0,0,0,1283,6320, - 1,0,0,0,1285,6333,1,0,0,0,1287,6337,1,0,0,0,1289,6341,1,0,0,0,1291, - 6343,1,0,0,0,1293,6346,1,0,0,0,1295,6355,1,0,0,0,1297,6358,1,0,0, - 0,1299,6367,1,0,0,0,1301,6371,1,0,0,0,1303,6375,1,0,0,0,1305,6379, - 1,0,0,0,1307,6383,1,0,0,0,1309,6386,1,0,0,0,1311,6395,1,0,0,0,1313, - 6401,1,0,0,0,1315,6404,1,0,0,0,1317,6408,1,0,0,0,1319,6417,1,0,0, - 0,1321,6424,1,0,0,0,1323,6427,1,0,0,0,1325,6435,1,0,0,0,1327,6438, - 1,0,0,0,1329,6441,1,0,0,0,1331,6444,1,0,0,0,1333,6452,1,0,0,0,1335, - 6455,1,0,0,0,1337,6458,1,0,0,0,1339,6460,1,0,0,0,1341,6494,1,0,0, - 0,1343,6497,1,0,0,0,1345,6501,1,0,0,0,1347,6509,1,0,0,0,1349,6525, - 1,0,0,0,1351,6536,1,0,0,0,1353,6540,1,0,0,0,1355,6551,1,0,0,0,1357, - 6590,1,0,0,0,1359,6641,1,0,0,0,1361,6665,1,0,0,0,1363,6668,1,0,0, - 0,1365,6670,1,0,0,0,1367,6675,1,0,0,0,1369,6706,1,0,0,0,1371,6709, - 1,0,0,0,1373,6714,1,0,0,0,1375,6727,1,0,0,0,1377,6730,1,0,0,0,1379, - 6735,1,0,0,0,1381,6741,1,0,0,0,1383,6746,1,0,0,0,1385,6751,1,0,0, - 0,1387,6756,1,0,0,0,1389,6761,1,0,0,0,1391,6778,1,0,0,0,1393,6780, - 1,0,0,0,1395,1396,5,36,0,0,1396,6,1,0,0,0,1397,1398,5,40,0,0,1398, - 8,1,0,0,0,1399,1400,5,41,0,0,1400,10,1,0,0,0,1401,1402,5,91,0,0, - 1402,12,1,0,0,0,1403,1404,5,93,0,0,1404,14,1,0,0,0,1405,1406,5,44, - 0,0,1406,16,1,0,0,0,1407,1408,5,59,0,0,1408,18,1,0,0,0,1409,1410, - 5,58,0,0,1410,20,1,0,0,0,1411,1412,5,42,0,0,1412,22,1,0,0,0,1413, - 1414,5,61,0,0,1414,24,1,0,0,0,1415,1416,5,46,0,0,1416,26,1,0,0,0, - 1417,1418,5,43,0,0,1418,28,1,0,0,0,1419,1420,5,45,0,0,1420,30,1, - 0,0,0,1421,1422,5,47,0,0,1422,32,1,0,0,0,1423,1424,5,94,0,0,1424, - 34,1,0,0,0,1425,1426,5,60,0,0,1426,36,1,0,0,0,1427,1428,5,62,0,0, - 1428,38,1,0,0,0,1429,1430,5,60,0,0,1430,1431,5,60,0,0,1431,40,1, - 0,0,0,1432,1433,5,62,0,0,1433,1434,5,62,0,0,1434,42,1,0,0,0,1435, - 1436,5,58,0,0,1436,1437,5,61,0,0,1437,44,1,0,0,0,1438,1439,5,60, - 0,0,1439,1440,5,61,0,0,1440,46,1,0,0,0,1441,1442,5,61,0,0,1442,1443, - 5,62,0,0,1443,48,1,0,0,0,1444,1445,5,62,0,0,1445,1446,5,61,0,0,1446, - 50,1,0,0,0,1447,1448,5,46,0,0,1448,1449,5,46,0,0,1449,52,1,0,0,0, - 1450,1451,5,60,0,0,1451,1452,5,62,0,0,1452,54,1,0,0,0,1453,1454, - 5,58,0,0,1454,1455,5,58,0,0,1455,56,1,0,0,0,1456,1457,5,37,0,0,1457, - 58,1,0,0,0,1458,1460,5,36,0,0,1459,1461,7,0,0,0,1460,1459,1,0,0, - 0,1461,1462,1,0,0,0,1462,1460,1,0,0,0,1462,1463,1,0,0,0,1463,60, - 1,0,0,0,1464,1480,3,65,30,0,1465,1469,5,43,0,0,1466,1467,5,45,0, - 0,1467,1469,4,28,0,0,1468,1465,1,0,0,0,1468,1466,1,0,0,0,1469,1470, - 1,0,0,0,1470,1468,1,0,0,0,1470,1471,1,0,0,0,1471,1475,1,0,0,0,1472, - 1476,3,65,30,0,1473,1474,5,47,0,0,1474,1476,4,28,1,0,1475,1472,1, - 0,0,0,1475,1473,1,0,0,0,1476,1480,1,0,0,0,1477,1478,5,47,0,0,1478, - 1480,4,28,2,0,1479,1464,1,0,0,0,1479,1468,1,0,0,0,1479,1477,1,0, - 0,0,1480,1481,1,0,0,0,1481,1479,1,0,0,0,1481,1482,1,0,0,0,1482,1485, - 1,0,0,0,1483,1485,7,1,0,0,1484,1479,1,0,0,0,1484,1483,1,0,0,0,1485, - 1486,1,0,0,0,1486,1487,6,28,0,0,1487,62,1,0,0,0,1488,1494,3,67,31, - 0,1489,1490,5,45,0,0,1490,1494,4,29,3,0,1491,1492,5,47,0,0,1492, - 1494,4,29,4,0,1493,1488,1,0,0,0,1493,1489,1,0,0,0,1493,1491,1,0, - 0,0,1494,1497,1,0,0,0,1495,1493,1,0,0,0,1495,1496,1,0,0,0,1496,1498, - 1,0,0,0,1497,1495,1,0,0,0,1498,1500,3,69,32,0,1499,1501,3,61,28, - 0,1500,1499,1,0,0,0,1500,1501,1,0,0,0,1501,1505,1,0,0,0,1502,1506, - 5,43,0,0,1503,1504,5,45,0,0,1504,1506,4,29,5,0,1505,1502,1,0,0,0, - 1505,1503,1,0,0,0,1506,1507,1,0,0,0,1507,1505,1,0,0,0,1507,1508, - 1,0,0,0,1508,1509,1,0,0,0,1509,1510,6,29,1,0,1510,64,1,0,0,0,1511, - 1512,7,2,0,0,1512,66,1,0,0,0,1513,1514,7,3,0,0,1514,68,1,0,0,0,1515, - 1516,7,4,0,0,1516,70,1,0,0,0,1517,1518,7,5,0,0,1518,1519,7,6,0,0, - 1519,1520,7,6,0,0,1520,72,1,0,0,0,1521,1522,7,5,0,0,1522,1523,7, - 7,0,0,1523,1524,7,5,0,0,1524,1525,7,6,0,0,1525,1526,7,8,0,0,1526, - 1527,7,9,0,0,1527,1528,7,10,0,0,1528,74,1,0,0,0,1529,1530,7,5,0, - 0,1530,1531,7,7,0,0,1531,1532,7,5,0,0,1532,1533,7,6,0,0,1533,1534, - 7,8,0,0,1534,1535,7,11,0,0,1535,1536,7,10,0,0,1536,76,1,0,0,0,1537, - 1538,7,5,0,0,1538,1539,7,7,0,0,1539,1540,7,12,0,0,1540,78,1,0,0, - 0,1541,1542,7,5,0,0,1542,1543,7,7,0,0,1543,1544,7,8,0,0,1544,80, - 1,0,0,0,1545,1546,7,5,0,0,1546,1547,7,13,0,0,1547,1548,7,13,0,0, - 1548,1549,7,5,0,0,1549,1550,7,8,0,0,1550,82,1,0,0,0,1551,1552,7, - 5,0,0,1552,1553,7,9,0,0,1553,84,1,0,0,0,1554,1555,7,5,0,0,1555,1556, - 7,9,0,0,1556,1557,7,14,0,0,1557,86,1,0,0,0,1558,1559,7,5,0,0,1559, - 1560,7,9,0,0,1560,1561,7,8,0,0,1561,1562,7,15,0,0,1562,1563,7,15, - 0,0,1563,1564,7,10,0,0,1564,1565,7,16,0,0,1565,1566,7,13,0,0,1566, - 1567,7,17,0,0,1567,1568,7,14,0,0,1568,88,1,0,0,0,1569,1570,7,18, - 0,0,1570,1571,7,19,0,0,1571,1572,7,16,0,0,1572,1573,7,20,0,0,1573, - 90,1,0,0,0,1574,1575,7,14,0,0,1575,1576,7,5,0,0,1576,1577,7,9,0, - 0,1577,1578,7,10,0,0,1578,92,1,0,0,0,1579,1580,7,14,0,0,1580,1581, - 7,5,0,0,1581,1582,7,9,0,0,1582,1583,7,16,0,0,1583,94,1,0,0,0,1584, - 1585,7,14,0,0,1585,1586,7,20,0,0,1586,1587,7,10,0,0,1587,1588,7, - 14,0,0,1588,1589,7,21,0,0,1589,96,1,0,0,0,1590,1591,7,14,0,0,1591, - 1592,7,19,0,0,1592,1593,7,6,0,0,1593,1594,7,6,0,0,1594,1595,7,5, - 0,0,1595,1596,7,16,0,0,1596,1597,7,10,0,0,1597,98,1,0,0,0,1598,1599, - 7,14,0,0,1599,1600,7,19,0,0,1600,1601,7,6,0,0,1601,1602,7,22,0,0, - 1602,1603,7,15,0,0,1603,1604,7,7,0,0,1604,100,1,0,0,0,1605,1606, - 7,14,0,0,1606,1607,7,19,0,0,1607,1608,7,7,0,0,1608,1609,7,9,0,0, - 1609,1610,7,16,0,0,1610,1611,7,13,0,0,1611,1612,7,5,0,0,1612,1613, - 7,17,0,0,1613,1614,7,7,0,0,1614,1615,7,16,0,0,1615,102,1,0,0,0,1616, - 1617,7,14,0,0,1617,1618,7,13,0,0,1618,1619,7,10,0,0,1619,1620,7, - 5,0,0,1620,1621,7,16,0,0,1621,1622,7,10,0,0,1622,104,1,0,0,0,1623, - 1624,7,14,0,0,1624,1625,7,22,0,0,1625,1626,7,13,0,0,1626,1627,7, - 13,0,0,1627,1628,7,10,0,0,1628,1629,7,7,0,0,1629,1630,7,16,0,0,1630, - 1631,5,95,0,0,1631,1632,7,14,0,0,1632,1633,7,5,0,0,1633,1634,7,16, - 0,0,1634,1635,7,5,0,0,1635,1636,7,6,0,0,1636,1637,7,19,0,0,1637, - 1638,7,23,0,0,1638,106,1,0,0,0,1639,1640,7,14,0,0,1640,1641,7,22, - 0,0,1641,1642,7,13,0,0,1642,1643,7,13,0,0,1643,1644,7,10,0,0,1644, - 1645,7,7,0,0,1645,1646,7,16,0,0,1646,1647,5,95,0,0,1647,1648,7,12, - 0,0,1648,1649,7,5,0,0,1649,1650,7,16,0,0,1650,1651,7,10,0,0,1651, - 108,1,0,0,0,1652,1653,7,14,0,0,1653,1654,7,22,0,0,1654,1655,7,13, - 0,0,1655,1656,7,13,0,0,1656,1657,7,10,0,0,1657,1658,7,7,0,0,1658, - 1659,7,16,0,0,1659,1660,5,95,0,0,1660,1661,7,13,0,0,1661,1662,7, - 19,0,0,1662,1663,7,6,0,0,1663,1664,7,10,0,0,1664,110,1,0,0,0,1665, - 1666,7,14,0,0,1666,1667,7,22,0,0,1667,1668,7,13,0,0,1668,1669,7, - 13,0,0,1669,1670,7,10,0,0,1670,1671,7,7,0,0,1671,1672,7,16,0,0,1672, - 1673,5,95,0,0,1673,1674,7,16,0,0,1674,1675,7,17,0,0,1675,1676,7, - 15,0,0,1676,1677,7,10,0,0,1677,112,1,0,0,0,1678,1679,7,14,0,0,1679, - 1680,7,22,0,0,1680,1681,7,13,0,0,1681,1682,7,13,0,0,1682,1683,7, - 10,0,0,1683,1684,7,7,0,0,1684,1685,7,16,0,0,1685,1686,5,95,0,0,1686, - 1687,7,16,0,0,1687,1688,7,17,0,0,1688,1689,7,15,0,0,1689,1690,7, - 10,0,0,1690,1691,7,9,0,0,1691,1692,7,16,0,0,1692,1693,7,5,0,0,1693, - 1694,7,15,0,0,1694,1695,7,24,0,0,1695,114,1,0,0,0,1696,1697,7,14, - 0,0,1697,1698,7,22,0,0,1698,1699,7,13,0,0,1699,1700,7,13,0,0,1700, - 1701,7,10,0,0,1701,1702,7,7,0,0,1702,1703,7,16,0,0,1703,1704,5,95, - 0,0,1704,1705,7,22,0,0,1705,1706,7,9,0,0,1706,1707,7,10,0,0,1707, - 1708,7,13,0,0,1708,116,1,0,0,0,1709,1710,7,12,0,0,1710,1711,7,10, - 0,0,1711,1712,7,25,0,0,1712,1713,7,5,0,0,1713,1714,7,22,0,0,1714, - 1715,7,6,0,0,1715,1716,7,16,0,0,1716,118,1,0,0,0,1717,1718,7,12, - 0,0,1718,1719,7,10,0,0,1719,1720,7,25,0,0,1720,1721,7,10,0,0,1721, - 1722,7,13,0,0,1722,1723,7,13,0,0,1723,1724,7,5,0,0,1724,1725,7,18, - 0,0,1725,1726,7,6,0,0,1726,1727,7,10,0,0,1727,120,1,0,0,0,1728,1729, - 7,12,0,0,1729,1730,7,10,0,0,1730,1731,7,9,0,0,1731,1732,7,14,0,0, - 1732,122,1,0,0,0,1733,1734,7,12,0,0,1734,1735,7,17,0,0,1735,1736, - 7,9,0,0,1736,1737,7,16,0,0,1737,1738,7,17,0,0,1738,1739,7,7,0,0, - 1739,1740,7,14,0,0,1740,1741,7,16,0,0,1741,124,1,0,0,0,1742,1743, - 7,12,0,0,1743,1744,7,19,0,0,1744,126,1,0,0,0,1745,1746,7,10,0,0, - 1746,1747,7,6,0,0,1747,1748,7,9,0,0,1748,1749,7,10,0,0,1749,128, - 1,0,0,0,1750,1751,7,10,0,0,1751,1752,7,26,0,0,1752,1753,7,14,0,0, - 1753,1754,7,10,0,0,1754,1755,7,24,0,0,1755,1756,7,16,0,0,1756,130, - 1,0,0,0,1757,1758,7,25,0,0,1758,1759,7,5,0,0,1759,1760,7,6,0,0,1760, - 1761,7,9,0,0,1761,1762,7,10,0,0,1762,132,1,0,0,0,1763,1764,7,25, - 0,0,1764,1765,7,10,0,0,1765,1766,7,16,0,0,1766,1767,7,14,0,0,1767, - 1768,7,20,0,0,1768,134,1,0,0,0,1769,1770,7,25,0,0,1770,1771,7,19, - 0,0,1771,1772,7,13,0,0,1772,136,1,0,0,0,1773,1774,7,25,0,0,1774, - 1775,7,19,0,0,1775,1776,7,13,0,0,1776,1777,7,10,0,0,1777,1778,7, - 17,0,0,1778,1779,7,23,0,0,1779,1780,7,7,0,0,1780,138,1,0,0,0,1781, - 1782,7,25,0,0,1782,1783,7,13,0,0,1783,1784,7,19,0,0,1784,1785,7, - 15,0,0,1785,140,1,0,0,0,1786,1787,7,23,0,0,1787,1788,7,13,0,0,1788, - 1789,7,5,0,0,1789,1790,7,7,0,0,1790,1791,7,16,0,0,1791,142,1,0,0, - 0,1792,1793,7,23,0,0,1793,1794,7,13,0,0,1794,1795,7,19,0,0,1795, - 1796,7,22,0,0,1796,1797,7,24,0,0,1797,144,1,0,0,0,1798,1799,7,20, - 0,0,1799,1800,7,5,0,0,1800,1801,7,27,0,0,1801,1802,7,17,0,0,1802, - 1803,7,7,0,0,1803,1804,7,23,0,0,1804,146,1,0,0,0,1805,1806,7,17, - 0,0,1806,1807,7,7,0,0,1807,148,1,0,0,0,1808,1809,7,17,0,0,1809,1810, - 7,7,0,0,1810,1811,7,17,0,0,1811,1812,7,16,0,0,1812,1813,7,17,0,0, - 1813,1814,7,5,0,0,1814,1815,7,6,0,0,1815,1816,7,6,0,0,1816,1817, - 7,8,0,0,1817,150,1,0,0,0,1818,1819,7,17,0,0,1819,1820,7,7,0,0,1820, - 1821,7,16,0,0,1821,1822,7,10,0,0,1822,1823,7,13,0,0,1823,1824,7, - 9,0,0,1824,1825,7,10,0,0,1825,1826,7,14,0,0,1826,1827,7,16,0,0,1827, - 152,1,0,0,0,1828,1829,7,17,0,0,1829,1830,7,7,0,0,1830,1831,7,16, - 0,0,1831,1832,7,19,0,0,1832,154,1,0,0,0,1833,1834,7,6,0,0,1834,1835, - 7,5,0,0,1835,1836,7,16,0,0,1836,1837,7,10,0,0,1837,1838,7,13,0,0, - 1838,1839,7,5,0,0,1839,1840,7,6,0,0,1840,156,1,0,0,0,1841,1842,7, - 6,0,0,1842,1843,7,10,0,0,1843,1844,7,5,0,0,1844,1845,7,12,0,0,1845, - 1846,7,17,0,0,1846,1847,7,7,0,0,1847,1848,7,23,0,0,1848,158,1,0, - 0,0,1849,1850,7,6,0,0,1850,1851,7,17,0,0,1851,1852,7,15,0,0,1852, - 1853,7,17,0,0,1853,1854,7,16,0,0,1854,160,1,0,0,0,1855,1856,7,6, - 0,0,1856,1857,7,19,0,0,1857,1858,7,14,0,0,1858,1859,7,5,0,0,1859, - 1860,7,6,0,0,1860,1861,7,16,0,0,1861,1862,7,17,0,0,1862,1863,7,15, - 0,0,1863,1864,7,10,0,0,1864,162,1,0,0,0,1865,1866,7,6,0,0,1866,1867, - 7,19,0,0,1867,1868,7,14,0,0,1868,1869,7,5,0,0,1869,1870,7,6,0,0, - 1870,1871,7,16,0,0,1871,1872,7,17,0,0,1872,1873,7,15,0,0,1873,1874, - 7,10,0,0,1874,1875,7,9,0,0,1875,1876,7,16,0,0,1876,1877,7,5,0,0, - 1877,1878,7,15,0,0,1878,1879,7,24,0,0,1879,164,1,0,0,0,1880,1881, - 7,7,0,0,1881,1882,7,19,0,0,1882,1883,7,16,0,0,1883,166,1,0,0,0,1884, - 1885,7,7,0,0,1885,1886,7,22,0,0,1886,1887,7,6,0,0,1887,1888,7,6, - 0,0,1888,168,1,0,0,0,1889,1890,7,19,0,0,1890,1891,7,25,0,0,1891, - 1892,7,25,0,0,1892,1893,7,9,0,0,1893,1894,7,10,0,0,1894,1895,7,16, - 0,0,1895,170,1,0,0,0,1896,1897,7,19,0,0,1897,1898,7,7,0,0,1898,172, - 1,0,0,0,1899,1900,7,19,0,0,1900,1901,7,7,0,0,1901,1902,7,6,0,0,1902, - 1903,7,8,0,0,1903,174,1,0,0,0,1904,1905,7,19,0,0,1905,1906,7,13, - 0,0,1906,176,1,0,0,0,1907,1908,7,19,0,0,1908,1909,7,13,0,0,1909, - 1910,7,12,0,0,1910,1911,7,10,0,0,1911,1912,7,13,0,0,1912,178,1,0, - 0,0,1913,1914,7,24,0,0,1914,1915,7,6,0,0,1915,1916,7,5,0,0,1916, - 1917,7,14,0,0,1917,1918,7,17,0,0,1918,1919,7,7,0,0,1919,1920,7,23, - 0,0,1920,180,1,0,0,0,1921,1922,7,24,0,0,1922,1923,7,13,0,0,1923, - 1924,7,17,0,0,1924,1925,7,15,0,0,1925,1926,7,5,0,0,1926,1927,7,13, - 0,0,1927,1928,7,8,0,0,1928,182,1,0,0,0,1929,1930,7,13,0,0,1930,1931, - 7,10,0,0,1931,1932,7,25,0,0,1932,1933,7,10,0,0,1933,1934,7,13,0, - 0,1934,1935,7,10,0,0,1935,1936,7,7,0,0,1936,1937,7,14,0,0,1937,1938, - 7,10,0,0,1938,1939,7,9,0,0,1939,184,1,0,0,0,1940,1941,7,13,0,0,1941, - 1942,7,10,0,0,1942,1943,7,16,0,0,1943,1944,7,22,0,0,1944,1945,7, - 13,0,0,1945,1946,7,7,0,0,1946,1947,7,17,0,0,1947,1948,7,7,0,0,1948, - 1949,7,23,0,0,1949,186,1,0,0,0,1950,1951,7,9,0,0,1951,1952,7,10, - 0,0,1952,1953,7,6,0,0,1953,1954,7,10,0,0,1954,1955,7,14,0,0,1955, - 1956,7,16,0,0,1956,188,1,0,0,0,1957,1958,7,9,0,0,1958,1959,7,10, - 0,0,1959,1960,7,9,0,0,1960,1961,7,9,0,0,1961,1962,7,17,0,0,1962, - 1963,7,19,0,0,1963,1964,7,7,0,0,1964,1965,5,95,0,0,1965,1966,7,22, - 0,0,1966,1967,7,9,0,0,1967,1968,7,10,0,0,1968,1969,7,13,0,0,1969, - 190,1,0,0,0,1970,1971,7,9,0,0,1971,1972,7,19,0,0,1972,1973,7,15, - 0,0,1973,1974,7,10,0,0,1974,192,1,0,0,0,1975,1976,7,9,0,0,1976,1977, - 7,8,0,0,1977,1978,7,15,0,0,1978,1979,7,15,0,0,1979,1980,7,10,0,0, - 1980,1981,7,16,0,0,1981,1982,7,13,0,0,1982,1983,7,17,0,0,1983,1984, - 7,14,0,0,1984,194,1,0,0,0,1985,1986,7,16,0,0,1986,1987,7,5,0,0,1987, - 1988,7,18,0,0,1988,1989,7,6,0,0,1989,1990,7,10,0,0,1990,196,1,0, - 0,0,1991,1992,7,16,0,0,1992,1993,7,20,0,0,1993,1994,7,10,0,0,1994, - 1995,7,7,0,0,1995,198,1,0,0,0,1996,1997,7,16,0,0,1997,1998,7,19, - 0,0,1998,200,1,0,0,0,1999,2000,7,16,0,0,2000,2001,7,13,0,0,2001, - 2002,7,5,0,0,2002,2003,7,17,0,0,2003,2004,7,6,0,0,2004,2005,7,17, - 0,0,2005,2006,7,7,0,0,2006,2007,7,23,0,0,2007,202,1,0,0,0,2008,2009, - 7,16,0,0,2009,2010,7,13,0,0,2010,2011,7,22,0,0,2011,2012,7,10,0, - 0,2012,204,1,0,0,0,2013,2014,7,22,0,0,2014,2015,7,7,0,0,2015,2016, - 7,17,0,0,2016,2017,7,19,0,0,2017,2018,7,7,0,0,2018,206,1,0,0,0,2019, - 2020,7,22,0,0,2020,2021,7,7,0,0,2021,2022,7,17,0,0,2022,2023,7,28, - 0,0,2023,2024,7,22,0,0,2024,2025,7,10,0,0,2025,208,1,0,0,0,2026, - 2027,7,22,0,0,2027,2028,7,9,0,0,2028,2029,7,10,0,0,2029,2030,7,13, - 0,0,2030,210,1,0,0,0,2031,2032,7,22,0,0,2032,2033,7,9,0,0,2033,2034, - 7,17,0,0,2034,2035,7,7,0,0,2035,2036,7,23,0,0,2036,212,1,0,0,0,2037, - 2038,7,27,0,0,2038,2039,7,5,0,0,2039,2040,7,13,0,0,2040,2041,7,17, - 0,0,2041,2042,7,5,0,0,2042,2043,7,12,0,0,2043,2044,7,17,0,0,2044, - 2045,7,14,0,0,2045,214,1,0,0,0,2046,2047,7,29,0,0,2047,2048,7,20, - 0,0,2048,2049,7,10,0,0,2049,2050,7,7,0,0,2050,216,1,0,0,0,2051,2052, - 7,29,0,0,2052,2053,7,20,0,0,2053,2054,7,10,0,0,2054,2055,7,13,0, - 0,2055,2056,7,10,0,0,2056,218,1,0,0,0,2057,2058,7,29,0,0,2058,2059, - 7,17,0,0,2059,2060,7,7,0,0,2060,2061,7,12,0,0,2061,2062,7,19,0,0, - 2062,2063,7,29,0,0,2063,220,1,0,0,0,2064,2065,7,29,0,0,2065,2066, - 7,17,0,0,2066,2067,7,16,0,0,2067,2068,7,20,0,0,2068,222,1,0,0,0, - 2069,2070,7,5,0,0,2070,2071,7,22,0,0,2071,2072,7,16,0,0,2072,2073, - 7,20,0,0,2073,2074,7,19,0,0,2074,2075,7,13,0,0,2075,2076,7,17,0, - 0,2076,2077,7,11,0,0,2077,2078,7,5,0,0,2078,2079,7,16,0,0,2079,2080, - 7,17,0,0,2080,2081,7,19,0,0,2081,2082,7,7,0,0,2082,224,1,0,0,0,2083, - 2084,7,18,0,0,2084,2085,7,17,0,0,2085,2086,7,7,0,0,2086,2087,7,5, - 0,0,2087,2088,7,13,0,0,2088,2089,7,8,0,0,2089,226,1,0,0,0,2090,2091, - 7,14,0,0,2091,2092,7,19,0,0,2092,2093,7,6,0,0,2093,2094,7,6,0,0, - 2094,2095,7,5,0,0,2095,2096,7,16,0,0,2096,2097,7,17,0,0,2097,2098, - 7,19,0,0,2098,2099,7,7,0,0,2099,228,1,0,0,0,2100,2101,7,14,0,0,2101, - 2102,7,19,0,0,2102,2103,7,7,0,0,2103,2104,7,14,0,0,2104,2105,7,22, - 0,0,2105,2106,7,13,0,0,2106,2107,7,13,0,0,2107,2108,7,10,0,0,2108, - 2109,7,7,0,0,2109,2110,7,16,0,0,2110,2111,7,6,0,0,2111,2112,7,8, - 0,0,2112,230,1,0,0,0,2113,2114,7,14,0,0,2114,2115,7,13,0,0,2115, - 2116,7,19,0,0,2116,2117,7,9,0,0,2117,2118,7,9,0,0,2118,232,1,0,0, - 0,2119,2120,7,14,0,0,2120,2121,7,22,0,0,2121,2122,7,13,0,0,2122, - 2123,7,13,0,0,2123,2124,7,10,0,0,2124,2125,7,7,0,0,2125,2126,7,16, - 0,0,2126,2127,5,95,0,0,2127,2128,7,9,0,0,2128,2129,7,14,0,0,2129, - 2130,7,20,0,0,2130,2131,7,10,0,0,2131,2132,7,15,0,0,2132,2133,7, - 5,0,0,2133,234,1,0,0,0,2134,2135,7,25,0,0,2135,2136,7,13,0,0,2136, - 2137,7,10,0,0,2137,2138,7,10,0,0,2138,2139,7,11,0,0,2139,2140,7, - 10,0,0,2140,236,1,0,0,0,2141,2142,7,25,0,0,2142,2143,7,22,0,0,2143, - 2144,7,6,0,0,2144,2145,7,6,0,0,2145,238,1,0,0,0,2146,2147,7,17,0, - 0,2147,2148,7,6,0,0,2148,2149,7,17,0,0,2149,2150,7,21,0,0,2150,2151, - 7,10,0,0,2151,240,1,0,0,0,2152,2153,7,17,0,0,2153,2154,7,7,0,0,2154, - 2155,7,7,0,0,2155,2156,7,10,0,0,2156,2157,7,13,0,0,2157,242,1,0, - 0,0,2158,2159,7,17,0,0,2159,2160,7,9,0,0,2160,244,1,0,0,0,2161,2162, - 7,17,0,0,2162,2163,7,9,0,0,2163,2164,7,7,0,0,2164,2165,7,22,0,0, - 2165,2166,7,6,0,0,2166,2167,7,6,0,0,2167,246,1,0,0,0,2168,2169,7, - 30,0,0,2169,2170,7,19,0,0,2170,2171,7,17,0,0,2171,2172,7,7,0,0,2172, - 248,1,0,0,0,2173,2174,7,6,0,0,2174,2175,7,10,0,0,2175,2176,7,25, - 0,0,2176,2177,7,16,0,0,2177,250,1,0,0,0,2178,2179,7,6,0,0,2179,2180, - 7,17,0,0,2180,2181,7,21,0,0,2181,2182,7,10,0,0,2182,252,1,0,0,0, - 2183,2184,7,7,0,0,2184,2185,7,5,0,0,2185,2186,7,16,0,0,2186,2187, - 7,22,0,0,2187,2188,7,13,0,0,2188,2189,7,5,0,0,2189,2190,7,6,0,0, - 2190,254,1,0,0,0,2191,2192,7,7,0,0,2192,2193,7,19,0,0,2193,2194, - 7,16,0,0,2194,2195,7,7,0,0,2195,2196,7,22,0,0,2196,2197,7,6,0,0, - 2197,2198,7,6,0,0,2198,256,1,0,0,0,2199,2200,7,19,0,0,2200,2201, - 7,22,0,0,2201,2202,7,16,0,0,2202,2203,7,10,0,0,2203,2204,7,13,0, - 0,2204,258,1,0,0,0,2205,2206,7,19,0,0,2206,2207,7,27,0,0,2207,2208, - 7,10,0,0,2208,2209,7,13,0,0,2209,260,1,0,0,0,2210,2211,7,19,0,0, - 2211,2212,7,27,0,0,2212,2213,7,10,0,0,2213,2214,7,13,0,0,2214,2215, - 7,6,0,0,2215,2216,7,5,0,0,2216,2217,7,24,0,0,2217,2218,7,9,0,0,2218, - 262,1,0,0,0,2219,2220,7,13,0,0,2220,2221,7,17,0,0,2221,2222,7,23, - 0,0,2222,2223,7,20,0,0,2223,2224,7,16,0,0,2224,264,1,0,0,0,2225, - 2226,7,9,0,0,2226,2227,7,17,0,0,2227,2228,7,15,0,0,2228,2229,7,17, - 0,0,2229,2230,7,6,0,0,2230,2231,7,5,0,0,2231,2232,7,13,0,0,2232, - 266,1,0,0,0,2233,2234,7,27,0,0,2234,2235,7,10,0,0,2235,2236,7,13, - 0,0,2236,2237,7,18,0,0,2237,2238,7,19,0,0,2238,2239,7,9,0,0,2239, - 2240,7,10,0,0,2240,268,1,0,0,0,2241,2242,7,5,0,0,2242,2243,7,18, - 0,0,2243,2244,7,19,0,0,2244,2245,7,13,0,0,2245,2246,7,16,0,0,2246, - 270,1,0,0,0,2247,2248,7,5,0,0,2248,2249,7,18,0,0,2249,2250,7,9,0, - 0,2250,2251,7,19,0,0,2251,2252,7,6,0,0,2252,2253,7,22,0,0,2253,2254, - 7,16,0,0,2254,2255,7,10,0,0,2255,272,1,0,0,0,2256,2257,7,5,0,0,2257, - 2258,7,14,0,0,2258,2259,7,14,0,0,2259,2260,7,10,0,0,2260,2261,7, - 9,0,0,2261,2262,7,9,0,0,2262,274,1,0,0,0,2263,2264,7,5,0,0,2264, - 2265,7,14,0,0,2265,2266,7,16,0,0,2266,2267,7,17,0,0,2267,2268,7, - 19,0,0,2268,2269,7,7,0,0,2269,276,1,0,0,0,2270,2271,7,5,0,0,2271, - 2272,7,12,0,0,2272,2273,7,12,0,0,2273,278,1,0,0,0,2274,2275,7,5, - 0,0,2275,2276,7,12,0,0,2276,2277,7,15,0,0,2277,2278,7,17,0,0,2278, - 2279,7,7,0,0,2279,280,1,0,0,0,2280,2281,7,5,0,0,2281,2282,7,25,0, - 0,2282,2283,7,16,0,0,2283,2284,7,10,0,0,2284,2285,7,13,0,0,2285, - 282,1,0,0,0,2286,2287,7,5,0,0,2287,2288,7,23,0,0,2288,2289,7,23, - 0,0,2289,2290,7,13,0,0,2290,2291,7,10,0,0,2291,2292,7,23,0,0,2292, - 2293,7,5,0,0,2293,2294,7,16,0,0,2294,2295,7,10,0,0,2295,284,1,0, - 0,0,2296,2297,7,5,0,0,2297,2298,7,6,0,0,2298,2299,7,9,0,0,2299,2300, - 7,19,0,0,2300,286,1,0,0,0,2301,2302,7,5,0,0,2302,2303,7,6,0,0,2303, - 2304,7,16,0,0,2304,2305,7,10,0,0,2305,2306,7,13,0,0,2306,288,1,0, - 0,0,2307,2308,7,5,0,0,2308,2309,7,6,0,0,2309,2310,7,29,0,0,2310, - 2311,7,5,0,0,2311,2312,7,8,0,0,2312,2313,7,9,0,0,2313,290,1,0,0, - 0,2314,2315,7,5,0,0,2315,2316,7,9,0,0,2316,2317,7,9,0,0,2317,2318, - 7,10,0,0,2318,2319,7,13,0,0,2319,2320,7,16,0,0,2320,2321,7,17,0, - 0,2321,2322,7,19,0,0,2322,2323,7,7,0,0,2323,292,1,0,0,0,2324,2325, - 7,5,0,0,2325,2326,7,9,0,0,2326,2327,7,9,0,0,2327,2328,7,17,0,0,2328, - 2329,7,23,0,0,2329,2330,7,7,0,0,2330,2331,7,15,0,0,2331,2332,7,10, - 0,0,2332,2333,7,7,0,0,2333,2334,7,16,0,0,2334,294,1,0,0,0,2335,2336, - 7,5,0,0,2336,2337,7,16,0,0,2337,296,1,0,0,0,2338,2339,7,5,0,0,2339, - 2340,7,16,0,0,2340,2341,7,16,0,0,2341,2342,7,13,0,0,2342,2343,7, - 17,0,0,2343,2344,7,18,0,0,2344,2345,7,22,0,0,2345,2346,7,16,0,0, - 2346,2347,7,10,0,0,2347,298,1,0,0,0,2348,2349,7,18,0,0,2349,2350, - 7,5,0,0,2350,2351,7,14,0,0,2351,2352,7,21,0,0,2352,2353,7,29,0,0, - 2353,2354,7,5,0,0,2354,2355,7,13,0,0,2355,2356,7,12,0,0,2356,300, - 1,0,0,0,2357,2358,7,18,0,0,2358,2359,7,10,0,0,2359,2360,7,25,0,0, - 2360,2361,7,19,0,0,2361,2362,7,13,0,0,2362,2363,7,10,0,0,2363,302, - 1,0,0,0,2364,2365,7,18,0,0,2365,2366,7,10,0,0,2366,2367,7,23,0,0, - 2367,2368,7,17,0,0,2368,2369,7,7,0,0,2369,304,1,0,0,0,2370,2371, - 7,18,0,0,2371,2372,7,8,0,0,2372,306,1,0,0,0,2373,2374,7,14,0,0,2374, - 2375,7,5,0,0,2375,2376,7,14,0,0,2376,2377,7,20,0,0,2377,2378,7,10, - 0,0,2378,308,1,0,0,0,2379,2380,7,14,0,0,2380,2381,7,5,0,0,2381,2382, - 7,6,0,0,2382,2383,7,6,0,0,2383,2384,7,10,0,0,2384,2385,7,12,0,0, - 2385,310,1,0,0,0,2386,2387,7,14,0,0,2387,2388,7,5,0,0,2388,2389, - 7,9,0,0,2389,2390,7,14,0,0,2390,2391,7,5,0,0,2391,2392,7,12,0,0, - 2392,2393,7,10,0,0,2393,312,1,0,0,0,2394,2395,7,14,0,0,2395,2396, - 7,5,0,0,2396,2397,7,9,0,0,2397,2398,7,14,0,0,2398,2399,7,5,0,0,2399, - 2400,7,12,0,0,2400,2401,7,10,0,0,2401,2402,7,12,0,0,2402,314,1,0, - 0,0,2403,2404,7,14,0,0,2404,2405,7,5,0,0,2405,2406,7,16,0,0,2406, - 2407,7,5,0,0,2407,2408,7,6,0,0,2408,2409,7,19,0,0,2409,2410,7,23, - 0,0,2410,316,1,0,0,0,2411,2412,7,14,0,0,2412,2413,7,20,0,0,2413, - 2414,7,5,0,0,2414,2415,7,17,0,0,2415,2416,7,7,0,0,2416,318,1,0,0, - 0,2417,2418,7,14,0,0,2418,2419,7,20,0,0,2419,2420,7,5,0,0,2420,2421, - 7,13,0,0,2421,2422,7,5,0,0,2422,2423,7,14,0,0,2423,2424,7,16,0,0, - 2424,2425,7,10,0,0,2425,2426,7,13,0,0,2426,2427,7,17,0,0,2427,2428, - 7,9,0,0,2428,2429,7,16,0,0,2429,2430,7,17,0,0,2430,2431,7,14,0,0, - 2431,2432,7,9,0,0,2432,320,1,0,0,0,2433,2434,7,14,0,0,2434,2435, - 7,20,0,0,2435,2436,7,10,0,0,2436,2437,7,14,0,0,2437,2438,7,21,0, - 0,2438,2439,7,24,0,0,2439,2440,7,19,0,0,2440,2441,7,17,0,0,2441, - 2442,7,7,0,0,2442,2443,7,16,0,0,2443,322,1,0,0,0,2444,2445,7,14, - 0,0,2445,2446,7,6,0,0,2446,2447,7,5,0,0,2447,2448,7,9,0,0,2448,2449, - 7,9,0,0,2449,324,1,0,0,0,2450,2451,7,14,0,0,2451,2452,7,6,0,0,2452, - 2453,7,19,0,0,2453,2454,7,9,0,0,2454,2455,7,10,0,0,2455,326,1,0, - 0,0,2456,2457,7,14,0,0,2457,2458,7,6,0,0,2458,2459,7,22,0,0,2459, - 2460,7,9,0,0,2460,2461,7,16,0,0,2461,2462,7,10,0,0,2462,2463,7,13, - 0,0,2463,328,1,0,0,0,2464,2465,7,14,0,0,2465,2466,7,19,0,0,2466, - 2467,7,15,0,0,2467,2468,7,15,0,0,2468,2469,7,10,0,0,2469,2470,7, - 7,0,0,2470,2471,7,16,0,0,2471,330,1,0,0,0,2472,2473,7,14,0,0,2473, - 2474,7,19,0,0,2474,2475,7,15,0,0,2475,2476,7,15,0,0,2476,2477,7, - 10,0,0,2477,2478,7,7,0,0,2478,2479,7,16,0,0,2479,2480,7,9,0,0,2480, - 332,1,0,0,0,2481,2482,7,14,0,0,2482,2483,7,19,0,0,2483,2484,7,15, - 0,0,2484,2485,7,15,0,0,2485,2486,7,17,0,0,2486,2487,7,16,0,0,2487, - 334,1,0,0,0,2488,2489,7,14,0,0,2489,2490,7,19,0,0,2490,2491,7,15, - 0,0,2491,2492,7,15,0,0,2492,2493,7,17,0,0,2493,2494,7,16,0,0,2494, - 2495,7,16,0,0,2495,2496,7,10,0,0,2496,2497,7,12,0,0,2497,336,1,0, - 0,0,2498,2499,7,14,0,0,2499,2500,7,19,0,0,2500,2501,7,7,0,0,2501, - 2502,7,25,0,0,2502,2503,7,17,0,0,2503,2504,7,23,0,0,2504,2505,7, - 22,0,0,2505,2506,7,13,0,0,2506,2507,7,5,0,0,2507,2508,7,16,0,0,2508, - 2509,7,17,0,0,2509,2510,7,19,0,0,2510,2511,7,7,0,0,2511,338,1,0, - 0,0,2512,2513,7,14,0,0,2513,2514,7,19,0,0,2514,2515,7,7,0,0,2515, - 2516,7,7,0,0,2516,2517,7,10,0,0,2517,2518,7,14,0,0,2518,2519,7,16, - 0,0,2519,2520,7,17,0,0,2520,2521,7,19,0,0,2521,2522,7,7,0,0,2522, - 340,1,0,0,0,2523,2524,7,14,0,0,2524,2525,7,19,0,0,2525,2526,7,7, - 0,0,2526,2527,7,9,0,0,2527,2528,7,16,0,0,2528,2529,7,13,0,0,2529, - 2530,7,5,0,0,2530,2531,7,17,0,0,2531,2532,7,7,0,0,2532,2533,7,16, - 0,0,2533,2534,7,9,0,0,2534,342,1,0,0,0,2535,2536,7,14,0,0,2536,2537, - 7,19,0,0,2537,2538,7,7,0,0,2538,2539,7,16,0,0,2539,2540,7,10,0,0, - 2540,2541,7,7,0,0,2541,2542,7,16,0,0,2542,344,1,0,0,0,2543,2544, - 7,14,0,0,2544,2545,7,19,0,0,2545,2546,7,7,0,0,2546,2547,7,16,0,0, - 2547,2548,7,17,0,0,2548,2549,7,7,0,0,2549,2550,7,22,0,0,2550,2551, - 7,10,0,0,2551,346,1,0,0,0,2552,2553,7,14,0,0,2553,2554,7,19,0,0, - 2554,2555,7,7,0,0,2555,2556,7,27,0,0,2556,2557,7,10,0,0,2557,2558, - 7,13,0,0,2558,2559,7,9,0,0,2559,2560,7,17,0,0,2560,2561,7,19,0,0, - 2561,2562,7,7,0,0,2562,348,1,0,0,0,2563,2564,7,14,0,0,2564,2565, - 7,19,0,0,2565,2566,7,24,0,0,2566,2567,7,8,0,0,2567,350,1,0,0,0,2568, - 2569,7,14,0,0,2569,2570,7,19,0,0,2570,2571,7,9,0,0,2571,2572,7,16, - 0,0,2572,352,1,0,0,0,2573,2574,7,14,0,0,2574,2575,7,9,0,0,2575,2576, - 7,27,0,0,2576,354,1,0,0,0,2577,2578,7,14,0,0,2578,2579,7,22,0,0, - 2579,2580,7,13,0,0,2580,2581,7,9,0,0,2581,2582,7,19,0,0,2582,2583, - 7,13,0,0,2583,356,1,0,0,0,2584,2585,7,14,0,0,2585,2586,7,8,0,0,2586, - 2587,7,14,0,0,2587,2588,7,6,0,0,2588,2589,7,10,0,0,2589,358,1,0, - 0,0,2590,2591,7,12,0,0,2591,2592,7,5,0,0,2592,2593,7,16,0,0,2593, - 2594,7,5,0,0,2594,360,1,0,0,0,2595,2596,7,12,0,0,2596,2597,7,5,0, - 0,2597,2598,7,16,0,0,2598,2599,7,5,0,0,2599,2600,7,18,0,0,2600,2601, - 7,5,0,0,2601,2602,7,9,0,0,2602,2603,7,10,0,0,2603,362,1,0,0,0,2604, - 2605,7,12,0,0,2605,2606,7,5,0,0,2606,2607,7,8,0,0,2607,364,1,0,0, - 0,2608,2609,7,12,0,0,2609,2610,7,10,0,0,2610,2611,7,5,0,0,2611,2612, - 7,6,0,0,2612,2613,7,6,0,0,2613,2614,7,19,0,0,2614,2615,7,14,0,0, - 2615,2616,7,5,0,0,2616,2617,7,16,0,0,2617,2618,7,10,0,0,2618,366, - 1,0,0,0,2619,2620,7,12,0,0,2620,2621,7,10,0,0,2621,2622,7,14,0,0, - 2622,2623,7,6,0,0,2623,2624,7,5,0,0,2624,2625,7,13,0,0,2625,2626, - 7,10,0,0,2626,368,1,0,0,0,2627,2628,7,12,0,0,2628,2629,7,10,0,0, - 2629,2630,7,25,0,0,2630,2631,7,5,0,0,2631,2632,7,22,0,0,2632,2633, - 7,6,0,0,2633,2634,7,16,0,0,2634,2635,7,9,0,0,2635,370,1,0,0,0,2636, - 2637,7,12,0,0,2637,2638,7,10,0,0,2638,2639,7,25,0,0,2639,2640,7, - 10,0,0,2640,2641,7,13,0,0,2641,2642,7,13,0,0,2642,2643,7,10,0,0, - 2643,2644,7,12,0,0,2644,372,1,0,0,0,2645,2646,7,12,0,0,2646,2647, - 7,10,0,0,2647,2648,7,25,0,0,2648,2649,7,17,0,0,2649,2650,7,7,0,0, - 2650,2651,7,10,0,0,2651,2652,7,13,0,0,2652,374,1,0,0,0,2653,2654, - 7,12,0,0,2654,2655,7,10,0,0,2655,2656,7,6,0,0,2656,2657,7,10,0,0, - 2657,2658,7,16,0,0,2658,2659,7,10,0,0,2659,376,1,0,0,0,2660,2661, - 7,12,0,0,2661,2662,7,10,0,0,2662,2663,7,6,0,0,2663,2664,7,17,0,0, - 2664,2665,7,15,0,0,2665,2666,7,17,0,0,2666,2667,7,16,0,0,2667,2668, - 7,10,0,0,2668,2669,7,13,0,0,2669,378,1,0,0,0,2670,2671,7,12,0,0, - 2671,2672,7,10,0,0,2672,2673,7,6,0,0,2673,2674,7,17,0,0,2674,2675, - 7,15,0,0,2675,2676,7,17,0,0,2676,2677,7,16,0,0,2677,2678,7,10,0, - 0,2678,2679,7,13,0,0,2679,2680,7,9,0,0,2680,380,1,0,0,0,2681,2682, - 7,12,0,0,2682,2683,7,17,0,0,2683,2684,7,14,0,0,2684,2685,7,16,0, - 0,2685,2686,7,17,0,0,2686,2687,7,19,0,0,2687,2688,7,7,0,0,2688,2689, - 7,5,0,0,2689,2690,7,13,0,0,2690,2691,7,8,0,0,2691,382,1,0,0,0,2692, - 2693,7,12,0,0,2693,2694,7,17,0,0,2694,2695,7,9,0,0,2695,2696,7,5, - 0,0,2696,2697,7,18,0,0,2697,2698,7,6,0,0,2698,2699,7,10,0,0,2699, - 384,1,0,0,0,2700,2701,7,12,0,0,2701,2702,7,17,0,0,2702,2703,7,9, - 0,0,2703,2704,7,14,0,0,2704,2705,7,5,0,0,2705,2706,7,13,0,0,2706, - 2707,7,12,0,0,2707,386,1,0,0,0,2708,2709,7,12,0,0,2709,2710,7,19, - 0,0,2710,2711,7,14,0,0,2711,2712,7,22,0,0,2712,2713,7,15,0,0,2713, - 2714,7,10,0,0,2714,2715,7,7,0,0,2715,2716,7,16,0,0,2716,388,1,0, - 0,0,2717,2718,7,12,0,0,2718,2719,7,19,0,0,2719,2720,7,15,0,0,2720, - 2721,7,5,0,0,2721,2722,7,17,0,0,2722,2723,7,7,0,0,2723,390,1,0,0, - 0,2724,2725,7,12,0,0,2725,2726,7,19,0,0,2726,2727,7,22,0,0,2727, - 2728,7,18,0,0,2728,2729,7,6,0,0,2729,2730,7,10,0,0,2730,392,1,0, - 0,0,2731,2732,7,12,0,0,2732,2733,7,13,0,0,2733,2734,7,19,0,0,2734, - 2735,7,24,0,0,2735,394,1,0,0,0,2736,2737,7,10,0,0,2737,2738,7,5, - 0,0,2738,2739,7,14,0,0,2739,2740,7,20,0,0,2740,396,1,0,0,0,2741, - 2742,7,10,0,0,2742,2743,7,7,0,0,2743,2744,7,5,0,0,2744,2745,7,18, - 0,0,2745,2746,7,6,0,0,2746,2747,7,10,0,0,2747,398,1,0,0,0,2748,2749, - 7,10,0,0,2749,2750,7,7,0,0,2750,2751,7,14,0,0,2751,2752,7,19,0,0, - 2752,2753,7,12,0,0,2753,2754,7,17,0,0,2754,2755,7,7,0,0,2755,2756, - 7,23,0,0,2756,400,1,0,0,0,2757,2758,7,10,0,0,2758,2759,7,7,0,0,2759, - 2760,7,14,0,0,2760,2761,7,13,0,0,2761,2762,7,8,0,0,2762,2763,7,24, - 0,0,2763,2764,7,16,0,0,2764,2765,7,10,0,0,2765,2766,7,12,0,0,2766, - 402,1,0,0,0,2767,2768,7,10,0,0,2768,2769,7,7,0,0,2769,2770,7,22, - 0,0,2770,2771,7,15,0,0,2771,404,1,0,0,0,2772,2773,7,10,0,0,2773, - 2774,7,9,0,0,2774,2775,7,14,0,0,2775,2776,7,5,0,0,2776,2777,7,24, - 0,0,2777,2778,7,10,0,0,2778,406,1,0,0,0,2779,2780,7,10,0,0,2780, - 2781,7,27,0,0,2781,2782,7,10,0,0,2782,2783,7,7,0,0,2783,2784,7,16, - 0,0,2784,408,1,0,0,0,2785,2786,7,10,0,0,2786,2787,7,26,0,0,2787, - 2788,7,14,0,0,2788,2789,7,6,0,0,2789,2790,7,22,0,0,2790,2791,7,12, - 0,0,2791,2792,7,10,0,0,2792,410,1,0,0,0,2793,2794,7,10,0,0,2794, - 2795,7,26,0,0,2795,2796,7,14,0,0,2796,2797,7,6,0,0,2797,2798,7,22, - 0,0,2798,2799,7,12,0,0,2799,2800,7,17,0,0,2800,2801,7,7,0,0,2801, - 2802,7,23,0,0,2802,412,1,0,0,0,2803,2804,7,10,0,0,2804,2805,7,26, - 0,0,2805,2806,7,14,0,0,2806,2807,7,6,0,0,2807,2808,7,22,0,0,2808, - 2809,7,9,0,0,2809,2810,7,17,0,0,2810,2811,7,27,0,0,2811,2812,7,10, - 0,0,2812,414,1,0,0,0,2813,2814,7,10,0,0,2814,2815,7,26,0,0,2815, - 2816,7,10,0,0,2816,2817,7,14,0,0,2817,2818,7,22,0,0,2818,2819,7, - 16,0,0,2819,2820,7,10,0,0,2820,416,1,0,0,0,2821,2822,7,10,0,0,2822, - 2823,7,26,0,0,2823,2824,7,24,0,0,2824,2825,7,6,0,0,2825,2826,7,5, - 0,0,2826,2827,7,17,0,0,2827,2828,7,7,0,0,2828,418,1,0,0,0,2829,2830, - 7,10,0,0,2830,2831,7,26,0,0,2831,2832,7,16,0,0,2832,2833,7,10,0, - 0,2833,2834,7,7,0,0,2834,2835,7,9,0,0,2835,2836,7,17,0,0,2836,2837, - 7,19,0,0,2837,2838,7,7,0,0,2838,420,1,0,0,0,2839,2840,7,10,0,0,2840, - 2841,7,26,0,0,2841,2842,7,16,0,0,2842,2843,7,10,0,0,2843,2844,7, - 13,0,0,2844,2845,7,7,0,0,2845,2846,7,5,0,0,2846,2847,7,6,0,0,2847, - 422,1,0,0,0,2848,2849,7,25,0,0,2849,2850,7,5,0,0,2850,2851,7,15, - 0,0,2851,2852,7,17,0,0,2852,2853,7,6,0,0,2853,2854,7,8,0,0,2854, - 424,1,0,0,0,2855,2856,7,25,0,0,2856,2857,7,17,0,0,2857,2858,7,13, - 0,0,2858,2859,7,9,0,0,2859,2860,7,16,0,0,2860,426,1,0,0,0,2861,2862, - 7,25,0,0,2862,2863,7,19,0,0,2863,2864,7,6,0,0,2864,2865,7,6,0,0, - 2865,2866,7,19,0,0,2866,2867,7,29,0,0,2867,2868,7,17,0,0,2868,2869, - 7,7,0,0,2869,2870,7,23,0,0,2870,428,1,0,0,0,2871,2872,7,25,0,0,2872, - 2873,7,19,0,0,2873,2874,7,13,0,0,2874,2875,7,14,0,0,2875,2876,7, - 10,0,0,2876,430,1,0,0,0,2877,2878,7,25,0,0,2878,2879,7,19,0,0,2879, - 2880,7,13,0,0,2880,2881,7,29,0,0,2881,2882,7,5,0,0,2882,2883,7,13, - 0,0,2883,2884,7,12,0,0,2884,432,1,0,0,0,2885,2886,7,25,0,0,2886, - 2887,7,22,0,0,2887,2888,7,7,0,0,2888,2889,7,14,0,0,2889,2890,7,16, - 0,0,2890,2891,7,17,0,0,2891,2892,7,19,0,0,2892,2893,7,7,0,0,2893, - 434,1,0,0,0,2894,2895,7,25,0,0,2895,2896,7,22,0,0,2896,2897,7,7, - 0,0,2897,2898,7,14,0,0,2898,2899,7,16,0,0,2899,2900,7,17,0,0,2900, - 2901,7,19,0,0,2901,2902,7,7,0,0,2902,2903,7,9,0,0,2903,436,1,0,0, - 0,2904,2905,7,23,0,0,2905,2906,7,6,0,0,2906,2907,7,19,0,0,2907,2908, - 7,18,0,0,2908,2909,7,5,0,0,2909,2910,7,6,0,0,2910,438,1,0,0,0,2911, - 2912,7,23,0,0,2912,2913,7,13,0,0,2913,2914,7,5,0,0,2914,2915,7,7, - 0,0,2915,2916,7,16,0,0,2916,2917,7,10,0,0,2917,2918,7,12,0,0,2918, - 440,1,0,0,0,2919,2920,7,20,0,0,2920,2921,7,5,0,0,2921,2922,7,7,0, - 0,2922,2923,7,12,0,0,2923,2924,7,6,0,0,2924,2925,7,10,0,0,2925,2926, - 7,13,0,0,2926,442,1,0,0,0,2927,2928,7,20,0,0,2928,2929,7,10,0,0, - 2929,2930,7,5,0,0,2930,2931,7,12,0,0,2931,2932,7,10,0,0,2932,2933, - 7,13,0,0,2933,444,1,0,0,0,2934,2935,7,20,0,0,2935,2936,7,19,0,0, - 2936,2937,7,6,0,0,2937,2938,7,12,0,0,2938,446,1,0,0,0,2939,2940, - 7,20,0,0,2940,2941,7,19,0,0,2941,2942,7,22,0,0,2942,2943,7,13,0, - 0,2943,448,1,0,0,0,2944,2945,7,17,0,0,2945,2946,7,12,0,0,2946,2947, - 7,10,0,0,2947,2948,7,7,0,0,2948,2949,7,16,0,0,2949,2950,7,17,0,0, - 2950,2951,7,16,0,0,2951,2952,7,8,0,0,2952,450,1,0,0,0,2953,2954, - 7,17,0,0,2954,2955,7,25,0,0,2955,452,1,0,0,0,2956,2957,7,17,0,0, - 2957,2958,7,15,0,0,2958,2959,7,15,0,0,2959,2960,7,10,0,0,2960,2961, - 7,12,0,0,2961,2962,7,17,0,0,2962,2963,7,5,0,0,2963,2964,7,16,0,0, - 2964,2965,7,10,0,0,2965,454,1,0,0,0,2966,2967,7,17,0,0,2967,2968, - 7,15,0,0,2968,2969,7,15,0,0,2969,2970,7,22,0,0,2970,2971,7,16,0, - 0,2971,2972,7,5,0,0,2972,2973,7,18,0,0,2973,2974,7,6,0,0,2974,2975, - 7,10,0,0,2975,456,1,0,0,0,2976,2977,7,17,0,0,2977,2978,7,15,0,0, - 2978,2979,7,24,0,0,2979,2980,7,6,0,0,2980,2981,7,17,0,0,2981,2982, - 7,14,0,0,2982,2983,7,17,0,0,2983,2984,7,16,0,0,2984,458,1,0,0,0, - 2985,2986,7,17,0,0,2986,2987,7,7,0,0,2987,2988,7,14,0,0,2988,2989, - 7,6,0,0,2989,2990,7,22,0,0,2990,2991,7,12,0,0,2991,2992,7,17,0,0, - 2992,2993,7,7,0,0,2993,2994,7,23,0,0,2994,460,1,0,0,0,2995,2996, - 7,17,0,0,2996,2997,7,7,0,0,2997,2998,7,14,0,0,2998,2999,7,13,0,0, - 2999,3000,7,10,0,0,3000,3001,7,15,0,0,3001,3002,7,10,0,0,3002,3003, - 7,7,0,0,3003,3004,7,16,0,0,3004,462,1,0,0,0,3005,3006,7,17,0,0,3006, - 3007,7,7,0,0,3007,3008,7,12,0,0,3008,3009,7,10,0,0,3009,3010,7,26, - 0,0,3010,464,1,0,0,0,3011,3012,7,17,0,0,3012,3013,7,7,0,0,3013,3014, - 7,12,0,0,3014,3015,7,10,0,0,3015,3016,7,26,0,0,3016,3017,7,10,0, - 0,3017,3018,7,9,0,0,3018,466,1,0,0,0,3019,3020,7,17,0,0,3020,3021, - 7,7,0,0,3021,3022,7,20,0,0,3022,3023,7,10,0,0,3023,3024,7,13,0,0, - 3024,3025,7,17,0,0,3025,3026,7,16,0,0,3026,468,1,0,0,0,3027,3028, - 7,17,0,0,3028,3029,7,7,0,0,3029,3030,7,20,0,0,3030,3031,7,10,0,0, - 3031,3032,7,13,0,0,3032,3033,7,17,0,0,3033,3034,7,16,0,0,3034,3035, - 7,9,0,0,3035,470,1,0,0,0,3036,3037,7,17,0,0,3037,3038,7,7,0,0,3038, - 3039,7,6,0,0,3039,3040,7,17,0,0,3040,3041,7,7,0,0,3041,3042,7,10, - 0,0,3042,472,1,0,0,0,3043,3044,7,17,0,0,3044,3045,7,7,0,0,3045,3046, - 7,9,0,0,3046,3047,7,10,0,0,3047,3048,7,7,0,0,3048,3049,7,9,0,0,3049, - 3050,7,17,0,0,3050,3051,7,16,0,0,3051,3052,7,17,0,0,3052,3053,7, - 27,0,0,3053,3054,7,10,0,0,3054,474,1,0,0,0,3055,3056,7,17,0,0,3056, - 3057,7,7,0,0,3057,3058,7,9,0,0,3058,3059,7,10,0,0,3059,3060,7,13, - 0,0,3060,3061,7,16,0,0,3061,476,1,0,0,0,3062,3063,7,17,0,0,3063, - 3064,7,7,0,0,3064,3065,7,9,0,0,3065,3066,7,16,0,0,3066,3067,7,10, - 0,0,3067,3068,7,5,0,0,3068,3069,7,12,0,0,3069,478,1,0,0,0,3070,3071, - 7,17,0,0,3071,3072,7,7,0,0,3072,3073,7,27,0,0,3073,3074,7,19,0,0, - 3074,3075,7,21,0,0,3075,3076,7,10,0,0,3076,3077,7,13,0,0,3077,480, - 1,0,0,0,3078,3079,7,17,0,0,3079,3080,7,9,0,0,3080,3081,7,19,0,0, - 3081,3082,7,6,0,0,3082,3083,7,5,0,0,3083,3084,7,16,0,0,3084,3085, - 7,17,0,0,3085,3086,7,19,0,0,3086,3087,7,7,0,0,3087,482,1,0,0,0,3088, - 3089,7,21,0,0,3089,3090,7,10,0,0,3090,3091,7,8,0,0,3091,484,1,0, - 0,0,3092,3093,7,6,0,0,3093,3094,7,5,0,0,3094,3095,7,18,0,0,3095, - 3096,7,10,0,0,3096,3097,7,6,0,0,3097,486,1,0,0,0,3098,3099,7,6,0, - 0,3099,3100,7,5,0,0,3100,3101,7,7,0,0,3101,3102,7,23,0,0,3102,3103, - 7,22,0,0,3103,3104,7,5,0,0,3104,3105,7,23,0,0,3105,3106,7,10,0,0, - 3106,488,1,0,0,0,3107,3108,7,6,0,0,3108,3109,7,5,0,0,3109,3110,7, - 13,0,0,3110,3111,7,23,0,0,3111,3112,7,10,0,0,3112,490,1,0,0,0,3113, - 3114,7,6,0,0,3114,3115,7,5,0,0,3115,3116,7,9,0,0,3116,3117,7,16, - 0,0,3117,492,1,0,0,0,3118,3119,7,6,0,0,3119,3120,7,10,0,0,3120,3121, - 7,5,0,0,3121,3122,7,21,0,0,3122,3123,7,24,0,0,3123,3124,7,13,0,0, - 3124,3125,7,19,0,0,3125,3126,7,19,0,0,3126,3127,7,25,0,0,3127,494, - 1,0,0,0,3128,3129,7,6,0,0,3129,3130,7,10,0,0,3130,3131,7,27,0,0, - 3131,3132,7,10,0,0,3132,3133,7,6,0,0,3133,496,1,0,0,0,3134,3135, - 7,6,0,0,3135,3136,7,17,0,0,3136,3137,7,9,0,0,3137,3138,7,16,0,0, - 3138,3139,7,10,0,0,3139,3140,7,7,0,0,3140,498,1,0,0,0,3141,3142, - 7,6,0,0,3142,3143,7,19,0,0,3143,3144,7,5,0,0,3144,3145,7,12,0,0, - 3145,500,1,0,0,0,3146,3147,7,6,0,0,3147,3148,7,19,0,0,3148,3149, - 7,14,0,0,3149,3150,7,5,0,0,3150,3151,7,6,0,0,3151,502,1,0,0,0,3152, - 3153,7,6,0,0,3153,3154,7,19,0,0,3154,3155,7,14,0,0,3155,3156,7,5, - 0,0,3156,3157,7,16,0,0,3157,3158,7,17,0,0,3158,3159,7,19,0,0,3159, - 3160,7,7,0,0,3160,504,1,0,0,0,3161,3162,7,6,0,0,3162,3163,7,19,0, - 0,3163,3164,7,14,0,0,3164,3165,7,21,0,0,3165,506,1,0,0,0,3166,3167, - 7,15,0,0,3167,3168,7,5,0,0,3168,3169,7,24,0,0,3169,3170,7,24,0,0, - 3170,3171,7,17,0,0,3171,3172,7,7,0,0,3172,3173,7,23,0,0,3173,508, - 1,0,0,0,3174,3175,7,15,0,0,3175,3176,7,5,0,0,3176,3177,7,16,0,0, - 3177,3178,7,14,0,0,3178,3179,7,20,0,0,3179,510,1,0,0,0,3180,3181, - 7,15,0,0,3181,3182,7,5,0,0,3182,3183,7,16,0,0,3183,3184,7,14,0,0, - 3184,3185,7,20,0,0,3185,3186,7,10,0,0,3186,3187,7,12,0,0,3187,512, - 1,0,0,0,3188,3189,7,15,0,0,3189,3190,7,5,0,0,3190,3191,7,16,0,0, - 3191,3192,7,10,0,0,3192,3193,7,13,0,0,3193,3194,7,17,0,0,3194,3195, - 7,5,0,0,3195,3196,7,6,0,0,3196,3197,7,17,0,0,3197,3198,7,11,0,0, - 3198,3199,7,10,0,0,3199,3200,7,12,0,0,3200,514,1,0,0,0,3201,3202, - 7,15,0,0,3202,3203,7,5,0,0,3203,3204,7,26,0,0,3204,3205,7,27,0,0, - 3205,3206,7,5,0,0,3206,3207,7,6,0,0,3207,3208,7,22,0,0,3208,3209, - 7,10,0,0,3209,516,1,0,0,0,3210,3211,7,15,0,0,3211,3212,7,10,0,0, - 3212,3213,7,13,0,0,3213,3214,7,23,0,0,3214,3215,7,10,0,0,3215,518, - 1,0,0,0,3216,3217,7,15,0,0,3217,3218,7,17,0,0,3218,3219,7,7,0,0, - 3219,3220,7,22,0,0,3220,3221,7,16,0,0,3221,3222,7,10,0,0,3222,520, - 1,0,0,0,3223,3224,7,15,0,0,3224,3225,7,17,0,0,3225,3226,7,7,0,0, - 3226,3227,7,27,0,0,3227,3228,7,5,0,0,3228,3229,7,6,0,0,3229,3230, - 7,22,0,0,3230,3231,7,10,0,0,3231,522,1,0,0,0,3232,3233,7,15,0,0, - 3233,3234,7,19,0,0,3234,3235,7,12,0,0,3235,3236,7,10,0,0,3236,524, - 1,0,0,0,3237,3238,7,15,0,0,3238,3239,7,19,0,0,3239,3240,7,7,0,0, - 3240,3241,7,16,0,0,3241,3242,7,20,0,0,3242,526,1,0,0,0,3243,3244, - 7,15,0,0,3244,3245,7,19,0,0,3245,3246,7,27,0,0,3246,3247,7,10,0, - 0,3247,528,1,0,0,0,3248,3249,7,7,0,0,3249,3250,7,5,0,0,3250,3251, - 7,15,0,0,3251,3252,7,10,0,0,3252,530,1,0,0,0,3253,3254,7,7,0,0,3254, - 3255,7,5,0,0,3255,3256,7,15,0,0,3256,3257,7,10,0,0,3257,3258,7,9, - 0,0,3258,532,1,0,0,0,3259,3260,7,7,0,0,3260,3261,7,10,0,0,3261,3262, - 7,26,0,0,3262,3263,7,16,0,0,3263,534,1,0,0,0,3264,3265,7,7,0,0,3265, - 3266,7,19,0,0,3266,536,1,0,0,0,3267,3268,7,7,0,0,3268,3269,7,19, - 0,0,3269,3270,7,16,0,0,3270,3271,7,20,0,0,3271,3272,7,17,0,0,3272, - 3273,7,7,0,0,3273,3274,7,23,0,0,3274,538,1,0,0,0,3275,3276,7,7,0, - 0,3276,3277,7,19,0,0,3277,3278,7,16,0,0,3278,3279,7,17,0,0,3279, - 3280,7,25,0,0,3280,3281,7,8,0,0,3281,540,1,0,0,0,3282,3283,7,7,0, - 0,3283,3284,7,19,0,0,3284,3285,7,29,0,0,3285,3286,7,5,0,0,3286,3287, - 7,17,0,0,3287,3288,7,16,0,0,3288,542,1,0,0,0,3289,3290,7,7,0,0,3290, - 3291,7,22,0,0,3291,3292,7,6,0,0,3292,3293,7,6,0,0,3293,3294,7,9, - 0,0,3294,544,1,0,0,0,3295,3296,7,19,0,0,3296,3297,7,18,0,0,3297, - 3298,7,30,0,0,3298,3299,7,10,0,0,3299,3300,7,14,0,0,3300,3301,7, - 16,0,0,3301,546,1,0,0,0,3302,3303,7,19,0,0,3303,3304,7,25,0,0,3304, - 548,1,0,0,0,3305,3306,7,19,0,0,3306,3307,7,25,0,0,3307,3308,7,25, - 0,0,3308,550,1,0,0,0,3309,3310,7,19,0,0,3310,3311,7,17,0,0,3311, - 3312,7,12,0,0,3312,3313,7,9,0,0,3313,552,1,0,0,0,3314,3315,7,19, - 0,0,3315,3316,7,24,0,0,3316,3317,7,10,0,0,3317,3318,7,13,0,0,3318, - 3319,7,5,0,0,3319,3320,7,16,0,0,3320,3321,7,19,0,0,3321,3322,7,13, - 0,0,3322,554,1,0,0,0,3323,3324,7,19,0,0,3324,3325,7,24,0,0,3325, - 3326,7,16,0,0,3326,3327,7,17,0,0,3327,3328,7,19,0,0,3328,3329,7, - 7,0,0,3329,556,1,0,0,0,3330,3331,7,19,0,0,3331,3332,7,24,0,0,3332, - 3333,7,16,0,0,3333,3334,7,17,0,0,3334,3335,7,19,0,0,3335,3336,7, - 7,0,0,3336,3337,7,9,0,0,3337,558,1,0,0,0,3338,3339,7,19,0,0,3339, - 3340,7,29,0,0,3340,3341,7,7,0,0,3341,3342,7,10,0,0,3342,3343,7,12, - 0,0,3343,560,1,0,0,0,3344,3345,7,19,0,0,3345,3346,7,29,0,0,3346, - 3347,7,7,0,0,3347,3348,7,10,0,0,3348,3349,7,13,0,0,3349,562,1,0, - 0,0,3350,3351,7,24,0,0,3351,3352,7,5,0,0,3352,3353,7,13,0,0,3353, - 3354,7,9,0,0,3354,3355,7,10,0,0,3355,3356,7,13,0,0,3356,564,1,0, - 0,0,3357,3358,7,24,0,0,3358,3359,7,5,0,0,3359,3360,7,13,0,0,3360, - 3361,7,16,0,0,3361,3362,7,17,0,0,3362,3363,7,5,0,0,3363,3364,7,6, - 0,0,3364,566,1,0,0,0,3365,3366,7,24,0,0,3366,3367,7,5,0,0,3367,3368, - 7,13,0,0,3368,3369,7,16,0,0,3369,3370,7,17,0,0,3370,3371,7,16,0, - 0,3371,3372,7,17,0,0,3372,3373,7,19,0,0,3373,3374,7,7,0,0,3374,568, - 1,0,0,0,3375,3376,7,24,0,0,3376,3377,7,5,0,0,3377,3378,7,9,0,0,3378, - 3379,7,9,0,0,3379,3380,7,17,0,0,3380,3381,7,7,0,0,3381,3382,7,23, - 0,0,3382,570,1,0,0,0,3383,3384,7,24,0,0,3384,3385,7,5,0,0,3385,3386, - 7,9,0,0,3386,3387,7,9,0,0,3387,3388,7,29,0,0,3388,3389,7,19,0,0, - 3389,3390,7,13,0,0,3390,3391,7,12,0,0,3391,572,1,0,0,0,3392,3393, - 7,24,0,0,3393,3394,7,6,0,0,3394,3395,7,5,0,0,3395,3396,7,7,0,0,3396, - 3397,7,9,0,0,3397,574,1,0,0,0,3398,3399,7,24,0,0,3399,3400,7,13, - 0,0,3400,3401,7,10,0,0,3401,3402,7,14,0,0,3402,3403,7,10,0,0,3403, - 3404,7,12,0,0,3404,3405,7,17,0,0,3405,3406,7,7,0,0,3406,3407,7,23, - 0,0,3407,576,1,0,0,0,3408,3409,7,24,0,0,3409,3410,7,13,0,0,3410, - 3411,7,10,0,0,3411,3412,7,24,0,0,3412,3413,7,5,0,0,3413,3414,7,13, - 0,0,3414,3415,7,10,0,0,3415,578,1,0,0,0,3416,3417,7,24,0,0,3417, - 3418,7,13,0,0,3418,3419,7,10,0,0,3419,3420,7,24,0,0,3420,3421,7, - 5,0,0,3421,3422,7,13,0,0,3422,3423,7,10,0,0,3423,3424,7,12,0,0,3424, - 580,1,0,0,0,3425,3426,7,24,0,0,3426,3427,7,13,0,0,3427,3428,7,10, - 0,0,3428,3429,7,9,0,0,3429,3430,7,10,0,0,3430,3431,7,13,0,0,3431, - 3432,7,27,0,0,3432,3433,7,10,0,0,3433,582,1,0,0,0,3434,3435,7,24, - 0,0,3435,3436,7,13,0,0,3436,3437,7,17,0,0,3437,3438,7,19,0,0,3438, - 3439,7,13,0,0,3439,584,1,0,0,0,3440,3441,7,24,0,0,3441,3442,7,13, - 0,0,3442,3443,7,17,0,0,3443,3444,7,27,0,0,3444,3445,7,17,0,0,3445, - 3446,7,6,0,0,3446,3447,7,10,0,0,3447,3448,7,23,0,0,3448,3449,7,10, - 0,0,3449,3450,7,9,0,0,3450,586,1,0,0,0,3451,3452,7,24,0,0,3452,3453, - 7,13,0,0,3453,3454,7,19,0,0,3454,3455,7,14,0,0,3455,3456,7,10,0, - 0,3456,3457,7,12,0,0,3457,3458,7,22,0,0,3458,3459,7,13,0,0,3459, - 3460,7,5,0,0,3460,3461,7,6,0,0,3461,588,1,0,0,0,3462,3463,7,24,0, - 0,3463,3464,7,13,0,0,3464,3465,7,19,0,0,3465,3466,7,14,0,0,3466, - 3467,7,10,0,0,3467,3468,7,12,0,0,3468,3469,7,22,0,0,3469,3470,7, - 13,0,0,3470,3471,7,10,0,0,3471,590,1,0,0,0,3472,3473,7,24,0,0,3473, - 3474,7,13,0,0,3474,3475,7,19,0,0,3475,3476,7,23,0,0,3476,3477,7, - 13,0,0,3477,3478,7,5,0,0,3478,3479,7,15,0,0,3479,592,1,0,0,0,3480, - 3481,7,28,0,0,3481,3482,7,22,0,0,3482,3483,7,19,0,0,3483,3484,7, - 16,0,0,3484,3485,7,10,0,0,3485,594,1,0,0,0,3486,3487,7,13,0,0,3487, - 3488,7,5,0,0,3488,3489,7,7,0,0,3489,3490,7,23,0,0,3490,3491,7,10, - 0,0,3491,596,1,0,0,0,3492,3493,7,13,0,0,3493,3494,7,10,0,0,3494, - 3495,7,5,0,0,3495,3496,7,12,0,0,3496,598,1,0,0,0,3497,3498,7,13, - 0,0,3498,3499,7,10,0,0,3499,3500,7,5,0,0,3500,3501,7,9,0,0,3501, - 3502,7,9,0,0,3502,3503,7,17,0,0,3503,3504,7,23,0,0,3504,3505,7,7, - 0,0,3505,600,1,0,0,0,3506,3507,7,13,0,0,3507,3508,7,10,0,0,3508, - 3509,7,14,0,0,3509,3510,7,20,0,0,3510,3511,7,10,0,0,3511,3512,7, - 14,0,0,3512,3513,7,21,0,0,3513,602,1,0,0,0,3514,3515,7,13,0,0,3515, - 3516,7,10,0,0,3516,3517,7,14,0,0,3517,3518,7,22,0,0,3518,3519,7, - 13,0,0,3519,3520,7,9,0,0,3520,3521,7,17,0,0,3521,3522,7,27,0,0,3522, - 3523,7,10,0,0,3523,604,1,0,0,0,3524,3525,7,13,0,0,3525,3526,7,10, - 0,0,3526,3527,7,25,0,0,3527,606,1,0,0,0,3528,3529,7,13,0,0,3529, - 3530,7,10,0,0,3530,3531,7,25,0,0,3531,3532,7,13,0,0,3532,3533,7, - 10,0,0,3533,3534,7,9,0,0,3534,3535,7,20,0,0,3535,608,1,0,0,0,3536, - 3537,7,13,0,0,3537,3538,7,10,0,0,3538,3539,7,17,0,0,3539,3540,7, - 7,0,0,3540,3541,7,12,0,0,3541,3542,7,10,0,0,3542,3543,7,26,0,0,3543, - 610,1,0,0,0,3544,3545,7,13,0,0,3545,3546,7,10,0,0,3546,3547,7,6, - 0,0,3547,3548,7,5,0,0,3548,3549,7,16,0,0,3549,3550,7,17,0,0,3550, - 3551,7,27,0,0,3551,3552,7,10,0,0,3552,612,1,0,0,0,3553,3554,7,13, - 0,0,3554,3555,7,10,0,0,3555,3556,7,6,0,0,3556,3557,7,10,0,0,3557, - 3558,7,5,0,0,3558,3559,7,9,0,0,3559,3560,7,10,0,0,3560,614,1,0,0, - 0,3561,3562,7,13,0,0,3562,3563,7,10,0,0,3563,3564,7,7,0,0,3564,3565, - 7,5,0,0,3565,3566,7,15,0,0,3566,3567,7,10,0,0,3567,616,1,0,0,0,3568, - 3569,7,13,0,0,3569,3570,7,10,0,0,3570,3571,7,24,0,0,3571,3572,7, - 10,0,0,3572,3573,7,5,0,0,3573,3574,7,16,0,0,3574,3575,7,5,0,0,3575, - 3576,7,18,0,0,3576,3577,7,6,0,0,3577,3578,7,10,0,0,3578,618,1,0, - 0,0,3579,3580,7,13,0,0,3580,3581,7,10,0,0,3581,3582,7,24,0,0,3582, - 3583,7,6,0,0,3583,3584,7,5,0,0,3584,3585,7,14,0,0,3585,3586,7,10, - 0,0,3586,620,1,0,0,0,3587,3588,7,13,0,0,3588,3589,7,10,0,0,3589, - 3590,7,24,0,0,3590,3591,7,6,0,0,3591,3592,7,17,0,0,3592,3593,7,14, - 0,0,3593,3594,7,5,0,0,3594,622,1,0,0,0,3595,3596,7,13,0,0,3596,3597, - 7,10,0,0,3597,3598,7,9,0,0,3598,3599,7,10,0,0,3599,3600,7,16,0,0, - 3600,624,1,0,0,0,3601,3602,7,13,0,0,3602,3603,7,10,0,0,3603,3604, - 7,9,0,0,3604,3605,7,16,0,0,3605,3606,7,5,0,0,3606,3607,7,13,0,0, - 3607,3608,7,16,0,0,3608,626,1,0,0,0,3609,3610,7,13,0,0,3610,3611, - 7,10,0,0,3611,3612,7,9,0,0,3612,3613,7,16,0,0,3613,3614,7,13,0,0, - 3614,3615,7,17,0,0,3615,3616,7,14,0,0,3616,3617,7,16,0,0,3617,628, - 1,0,0,0,3618,3619,7,13,0,0,3619,3620,7,10,0,0,3620,3621,7,16,0,0, - 3621,3622,7,22,0,0,3622,3623,7,13,0,0,3623,3624,7,7,0,0,3624,3625, - 7,9,0,0,3625,630,1,0,0,0,3626,3627,7,13,0,0,3627,3628,7,10,0,0,3628, - 3629,7,27,0,0,3629,3630,7,19,0,0,3630,3631,7,21,0,0,3631,3632,7, - 10,0,0,3632,632,1,0,0,0,3633,3634,7,13,0,0,3634,3635,7,19,0,0,3635, - 3636,7,6,0,0,3636,3637,7,10,0,0,3637,634,1,0,0,0,3638,3639,7,13, - 0,0,3639,3640,7,19,0,0,3640,3641,7,6,0,0,3641,3642,7,6,0,0,3642, - 3643,7,18,0,0,3643,3644,7,5,0,0,3644,3645,7,14,0,0,3645,3646,7,21, - 0,0,3646,636,1,0,0,0,3647,3648,7,13,0,0,3648,3649,7,19,0,0,3649, - 3650,7,29,0,0,3650,3651,7,9,0,0,3651,638,1,0,0,0,3652,3653,7,13, - 0,0,3653,3654,7,22,0,0,3654,3655,7,6,0,0,3655,3656,7,10,0,0,3656, - 640,1,0,0,0,3657,3658,7,9,0,0,3658,3659,7,5,0,0,3659,3660,7,27,0, - 0,3660,3661,7,10,0,0,3661,3662,7,24,0,0,3662,3663,7,19,0,0,3663, - 3664,7,17,0,0,3664,3665,7,7,0,0,3665,3666,7,16,0,0,3666,642,1,0, - 0,0,3667,3668,7,9,0,0,3668,3669,7,14,0,0,3669,3670,7,20,0,0,3670, - 3671,7,10,0,0,3671,3672,7,15,0,0,3672,3673,7,5,0,0,3673,644,1,0, - 0,0,3674,3675,7,9,0,0,3675,3676,7,14,0,0,3676,3677,7,13,0,0,3677, - 3678,7,19,0,0,3678,3679,7,6,0,0,3679,3680,7,6,0,0,3680,646,1,0,0, - 0,3681,3682,7,9,0,0,3682,3683,7,10,0,0,3683,3684,7,5,0,0,3684,3685, - 7,13,0,0,3685,3686,7,14,0,0,3686,3687,7,20,0,0,3687,648,1,0,0,0, - 3688,3689,7,9,0,0,3689,3690,7,10,0,0,3690,3691,7,14,0,0,3691,3692, - 7,19,0,0,3692,3693,7,7,0,0,3693,3694,7,12,0,0,3694,650,1,0,0,0,3695, - 3696,7,9,0,0,3696,3697,7,10,0,0,3697,3698,7,14,0,0,3698,3699,7,22, - 0,0,3699,3700,7,13,0,0,3700,3701,7,17,0,0,3701,3702,7,16,0,0,3702, - 3703,7,8,0,0,3703,652,1,0,0,0,3704,3705,7,9,0,0,3705,3706,7,10,0, - 0,3706,3707,7,28,0,0,3707,3708,7,22,0,0,3708,3709,7,10,0,0,3709, - 3710,7,7,0,0,3710,3711,7,14,0,0,3711,3712,7,10,0,0,3712,654,1,0, - 0,0,3713,3714,7,9,0,0,3714,3715,7,10,0,0,3715,3716,7,28,0,0,3716, - 3717,7,22,0,0,3717,3718,7,10,0,0,3718,3719,7,7,0,0,3719,3720,7,14, - 0,0,3720,3721,7,10,0,0,3721,3722,7,9,0,0,3722,656,1,0,0,0,3723,3724, - 7,9,0,0,3724,3725,7,10,0,0,3725,3726,7,13,0,0,3726,3727,7,17,0,0, - 3727,3728,7,5,0,0,3728,3729,7,6,0,0,3729,3730,7,17,0,0,3730,3731, - 7,11,0,0,3731,3732,7,5,0,0,3732,3733,7,18,0,0,3733,3734,7,6,0,0, - 3734,3735,7,10,0,0,3735,658,1,0,0,0,3736,3737,7,9,0,0,3737,3738, - 7,10,0,0,3738,3739,7,13,0,0,3739,3740,7,27,0,0,3740,3741,7,10,0, - 0,3741,3742,7,13,0,0,3742,660,1,0,0,0,3743,3744,7,9,0,0,3744,3745, - 7,10,0,0,3745,3746,7,9,0,0,3746,3747,7,9,0,0,3747,3748,7,17,0,0, - 3748,3749,7,19,0,0,3749,3750,7,7,0,0,3750,662,1,0,0,0,3751,3752, - 7,9,0,0,3752,3753,7,10,0,0,3753,3754,7,16,0,0,3754,664,1,0,0,0,3755, - 3756,7,9,0,0,3756,3757,7,20,0,0,3757,3758,7,5,0,0,3758,3759,7,13, - 0,0,3759,3760,7,10,0,0,3760,666,1,0,0,0,3761,3762,7,9,0,0,3762,3763, - 7,20,0,0,3763,3764,7,19,0,0,3764,3765,7,29,0,0,3765,668,1,0,0,0, - 3766,3767,7,9,0,0,3767,3768,7,17,0,0,3768,3769,7,15,0,0,3769,3770, - 7,24,0,0,3770,3771,7,6,0,0,3771,3772,7,10,0,0,3772,670,1,0,0,0,3773, - 3774,7,9,0,0,3774,3775,7,7,0,0,3775,3776,7,5,0,0,3776,3777,7,24, - 0,0,3777,3778,7,9,0,0,3778,3779,7,20,0,0,3779,3780,7,19,0,0,3780, - 3781,7,16,0,0,3781,672,1,0,0,0,3782,3783,7,9,0,0,3783,3784,7,16, - 0,0,3784,3785,7,5,0,0,3785,3786,7,18,0,0,3786,3787,7,6,0,0,3787, - 3788,7,10,0,0,3788,674,1,0,0,0,3789,3790,7,9,0,0,3790,3791,7,16, - 0,0,3791,3792,7,5,0,0,3792,3793,7,7,0,0,3793,3794,7,12,0,0,3794, - 3795,7,5,0,0,3795,3796,7,6,0,0,3796,3797,7,19,0,0,3797,3798,7,7, - 0,0,3798,3799,7,10,0,0,3799,676,1,0,0,0,3800,3801,7,9,0,0,3801,3802, - 7,16,0,0,3802,3803,7,5,0,0,3803,3804,7,13,0,0,3804,3805,7,16,0,0, - 3805,678,1,0,0,0,3806,3807,7,9,0,0,3807,3808,7,16,0,0,3808,3809, - 7,5,0,0,3809,3810,7,16,0,0,3810,3811,7,10,0,0,3811,3812,7,15,0,0, - 3812,3813,7,10,0,0,3813,3814,7,7,0,0,3814,3815,7,16,0,0,3815,680, - 1,0,0,0,3816,3817,7,9,0,0,3817,3818,7,16,0,0,3818,3819,7,5,0,0,3819, - 3820,7,16,0,0,3820,3821,7,17,0,0,3821,3822,7,9,0,0,3822,3823,7,16, - 0,0,3823,3824,7,17,0,0,3824,3825,7,14,0,0,3825,3826,7,9,0,0,3826, - 682,1,0,0,0,3827,3828,7,9,0,0,3828,3829,7,16,0,0,3829,3830,7,12, - 0,0,3830,3831,7,17,0,0,3831,3832,7,7,0,0,3832,684,1,0,0,0,3833,3834, - 7,9,0,0,3834,3835,7,16,0,0,3835,3836,7,12,0,0,3836,3837,7,19,0,0, - 3837,3838,7,22,0,0,3838,3839,7,16,0,0,3839,686,1,0,0,0,3840,3841, - 7,9,0,0,3841,3842,7,16,0,0,3842,3843,7,19,0,0,3843,3844,7,13,0,0, - 3844,3845,7,5,0,0,3845,3846,7,23,0,0,3846,3847,7,10,0,0,3847,688, - 1,0,0,0,3848,3849,7,9,0,0,3849,3850,7,16,0,0,3850,3851,7,13,0,0, - 3851,3852,7,17,0,0,3852,3853,7,14,0,0,3853,3854,7,16,0,0,3854,690, - 1,0,0,0,3855,3856,7,9,0,0,3856,3857,7,16,0,0,3857,3858,7,13,0,0, - 3858,3859,7,17,0,0,3859,3860,7,24,0,0,3860,692,1,0,0,0,3861,3862, - 7,9,0,0,3862,3863,7,8,0,0,3863,3864,7,9,0,0,3864,3865,7,17,0,0,3865, - 3866,7,12,0,0,3866,694,1,0,0,0,3867,3868,7,9,0,0,3868,3869,7,8,0, - 0,3869,3870,7,9,0,0,3870,3871,7,16,0,0,3871,3872,7,10,0,0,3872,3873, - 7,15,0,0,3873,696,1,0,0,0,3874,3875,7,16,0,0,3875,3876,7,5,0,0,3876, - 3877,7,18,0,0,3877,3878,7,6,0,0,3878,3879,7,10,0,0,3879,3880,7,9, - 0,0,3880,698,1,0,0,0,3881,3882,7,16,0,0,3882,3883,7,5,0,0,3883,3884, - 7,18,0,0,3884,3885,7,6,0,0,3885,3886,7,10,0,0,3886,3887,7,9,0,0, - 3887,3888,7,24,0,0,3888,3889,7,5,0,0,3889,3890,7,14,0,0,3890,3891, - 7,10,0,0,3891,700,1,0,0,0,3892,3893,7,16,0,0,3893,3894,7,10,0,0, - 3894,3895,7,15,0,0,3895,3896,7,24,0,0,3896,702,1,0,0,0,3897,3898, - 7,16,0,0,3898,3899,7,10,0,0,3899,3900,7,15,0,0,3900,3901,7,24,0, - 0,3901,3902,7,6,0,0,3902,3903,7,5,0,0,3903,3904,7,16,0,0,3904,3905, - 7,10,0,0,3905,704,1,0,0,0,3906,3907,7,16,0,0,3907,3908,7,10,0,0, - 3908,3909,7,15,0,0,3909,3910,7,24,0,0,3910,3911,7,19,0,0,3911,3912, - 7,13,0,0,3912,3913,7,5,0,0,3913,3914,7,13,0,0,3914,3915,7,8,0,0, - 3915,706,1,0,0,0,3916,3917,7,16,0,0,3917,3918,7,10,0,0,3918,3919, - 7,26,0,0,3919,3920,7,16,0,0,3920,708,1,0,0,0,3921,3922,7,16,0,0, - 3922,3923,7,13,0,0,3923,3924,7,5,0,0,3924,3925,7,7,0,0,3925,3926, - 7,9,0,0,3926,3927,7,5,0,0,3927,3928,7,14,0,0,3928,3929,7,16,0,0, - 3929,3930,7,17,0,0,3930,3931,7,19,0,0,3931,3932,7,7,0,0,3932,710, - 1,0,0,0,3933,3934,7,16,0,0,3934,3935,7,13,0,0,3935,3936,7,17,0,0, - 3936,3937,7,23,0,0,3937,3938,7,23,0,0,3938,3939,7,10,0,0,3939,3940, - 7,13,0,0,3940,712,1,0,0,0,3941,3942,7,16,0,0,3942,3943,7,13,0,0, - 3943,3944,7,22,0,0,3944,3945,7,7,0,0,3945,3946,7,14,0,0,3946,3947, - 7,5,0,0,3947,3948,7,16,0,0,3948,3949,7,10,0,0,3949,714,1,0,0,0,3950, - 3951,7,16,0,0,3951,3952,7,13,0,0,3952,3953,7,22,0,0,3953,3954,7, - 9,0,0,3954,3955,7,16,0,0,3955,3956,7,10,0,0,3956,3957,7,12,0,0,3957, - 716,1,0,0,0,3958,3959,7,16,0,0,3959,3960,7,8,0,0,3960,3961,7,24, - 0,0,3961,3962,7,10,0,0,3962,718,1,0,0,0,3963,3964,7,16,0,0,3964, - 3965,7,8,0,0,3965,3966,7,24,0,0,3966,3967,7,10,0,0,3967,3968,7,9, - 0,0,3968,720,1,0,0,0,3969,3970,7,22,0,0,3970,3971,7,7,0,0,3971,3972, - 7,18,0,0,3972,3973,7,19,0,0,3973,3974,7,22,0,0,3974,3975,7,7,0,0, - 3975,3976,7,12,0,0,3976,3977,7,10,0,0,3977,3978,7,12,0,0,3978,722, - 1,0,0,0,3979,3980,7,22,0,0,3980,3981,7,7,0,0,3981,3982,7,14,0,0, - 3982,3983,7,19,0,0,3983,3984,7,15,0,0,3984,3985,7,15,0,0,3985,3986, - 7,17,0,0,3986,3987,7,16,0,0,3987,3988,7,16,0,0,3988,3989,7,10,0, - 0,3989,3990,7,12,0,0,3990,724,1,0,0,0,3991,3992,7,22,0,0,3992,3993, - 7,7,0,0,3993,3994,7,10,0,0,3994,3995,7,7,0,0,3995,3996,7,14,0,0, - 3996,3997,7,13,0,0,3997,3998,7,8,0,0,3998,3999,7,24,0,0,3999,4000, - 7,16,0,0,4000,4001,7,10,0,0,4001,4002,7,12,0,0,4002,726,1,0,0,0, - 4003,4004,7,22,0,0,4004,4005,7,7,0,0,4005,4006,7,21,0,0,4006,4007, - 7,7,0,0,4007,4008,7,19,0,0,4008,4009,7,29,0,0,4009,4010,7,7,0,0, - 4010,728,1,0,0,0,4011,4012,7,22,0,0,4012,4013,7,7,0,0,4013,4014, - 7,6,0,0,4014,4015,7,17,0,0,4015,4016,7,9,0,0,4016,4017,7,16,0,0, - 4017,4018,7,10,0,0,4018,4019,7,7,0,0,4019,730,1,0,0,0,4020,4021, - 7,22,0,0,4021,4022,7,7,0,0,4022,4023,7,6,0,0,4023,4024,7,19,0,0, - 4024,4025,7,23,0,0,4025,4026,7,23,0,0,4026,4027,7,10,0,0,4027,4028, - 7,12,0,0,4028,732,1,0,0,0,4029,4030,7,22,0,0,4030,4031,7,7,0,0,4031, - 4032,7,16,0,0,4032,4033,7,17,0,0,4033,4034,7,6,0,0,4034,734,1,0, - 0,0,4035,4036,7,22,0,0,4036,4037,7,24,0,0,4037,4038,7,12,0,0,4038, - 4039,7,5,0,0,4039,4040,7,16,0,0,4040,4041,7,10,0,0,4041,736,1,0, - 0,0,4042,4043,7,27,0,0,4043,4044,7,5,0,0,4044,4045,7,14,0,0,4045, - 4046,7,22,0,0,4046,4047,7,22,0,0,4047,4048,7,15,0,0,4048,738,1,0, - 0,0,4049,4050,7,27,0,0,4050,4051,7,5,0,0,4051,4052,7,6,0,0,4052, - 4053,7,17,0,0,4053,4054,7,12,0,0,4054,740,1,0,0,0,4055,4056,7,27, - 0,0,4056,4057,7,5,0,0,4057,4058,7,6,0,0,4058,4059,7,17,0,0,4059, - 4060,7,12,0,0,4060,4061,7,5,0,0,4061,4062,7,16,0,0,4062,4063,7,10, - 0,0,4063,742,1,0,0,0,4064,4065,7,27,0,0,4065,4066,7,5,0,0,4066,4067, - 7,6,0,0,4067,4068,7,17,0,0,4068,4069,7,12,0,0,4069,4070,7,5,0,0, - 4070,4071,7,16,0,0,4071,4072,7,19,0,0,4072,4073,7,13,0,0,4073,744, - 1,0,0,0,4074,4075,7,27,0,0,4075,4076,7,5,0,0,4076,4077,7,13,0,0, - 4077,4078,7,8,0,0,4078,4079,7,17,0,0,4079,4080,7,7,0,0,4080,4081, - 7,23,0,0,4081,746,1,0,0,0,4082,4083,7,27,0,0,4083,4084,7,10,0,0, - 4084,4085,7,13,0,0,4085,4086,7,9,0,0,4086,4087,7,17,0,0,4087,4088, - 7,19,0,0,4088,4089,7,7,0,0,4089,748,1,0,0,0,4090,4091,7,27,0,0,4091, - 4092,7,17,0,0,4092,4093,7,10,0,0,4093,4094,7,29,0,0,4094,750,1,0, - 0,0,4095,4096,7,27,0,0,4096,4097,7,19,0,0,4097,4098,7,6,0,0,4098, - 4099,7,5,0,0,4099,4100,7,16,0,0,4100,4101,7,17,0,0,4101,4102,7,6, - 0,0,4102,4103,7,10,0,0,4103,752,1,0,0,0,4104,4105,7,29,0,0,4105, - 4106,7,20,0,0,4106,4107,7,17,0,0,4107,4108,7,16,0,0,4108,4109,7, - 10,0,0,4109,4110,7,9,0,0,4110,4111,7,24,0,0,4111,4112,7,5,0,0,4112, - 4113,7,14,0,0,4113,4114,7,10,0,0,4114,754,1,0,0,0,4115,4116,7,29, - 0,0,4116,4117,7,17,0,0,4117,4118,7,16,0,0,4118,4119,7,20,0,0,4119, - 4120,7,19,0,0,4120,4121,7,22,0,0,4121,4122,7,16,0,0,4122,756,1,0, - 0,0,4123,4124,7,29,0,0,4124,4125,7,19,0,0,4125,4126,7,13,0,0,4126, - 4127,7,21,0,0,4127,758,1,0,0,0,4128,4129,7,29,0,0,4129,4130,7,13, - 0,0,4130,4131,7,5,0,0,4131,4132,7,24,0,0,4132,4133,7,24,0,0,4133, - 4134,7,10,0,0,4134,4135,7,13,0,0,4135,760,1,0,0,0,4136,4137,7,29, - 0,0,4137,4138,7,13,0,0,4138,4139,7,17,0,0,4139,4140,7,16,0,0,4140, - 4141,7,10,0,0,4141,762,1,0,0,0,4142,4143,7,26,0,0,4143,4144,7,15, - 0,0,4144,4145,7,6,0,0,4145,764,1,0,0,0,4146,4147,7,8,0,0,4147,4148, - 7,10,0,0,4148,4149,7,5,0,0,4149,4150,7,13,0,0,4150,766,1,0,0,0,4151, - 4152,7,8,0,0,4152,4153,7,10,0,0,4153,4154,7,9,0,0,4154,768,1,0,0, - 0,4155,4156,7,11,0,0,4156,4157,7,19,0,0,4157,4158,7,7,0,0,4158,4159, - 7,10,0,0,4159,770,1,0,0,0,4160,4161,7,18,0,0,4161,4162,7,10,0,0, - 4162,4163,7,16,0,0,4163,4164,7,29,0,0,4164,4165,7,10,0,0,4165,4166, - 7,10,0,0,4166,4167,7,7,0,0,4167,772,1,0,0,0,4168,4169,7,18,0,0,4169, - 4170,7,17,0,0,4170,4171,7,23,0,0,4171,4172,7,17,0,0,4172,4173,7, - 7,0,0,4173,4174,7,16,0,0,4174,774,1,0,0,0,4175,4176,7,18,0,0,4176, - 4177,7,17,0,0,4177,4178,7,16,0,0,4178,776,1,0,0,0,4179,4180,7,18, - 0,0,4180,4181,7,19,0,0,4181,4182,7,19,0,0,4182,4183,7,6,0,0,4183, - 4184,7,10,0,0,4184,4185,7,5,0,0,4185,4186,7,7,0,0,4186,778,1,0,0, - 0,4187,4188,7,14,0,0,4188,4189,7,20,0,0,4189,4190,7,5,0,0,4190,4191, - 7,13,0,0,4191,780,1,0,0,0,4192,4193,7,14,0,0,4193,4194,7,20,0,0, - 4194,4195,7,5,0,0,4195,4196,7,13,0,0,4196,4197,7,5,0,0,4197,4198, - 7,14,0,0,4198,4199,7,16,0,0,4199,4200,7,10,0,0,4200,4201,7,13,0, - 0,4201,782,1,0,0,0,4202,4203,7,14,0,0,4203,4204,7,19,0,0,4204,4205, - 7,5,0,0,4205,4206,7,6,0,0,4206,4207,7,10,0,0,4207,4208,7,9,0,0,4208, - 4209,7,14,0,0,4209,4210,7,10,0,0,4210,784,1,0,0,0,4211,4212,7,12, - 0,0,4212,4213,7,10,0,0,4213,4214,7,14,0,0,4214,786,1,0,0,0,4215, - 4216,7,12,0,0,4216,4217,7,10,0,0,4217,4218,7,14,0,0,4218,4219,7, - 17,0,0,4219,4220,7,15,0,0,4220,4221,7,5,0,0,4221,4222,7,6,0,0,4222, - 788,1,0,0,0,4223,4224,7,10,0,0,4224,4225,7,26,0,0,4225,4226,7,17, - 0,0,4226,4227,7,9,0,0,4227,4228,7,16,0,0,4228,4229,7,9,0,0,4229, - 790,1,0,0,0,4230,4231,7,10,0,0,4231,4232,7,26,0,0,4232,4233,7,16, - 0,0,4233,4234,7,13,0,0,4234,4235,7,5,0,0,4235,4236,7,14,0,0,4236, - 4237,7,16,0,0,4237,792,1,0,0,0,4238,4239,7,25,0,0,4239,4240,7,6, - 0,0,4240,4241,7,19,0,0,4241,4242,7,5,0,0,4242,4243,7,16,0,0,4243, - 794,1,0,0,0,4244,4245,7,23,0,0,4245,4246,7,13,0,0,4246,4247,7,10, - 0,0,4247,4248,7,5,0,0,4248,4249,7,16,0,0,4249,4250,7,10,0,0,4250, - 4251,7,9,0,0,4251,4252,7,16,0,0,4252,796,1,0,0,0,4253,4254,7,17, - 0,0,4254,4255,7,7,0,0,4255,4256,7,19,0,0,4256,4257,7,22,0,0,4257, - 4258,7,16,0,0,4258,798,1,0,0,0,4259,4260,7,17,0,0,4260,4261,7,7, - 0,0,4261,4262,7,16,0,0,4262,800,1,0,0,0,4263,4264,7,17,0,0,4264, - 4265,7,7,0,0,4265,4266,7,16,0,0,4266,4267,7,10,0,0,4267,4268,7,23, - 0,0,4268,4269,7,10,0,0,4269,4270,7,13,0,0,4270,802,1,0,0,0,4271, - 4272,7,17,0,0,4272,4273,7,7,0,0,4273,4274,7,16,0,0,4274,4275,7,10, - 0,0,4275,4276,7,13,0,0,4276,4277,7,27,0,0,4277,4278,7,5,0,0,4278, - 4279,7,6,0,0,4279,804,1,0,0,0,4280,4281,7,6,0,0,4281,4282,7,10,0, - 0,4282,4283,7,5,0,0,4283,4284,7,9,0,0,4284,4285,7,16,0,0,4285,806, - 1,0,0,0,4286,4287,7,7,0,0,4287,4288,7,5,0,0,4288,4289,7,16,0,0,4289, - 4290,7,17,0,0,4290,4291,7,19,0,0,4291,4292,7,7,0,0,4292,4293,7,5, - 0,0,4293,4294,7,6,0,0,4294,808,1,0,0,0,4295,4296,7,7,0,0,4296,4297, - 7,14,0,0,4297,4298,7,20,0,0,4298,4299,7,5,0,0,4299,4300,7,13,0,0, - 4300,810,1,0,0,0,4301,4302,7,7,0,0,4302,4303,7,19,0,0,4303,4304, - 7,7,0,0,4304,4305,7,10,0,0,4305,812,1,0,0,0,4306,4307,7,7,0,0,4307, - 4308,7,22,0,0,4308,4309,7,6,0,0,4309,4310,7,6,0,0,4310,4311,7,17, - 0,0,4311,4312,7,25,0,0,4312,814,1,0,0,0,4313,4314,7,7,0,0,4314,4315, - 7,22,0,0,4315,4316,7,15,0,0,4316,4317,7,10,0,0,4317,4318,7,13,0, - 0,4318,4319,7,17,0,0,4319,4320,7,14,0,0,4320,816,1,0,0,0,4321,4322, - 7,19,0,0,4322,4323,7,27,0,0,4323,4324,7,10,0,0,4324,4325,7,13,0, - 0,4325,4326,7,6,0,0,4326,4327,7,5,0,0,4327,4328,7,8,0,0,4328,818, - 1,0,0,0,4329,4330,7,24,0,0,4330,4331,7,19,0,0,4331,4332,7,9,0,0, - 4332,4333,7,17,0,0,4333,4334,7,16,0,0,4334,4335,7,17,0,0,4335,4336, - 7,19,0,0,4336,4337,7,7,0,0,4337,820,1,0,0,0,4338,4339,7,24,0,0,4339, - 4340,7,13,0,0,4340,4341,7,10,0,0,4341,4342,7,14,0,0,4342,4343,7, - 17,0,0,4343,4344,7,9,0,0,4344,4345,7,17,0,0,4345,4346,7,19,0,0,4346, - 4347,7,7,0,0,4347,822,1,0,0,0,4348,4349,7,13,0,0,4349,4350,7,10, - 0,0,4350,4351,7,5,0,0,4351,4352,7,6,0,0,4352,824,1,0,0,0,4353,4354, - 7,13,0,0,4354,4355,7,19,0,0,4355,4356,7,29,0,0,4356,826,1,0,0,0, - 4357,4358,7,9,0,0,4358,4359,7,10,0,0,4359,4360,7,16,0,0,4360,4361, - 7,19,0,0,4361,4362,7,25,0,0,4362,828,1,0,0,0,4363,4364,7,9,0,0,4364, - 4365,7,15,0,0,4365,4366,7,5,0,0,4366,4367,7,6,0,0,4367,4368,7,6, - 0,0,4368,4369,7,17,0,0,4369,4370,7,7,0,0,4370,4371,7,16,0,0,4371, - 830,1,0,0,0,4372,4373,7,9,0,0,4373,4374,7,22,0,0,4374,4375,7,18, - 0,0,4375,4376,7,9,0,0,4376,4377,7,16,0,0,4377,4378,7,13,0,0,4378, - 4379,7,17,0,0,4379,4380,7,7,0,0,4380,4381,7,23,0,0,4381,832,1,0, - 0,0,4382,4383,7,16,0,0,4383,4384,7,17,0,0,4384,4385,7,15,0,0,4385, - 4386,7,10,0,0,4386,834,1,0,0,0,4387,4388,7,16,0,0,4388,4389,7,17, - 0,0,4389,4390,7,15,0,0,4390,4391,7,10,0,0,4391,4392,7,9,0,0,4392, - 4393,7,16,0,0,4393,4394,7,5,0,0,4394,4395,7,15,0,0,4395,4396,7,24, - 0,0,4396,836,1,0,0,0,4397,4398,7,16,0,0,4398,4399,7,13,0,0,4399, - 4400,7,10,0,0,4400,4401,7,5,0,0,4401,4402,7,16,0,0,4402,838,1,0, - 0,0,4403,4404,7,16,0,0,4404,4405,7,13,0,0,4405,4406,7,17,0,0,4406, - 4407,7,15,0,0,4407,840,1,0,0,0,4408,4409,7,27,0,0,4409,4410,7,5, - 0,0,4410,4411,7,6,0,0,4411,4412,7,22,0,0,4412,4413,7,10,0,0,4413, - 4414,7,9,0,0,4414,842,1,0,0,0,4415,4416,7,27,0,0,4416,4417,7,5,0, - 0,4417,4418,7,13,0,0,4418,4419,7,14,0,0,4419,4420,7,20,0,0,4420, - 4421,7,5,0,0,4421,4422,7,13,0,0,4422,844,1,0,0,0,4423,4424,7,26, - 0,0,4424,4425,7,15,0,0,4425,4426,7,6,0,0,4426,4427,7,5,0,0,4427, - 4428,7,16,0,0,4428,4429,7,16,0,0,4429,4430,7,13,0,0,4430,4431,7, - 17,0,0,4431,4432,7,18,0,0,4432,4433,7,22,0,0,4433,4434,7,16,0,0, - 4434,4435,7,10,0,0,4435,4436,7,9,0,0,4436,846,1,0,0,0,4437,4438, - 7,26,0,0,4438,4439,7,15,0,0,4439,4440,7,6,0,0,4440,4441,7,14,0,0, - 4441,4442,7,19,0,0,4442,4443,7,15,0,0,4443,4444,7,15,0,0,4444,4445, - 7,10,0,0,4445,4446,7,7,0,0,4446,4447,7,16,0,0,4447,848,1,0,0,0,4448, - 4449,7,26,0,0,4449,4450,7,15,0,0,4450,4451,7,6,0,0,4451,4452,7,5, - 0,0,4452,4453,7,23,0,0,4453,4454,7,23,0,0,4454,850,1,0,0,0,4455, - 4456,7,26,0,0,4456,4457,7,15,0,0,4457,4458,7,6,0,0,4458,4459,5,95, - 0,0,4459,4460,7,17,0,0,4460,4461,7,9,0,0,4461,4462,5,95,0,0,4462, - 4463,7,29,0,0,4463,4464,7,10,0,0,4464,4465,7,6,0,0,4465,4466,7,6, - 0,0,4466,4467,5,95,0,0,4467,4468,7,25,0,0,4468,4469,7,19,0,0,4469, - 4470,7,13,0,0,4470,4471,7,15,0,0,4471,4472,7,10,0,0,4472,4473,7, - 12,0,0,4473,852,1,0,0,0,4474,4475,7,26,0,0,4475,4476,7,15,0,0,4476, - 4477,7,6,0,0,4477,4478,5,95,0,0,4478,4479,7,17,0,0,4479,4480,7,9, - 0,0,4480,4481,5,95,0,0,4481,4482,7,29,0,0,4482,4483,7,10,0,0,4483, - 4484,7,6,0,0,4484,4485,7,6,0,0,4485,4486,5,95,0,0,4486,4487,7,25, - 0,0,4487,4488,7,19,0,0,4488,4489,7,13,0,0,4489,4490,7,15,0,0,4490, - 4491,7,10,0,0,4491,4492,7,12,0,0,4492,4493,5,95,0,0,4493,4494,7, - 12,0,0,4494,4495,7,19,0,0,4495,4496,7,14,0,0,4496,4497,7,22,0,0, - 4497,4498,7,15,0,0,4498,4499,7,10,0,0,4499,4500,7,7,0,0,4500,4501, - 7,16,0,0,4501,854,1,0,0,0,4502,4503,7,26,0,0,4503,4504,7,15,0,0, - 4504,4505,7,6,0,0,4505,4506,5,95,0,0,4506,4507,7,17,0,0,4507,4508, - 7,9,0,0,4508,4509,5,95,0,0,4509,4510,7,29,0,0,4510,4511,7,10,0,0, - 4511,4512,7,6,0,0,4512,4513,7,6,0,0,4513,4514,5,95,0,0,4514,4515, - 7,25,0,0,4515,4516,7,19,0,0,4516,4517,7,13,0,0,4517,4518,7,15,0, - 0,4518,4519,7,10,0,0,4519,4520,7,12,0,0,4520,4521,5,95,0,0,4521, - 4522,7,14,0,0,4522,4523,7,19,0,0,4523,4524,7,7,0,0,4524,4525,7,16, - 0,0,4525,4526,7,10,0,0,4526,4527,7,7,0,0,4527,4528,7,16,0,0,4528, - 856,1,0,0,0,4529,4530,7,26,0,0,4530,4531,7,24,0,0,4531,4532,7,5, - 0,0,4532,4533,7,16,0,0,4533,4534,7,20,0,0,4534,858,1,0,0,0,4535, - 4536,7,26,0,0,4536,4537,7,24,0,0,4537,4538,7,5,0,0,4538,4539,7,16, - 0,0,4539,4540,7,20,0,0,4540,4541,5,95,0,0,4541,4542,7,10,0,0,4542, - 4543,7,26,0,0,4543,4544,7,17,0,0,4544,4545,7,9,0,0,4545,4546,7,16, - 0,0,4546,4547,7,9,0,0,4547,860,1,0,0,0,4548,4549,7,26,0,0,4549,4550, - 7,15,0,0,4550,4551,7,6,0,0,4551,4552,7,14,0,0,4552,4553,7,19,0,0, - 4553,4554,7,7,0,0,4554,4555,7,14,0,0,4555,4556,7,5,0,0,4556,4557, - 7,16,0,0,4557,862,1,0,0,0,4558,4559,7,26,0,0,4559,4560,7,15,0,0, - 4560,4561,7,6,0,0,4561,4562,7,10,0,0,4562,4563,7,6,0,0,4563,4564, - 7,10,0,0,4564,4565,7,15,0,0,4565,4566,7,10,0,0,4566,4567,7,7,0,0, - 4567,4568,7,16,0,0,4568,864,1,0,0,0,4569,4570,7,26,0,0,4570,4571, - 7,15,0,0,4571,4572,7,6,0,0,4572,4573,7,10,0,0,4573,4574,7,26,0,0, - 4574,4575,7,17,0,0,4575,4576,7,9,0,0,4576,4577,7,16,0,0,4577,4578, - 7,9,0,0,4578,866,1,0,0,0,4579,4580,7,26,0,0,4580,4581,7,15,0,0,4581, - 4582,7,6,0,0,4582,4583,7,25,0,0,4583,4584,7,19,0,0,4584,4585,7,13, - 0,0,4585,4586,7,10,0,0,4586,4587,7,9,0,0,4587,4588,7,16,0,0,4588, - 868,1,0,0,0,4589,4590,7,26,0,0,4590,4591,7,15,0,0,4591,4592,7,6, - 0,0,4592,4593,7,24,0,0,4593,4594,7,5,0,0,4594,4595,7,13,0,0,4595, - 4596,7,9,0,0,4596,4597,7,10,0,0,4597,870,1,0,0,0,4598,4599,7,26, - 0,0,4599,4600,7,15,0,0,4600,4601,7,6,0,0,4601,4602,7,24,0,0,4602, - 4603,7,17,0,0,4603,872,1,0,0,0,4604,4605,7,26,0,0,4605,4606,7,15, - 0,0,4606,4607,7,6,0,0,4607,4608,7,13,0,0,4608,4609,7,19,0,0,4609, - 4610,7,19,0,0,4610,4611,7,16,0,0,4611,874,1,0,0,0,4612,4613,7,26, - 0,0,4613,4614,7,15,0,0,4614,4615,7,6,0,0,4615,4616,7,9,0,0,4616, - 4617,7,10,0,0,4617,4618,7,13,0,0,4618,4619,7,17,0,0,4619,4620,7, - 5,0,0,4620,4621,7,6,0,0,4621,4622,7,17,0,0,4622,4623,7,11,0,0,4623, - 4624,7,10,0,0,4624,876,1,0,0,0,4625,4626,7,14,0,0,4626,4627,7,5, - 0,0,4627,4628,7,6,0,0,4628,4629,7,6,0,0,4629,878,1,0,0,0,4630,4631, - 7,14,0,0,4631,4632,7,22,0,0,4632,4633,7,13,0,0,4633,4634,7,13,0, - 0,4634,4635,7,10,0,0,4635,4636,7,7,0,0,4636,4637,7,16,0,0,4637,880, - 1,0,0,0,4638,4639,7,5,0,0,4639,4640,7,16,0,0,4640,4641,7,16,0,0, - 4641,4642,7,5,0,0,4642,4643,7,14,0,0,4643,4644,7,20,0,0,4644,882, - 1,0,0,0,4645,4646,7,12,0,0,4646,4647,7,10,0,0,4647,4648,7,16,0,0, - 4648,4649,7,5,0,0,4649,4650,7,14,0,0,4650,4651,7,20,0,0,4651,884, - 1,0,0,0,4652,4653,7,10,0,0,4653,4654,7,26,0,0,4654,4655,7,24,0,0, - 4655,4656,7,13,0,0,4656,4657,7,10,0,0,4657,4658,7,9,0,0,4658,4659, - 7,9,0,0,4659,4660,7,17,0,0,4660,4661,7,19,0,0,4661,4662,7,7,0,0, - 4662,886,1,0,0,0,4663,4664,7,23,0,0,4664,4665,7,10,0,0,4665,4666, - 7,7,0,0,4666,4667,7,10,0,0,4667,4668,7,13,0,0,4668,4669,7,5,0,0, - 4669,4670,7,16,0,0,4670,4671,7,10,0,0,4671,4672,7,12,0,0,4672,888, - 1,0,0,0,4673,4674,7,6,0,0,4674,4675,7,19,0,0,4675,4676,7,23,0,0, - 4676,4677,7,23,0,0,4677,4678,7,10,0,0,4678,4679,7,12,0,0,4679,890, - 1,0,0,0,4680,4681,7,9,0,0,4681,4682,7,16,0,0,4682,4683,7,19,0,0, - 4683,4684,7,13,0,0,4684,4685,7,10,0,0,4685,4686,7,12,0,0,4686,892, - 1,0,0,0,4687,4688,7,17,0,0,4688,4689,7,7,0,0,4689,4690,7,14,0,0, - 4690,4691,7,6,0,0,4691,4692,7,22,0,0,4692,4693,7,12,0,0,4693,4694, - 7,10,0,0,4694,894,1,0,0,0,4695,4696,7,13,0,0,4696,4697,7,19,0,0, - 4697,4698,7,22,0,0,4698,4699,7,16,0,0,4699,4700,7,17,0,0,4700,4701, - 7,7,0,0,4701,4702,7,10,0,0,4702,896,1,0,0,0,4703,4704,7,16,0,0,4704, - 4705,7,13,0,0,4705,4706,7,5,0,0,4706,4707,7,7,0,0,4707,4708,7,9, - 0,0,4708,4709,7,25,0,0,4709,4710,7,19,0,0,4710,4711,7,13,0,0,4711, - 4712,7,15,0,0,4712,898,1,0,0,0,4713,4714,7,17,0,0,4714,4715,7,15, - 0,0,4715,4716,7,24,0,0,4716,4717,7,19,0,0,4717,4718,7,13,0,0,4718, - 4719,7,16,0,0,4719,900,1,0,0,0,4720,4721,7,24,0,0,4721,4722,7,19, - 0,0,4722,4723,7,6,0,0,4723,4724,7,17,0,0,4724,4725,7,14,0,0,4725, - 4726,7,8,0,0,4726,902,1,0,0,0,4727,4728,7,15,0,0,4728,4729,7,10, - 0,0,4729,4730,7,16,0,0,4730,4731,7,20,0,0,4731,4732,7,19,0,0,4732, - 4733,7,12,0,0,4733,904,1,0,0,0,4734,4735,7,13,0,0,4735,4736,7,10, - 0,0,4736,4737,7,25,0,0,4737,4738,7,10,0,0,4738,4739,7,13,0,0,4739, - 4740,7,10,0,0,4740,4741,7,7,0,0,4741,4742,7,14,0,0,4742,4743,7,17, - 0,0,4743,4744,7,7,0,0,4744,4745,7,23,0,0,4745,906,1,0,0,0,4746,4747, - 7,7,0,0,4747,4748,7,10,0,0,4748,4749,7,29,0,0,4749,908,1,0,0,0,4750, - 4751,7,19,0,0,4751,4752,7,6,0,0,4752,4753,7,12,0,0,4753,910,1,0, - 0,0,4754,4755,7,27,0,0,4755,4756,7,5,0,0,4756,4757,7,6,0,0,4757, - 4758,7,22,0,0,4758,4759,7,10,0,0,4759,912,1,0,0,0,4760,4761,7,9, - 0,0,4761,4762,7,22,0,0,4762,4763,7,18,0,0,4763,4764,7,9,0,0,4764, - 4765,7,14,0,0,4765,4766,7,13,0,0,4766,4767,7,17,0,0,4767,4768,7, - 24,0,0,4768,4769,7,16,0,0,4769,4770,7,17,0,0,4770,4771,7,19,0,0, - 4771,4772,7,7,0,0,4772,914,1,0,0,0,4773,4774,7,24,0,0,4774,4775, - 7,22,0,0,4775,4776,7,18,0,0,4776,4777,7,6,0,0,4777,4778,7,17,0,0, - 4778,4779,7,14,0,0,4779,4780,7,5,0,0,4780,4781,7,16,0,0,4781,4782, - 7,17,0,0,4782,4783,7,19,0,0,4783,4784,7,7,0,0,4784,916,1,0,0,0,4785, - 4786,7,19,0,0,4786,4787,7,22,0,0,4787,4788,7,16,0,0,4788,918,1,0, - 0,0,4789,4790,7,10,0,0,4790,4791,7,7,0,0,4791,4792,7,12,0,0,4792, - 920,1,0,0,0,4793,4794,7,13,0,0,4794,4795,7,19,0,0,4795,4796,7,22, - 0,0,4796,4797,7,16,0,0,4797,4798,7,17,0,0,4798,4799,7,7,0,0,4799, - 4800,7,10,0,0,4800,4801,7,9,0,0,4801,922,1,0,0,0,4802,4803,7,9,0, - 0,4803,4804,7,14,0,0,4804,4805,7,20,0,0,4805,4806,7,10,0,0,4806, - 4807,7,15,0,0,4807,4808,7,5,0,0,4808,4809,7,9,0,0,4809,924,1,0,0, - 0,4810,4811,7,24,0,0,4811,4812,7,13,0,0,4812,4813,7,19,0,0,4813, - 4814,7,14,0,0,4814,4815,7,10,0,0,4815,4816,7,12,0,0,4816,4817,7, - 22,0,0,4817,4818,7,13,0,0,4818,4819,7,10,0,0,4819,4820,7,9,0,0,4820, - 926,1,0,0,0,4821,4822,7,17,0,0,4822,4823,7,7,0,0,4823,4824,7,24, - 0,0,4824,4825,7,22,0,0,4825,4826,7,16,0,0,4826,928,1,0,0,0,4827, - 4828,7,9,0,0,4828,4829,7,22,0,0,4829,4830,7,24,0,0,4830,4831,7,24, - 0,0,4831,4832,7,19,0,0,4832,4833,7,13,0,0,4833,4834,7,16,0,0,4834, - 930,1,0,0,0,4835,4836,7,24,0,0,4836,4837,7,5,0,0,4837,4838,7,13, - 0,0,4838,4839,7,5,0,0,4839,4840,7,6,0,0,4840,4841,7,6,0,0,4841,4842, - 7,10,0,0,4842,4843,7,6,0,0,4843,932,1,0,0,0,4844,4845,7,9,0,0,4845, - 4846,7,28,0,0,4846,4847,7,6,0,0,4847,934,1,0,0,0,4848,4849,7,12, - 0,0,4849,4850,7,10,0,0,4850,4851,7,24,0,0,4851,4852,7,10,0,0,4852, - 4853,7,7,0,0,4853,4854,7,12,0,0,4854,4855,7,9,0,0,4855,936,1,0,0, - 0,4856,4857,7,19,0,0,4857,4858,7,27,0,0,4858,4859,7,10,0,0,4859, - 4860,7,13,0,0,4860,4861,7,13,0,0,4861,4862,7,17,0,0,4862,4863,7, - 12,0,0,4863,4864,7,17,0,0,4864,4865,7,7,0,0,4865,4866,7,23,0,0,4866, - 938,1,0,0,0,4867,4868,7,14,0,0,4868,4869,7,19,0,0,4869,4870,7,7, - 0,0,4870,4871,7,25,0,0,4871,4872,7,6,0,0,4872,4873,7,17,0,0,4873, - 4874,7,14,0,0,4874,4875,7,16,0,0,4875,940,1,0,0,0,4876,4877,7,9, - 0,0,4877,4878,7,21,0,0,4878,4879,7,17,0,0,4879,4880,7,24,0,0,4880, - 942,1,0,0,0,4881,4882,7,6,0,0,4882,4883,7,19,0,0,4883,4884,7,14, - 0,0,4884,4885,7,21,0,0,4885,4886,7,10,0,0,4886,4887,7,12,0,0,4887, - 944,1,0,0,0,4888,4889,7,16,0,0,4889,4890,7,17,0,0,4890,4891,7,10, - 0,0,4891,4892,7,9,0,0,4892,946,1,0,0,0,4893,4894,7,13,0,0,4894,4895, - 7,19,0,0,4895,4896,7,6,0,0,4896,4897,7,6,0,0,4897,4898,7,22,0,0, - 4898,4899,7,24,0,0,4899,948,1,0,0,0,4900,4901,7,14,0,0,4901,4902, - 7,22,0,0,4902,4903,7,18,0,0,4903,4904,7,10,0,0,4904,950,1,0,0,0, - 4905,4906,7,23,0,0,4906,4907,7,13,0,0,4907,4908,7,19,0,0,4908,4909, - 7,22,0,0,4909,4910,7,24,0,0,4910,4911,7,17,0,0,4911,4912,7,7,0,0, - 4912,4913,7,23,0,0,4913,952,1,0,0,0,4914,4915,7,9,0,0,4915,4916, - 7,10,0,0,4916,4917,7,16,0,0,4917,4918,7,9,0,0,4918,954,1,0,0,0,4919, - 4920,7,16,0,0,4920,4921,7,5,0,0,4921,4922,7,18,0,0,4922,4923,7,6, - 0,0,4923,4924,7,10,0,0,4924,4925,7,9,0,0,4925,4926,7,5,0,0,4926, - 4927,7,15,0,0,4927,4928,7,24,0,0,4928,4929,7,6,0,0,4929,4930,7,10, - 0,0,4930,956,1,0,0,0,4931,4932,7,19,0,0,4932,4933,7,13,0,0,4933, - 4934,7,12,0,0,4934,4935,7,17,0,0,4935,4936,7,7,0,0,4936,4937,7,5, - 0,0,4937,4938,7,6,0,0,4938,4939,7,17,0,0,4939,4940,7,16,0,0,4940, - 4941,7,8,0,0,4941,958,1,0,0,0,4942,4943,7,26,0,0,4943,4944,7,15, - 0,0,4944,4945,7,6,0,0,4945,4946,7,16,0,0,4946,4947,7,5,0,0,4947, - 4948,7,18,0,0,4948,4949,7,6,0,0,4949,4950,7,10,0,0,4950,960,1,0, - 0,0,4951,4952,7,14,0,0,4952,4953,7,19,0,0,4953,4954,7,6,0,0,4954, - 4955,7,22,0,0,4955,4956,7,15,0,0,4956,4957,7,7,0,0,4957,4958,7,9, - 0,0,4958,962,1,0,0,0,4959,4960,7,26,0,0,4960,4961,7,15,0,0,4961, - 4962,7,6,0,0,4962,4963,7,7,0,0,4963,4964,7,5,0,0,4964,4965,7,15, - 0,0,4965,4966,7,10,0,0,4966,4967,7,9,0,0,4967,4968,7,24,0,0,4968, - 4969,7,5,0,0,4969,4970,7,14,0,0,4970,4971,7,10,0,0,4971,4972,7,9, - 0,0,4972,964,1,0,0,0,4973,4974,7,13,0,0,4974,4975,7,19,0,0,4975, - 4976,7,29,0,0,4976,4977,7,16,0,0,4977,4978,7,8,0,0,4978,4979,7,24, - 0,0,4979,4980,7,10,0,0,4980,966,1,0,0,0,4981,4982,7,7,0,0,4982,4983, - 7,19,0,0,4983,4984,7,13,0,0,4984,4985,7,15,0,0,4985,4986,7,5,0,0, - 4986,4987,7,6,0,0,4987,4988,7,17,0,0,4988,4989,7,11,0,0,4989,4990, - 7,10,0,0,4990,4991,7,12,0,0,4991,968,1,0,0,0,4992,4993,7,29,0,0, - 4993,4994,7,17,0,0,4994,4995,7,16,0,0,4995,4996,7,20,0,0,4996,4997, - 7,17,0,0,4997,4998,7,7,0,0,4998,970,1,0,0,0,4999,5000,7,25,0,0,5000, - 5001,7,17,0,0,5001,5002,7,6,0,0,5002,5003,7,16,0,0,5003,5004,7,10, - 0,0,5004,5005,7,13,0,0,5005,972,1,0,0,0,5006,5007,7,23,0,0,5007, - 5008,7,13,0,0,5008,5009,7,19,0,0,5009,5010,7,22,0,0,5010,5011,7, - 24,0,0,5011,5012,7,9,0,0,5012,974,1,0,0,0,5013,5014,7,19,0,0,5014, - 5015,7,16,0,0,5015,5016,7,20,0,0,5016,5017,7,10,0,0,5017,5018,7, - 13,0,0,5018,5019,7,9,0,0,5019,976,1,0,0,0,5020,5021,7,7,0,0,5021, - 5022,7,25,0,0,5022,5023,7,14,0,0,5023,978,1,0,0,0,5024,5025,7,7, - 0,0,5025,5026,7,25,0,0,5026,5027,7,12,0,0,5027,980,1,0,0,0,5028, - 5029,7,7,0,0,5029,5030,7,25,0,0,5030,5031,7,21,0,0,5031,5032,7,14, - 0,0,5032,982,1,0,0,0,5033,5034,7,7,0,0,5034,5035,7,25,0,0,5035,5036, - 7,21,0,0,5036,5037,7,12,0,0,5037,984,1,0,0,0,5038,5039,7,22,0,0, - 5039,5040,7,10,0,0,5040,5041,7,9,0,0,5041,5042,7,14,0,0,5042,5043, - 7,5,0,0,5043,5044,7,24,0,0,5044,5045,7,10,0,0,5045,986,1,0,0,0,5046, - 5047,7,27,0,0,5047,5048,7,17,0,0,5048,5049,7,10,0,0,5049,5050,7, - 29,0,0,5050,5051,7,9,0,0,5051,988,1,0,0,0,5052,5053,7,7,0,0,5053, - 5054,7,19,0,0,5054,5055,7,13,0,0,5055,5056,7,15,0,0,5056,5057,7, - 5,0,0,5057,5058,7,6,0,0,5058,5059,7,17,0,0,5059,5060,7,11,0,0,5060, - 5061,7,10,0,0,5061,990,1,0,0,0,5062,5063,7,12,0,0,5063,5064,7,22, - 0,0,5064,5065,7,15,0,0,5065,5066,7,24,0,0,5066,992,1,0,0,0,5067, - 5068,7,24,0,0,5068,5069,7,13,0,0,5069,5070,7,17,0,0,5070,5071,7, - 7,0,0,5071,5072,7,16,0,0,5072,5073,5,95,0,0,5073,5074,7,9,0,0,5074, - 5075,7,16,0,0,5075,5076,7,13,0,0,5076,5077,7,17,0,0,5077,5078,7, - 14,0,0,5078,5079,7,16,0,0,5079,5080,5,95,0,0,5080,5081,7,24,0,0, - 5081,5082,7,5,0,0,5082,5083,7,13,0,0,5083,5084,7,5,0,0,5084,5085, - 7,15,0,0,5085,5086,7,9,0,0,5086,994,1,0,0,0,5087,5088,7,27,0,0,5088, - 5089,7,5,0,0,5089,5090,7,13,0,0,5090,5091,7,17,0,0,5091,5092,7,5, - 0,0,5092,5093,7,18,0,0,5093,5094,7,6,0,0,5094,5095,7,10,0,0,5095, - 5096,5,95,0,0,5096,5097,7,14,0,0,5097,5098,7,19,0,0,5098,5099,7, - 7,0,0,5099,5100,7,25,0,0,5100,5101,7,6,0,0,5101,5102,7,17,0,0,5102, - 5103,7,14,0,0,5103,5104,7,16,0,0,5104,996,1,0,0,0,5105,5106,7,10, - 0,0,5106,5107,7,13,0,0,5107,5108,7,13,0,0,5108,5109,7,19,0,0,5109, - 5110,7,13,0,0,5110,998,1,0,0,0,5111,5112,7,22,0,0,5112,5113,7,9, - 0,0,5113,5114,7,10,0,0,5114,5115,5,95,0,0,5115,5116,7,27,0,0,5116, - 5117,7,5,0,0,5117,5118,7,13,0,0,5118,5119,7,17,0,0,5119,5120,7,5, - 0,0,5120,5121,7,18,0,0,5121,5122,7,6,0,0,5122,5123,7,10,0,0,5123, - 1000,1,0,0,0,5124,5125,7,22,0,0,5125,5126,7,9,0,0,5126,5127,7,10, - 0,0,5127,5128,5,95,0,0,5128,5129,7,14,0,0,5129,5130,7,19,0,0,5130, - 5131,7,6,0,0,5131,5132,7,22,0,0,5132,5133,7,15,0,0,5133,5134,7,7, - 0,0,5134,1002,1,0,0,0,5135,5136,7,5,0,0,5136,5137,7,6,0,0,5137,5138, - 7,17,0,0,5138,5139,7,5,0,0,5139,5140,7,9,0,0,5140,1004,1,0,0,0,5141, - 5142,7,14,0,0,5142,5143,7,19,0,0,5143,5144,7,7,0,0,5144,5145,7,9, - 0,0,5145,5146,7,16,0,0,5146,5147,7,5,0,0,5147,5148,7,7,0,0,5148, - 5149,7,16,0,0,5149,1006,1,0,0,0,5150,5151,7,24,0,0,5151,5152,7,10, - 0,0,5152,5153,7,13,0,0,5153,5154,7,25,0,0,5154,5155,7,19,0,0,5155, - 5156,7,13,0,0,5156,5157,7,15,0,0,5157,1008,1,0,0,0,5158,5159,7,23, - 0,0,5159,5160,7,10,0,0,5160,5161,7,16,0,0,5161,1010,1,0,0,0,5162, - 5163,7,12,0,0,5163,5164,7,17,0,0,5164,5165,7,5,0,0,5165,5166,7,23, - 0,0,5166,5167,7,7,0,0,5167,5168,7,19,0,0,5168,5169,7,9,0,0,5169, - 5170,7,16,0,0,5170,5171,7,17,0,0,5171,5172,7,14,0,0,5172,5173,7, - 9,0,0,5173,1012,1,0,0,0,5174,5175,7,9,0,0,5175,5176,7,16,0,0,5176, - 5177,7,5,0,0,5177,5178,7,14,0,0,5178,5179,7,21,0,0,5179,5180,7,10, - 0,0,5180,5181,7,12,0,0,5181,1014,1,0,0,0,5182,5183,7,10,0,0,5183, - 5184,7,6,0,0,5184,5185,7,9,0,0,5185,5186,7,17,0,0,5186,5187,7,25, - 0,0,5187,1016,1,0,0,0,5188,5189,7,29,0,0,5189,5190,7,20,0,0,5190, - 5191,7,17,0,0,5191,5192,7,6,0,0,5192,5193,7,10,0,0,5193,1018,1,0, - 0,0,5194,5195,7,13,0,0,5195,5196,7,10,0,0,5196,5197,7,27,0,0,5197, - 5198,7,10,0,0,5198,5199,7,13,0,0,5199,5200,7,9,0,0,5200,5201,7,10, - 0,0,5201,1020,1,0,0,0,5202,5203,7,25,0,0,5203,5204,7,19,0,0,5204, - 5205,7,13,0,0,5205,5206,7,10,0,0,5206,5207,7,5,0,0,5207,5208,7,14, - 0,0,5208,5209,7,20,0,0,5209,1022,1,0,0,0,5210,5211,7,9,0,0,5211, - 5212,7,6,0,0,5212,5213,7,17,0,0,5213,5214,7,14,0,0,5214,5215,7,10, - 0,0,5215,1024,1,0,0,0,5216,5217,7,10,0,0,5217,5218,7,26,0,0,5218, - 5219,7,17,0,0,5219,5220,7,16,0,0,5220,1026,1,0,0,0,5221,5222,7,13, - 0,0,5222,5223,7,10,0,0,5223,5224,7,16,0,0,5224,5225,7,22,0,0,5225, - 5226,7,13,0,0,5226,5227,7,7,0,0,5227,1028,1,0,0,0,5228,5229,7,28, - 0,0,5229,5230,7,22,0,0,5230,5231,7,10,0,0,5231,5232,7,13,0,0,5232, - 5233,7,8,0,0,5233,1030,1,0,0,0,5234,5235,7,13,0,0,5235,5236,7,5, - 0,0,5236,5237,7,17,0,0,5237,5238,7,9,0,0,5238,5239,7,10,0,0,5239, - 1032,1,0,0,0,5240,5241,7,9,0,0,5241,5242,7,28,0,0,5242,5243,7,6, - 0,0,5243,5244,7,9,0,0,5244,5245,7,16,0,0,5245,5246,7,5,0,0,5246, - 5247,7,16,0,0,5247,5248,7,10,0,0,5248,1034,1,0,0,0,5249,5250,7,12, - 0,0,5250,5251,7,10,0,0,5251,5252,7,18,0,0,5252,5253,7,22,0,0,5253, - 5254,7,23,0,0,5254,1036,1,0,0,0,5255,5256,7,6,0,0,5256,5257,7,19, - 0,0,5257,5258,7,23,0,0,5258,1038,1,0,0,0,5259,5260,7,17,0,0,5260, - 5261,7,7,0,0,5261,5262,7,25,0,0,5262,5263,7,19,0,0,5263,1040,1,0, - 0,0,5264,5265,7,7,0,0,5265,5266,7,19,0,0,5266,5267,7,16,0,0,5267, - 5268,7,17,0,0,5268,5269,7,14,0,0,5269,5270,7,10,0,0,5270,1042,1, - 0,0,0,5271,5272,7,29,0,0,5272,5273,7,5,0,0,5273,5274,7,13,0,0,5274, - 5275,7,7,0,0,5275,5276,7,17,0,0,5276,5277,7,7,0,0,5277,5278,7,23, - 0,0,5278,1044,1,0,0,0,5279,5280,7,10,0,0,5280,5281,7,26,0,0,5281, - 5282,7,14,0,0,5282,5283,7,10,0,0,5283,5284,7,24,0,0,5284,5285,7, - 16,0,0,5285,5286,7,17,0,0,5286,5287,7,19,0,0,5287,5288,7,7,0,0,5288, - 1046,1,0,0,0,5289,5290,7,5,0,0,5290,5291,7,9,0,0,5291,5292,7,9,0, - 0,5292,5293,7,10,0,0,5293,5294,7,13,0,0,5294,5295,7,16,0,0,5295, - 1048,1,0,0,0,5296,5297,7,6,0,0,5297,5298,7,19,0,0,5298,5299,7,19, - 0,0,5299,5300,7,24,0,0,5300,1050,1,0,0,0,5301,5302,7,19,0,0,5302, - 5303,7,24,0,0,5303,5304,7,10,0,0,5304,5305,7,7,0,0,5305,1052,1,0, - 0,0,5306,5307,7,5,0,0,5307,5308,7,18,0,0,5308,5309,7,9,0,0,5309, - 1054,1,0,0,0,5310,5311,7,14,0,0,5311,5312,7,18,0,0,5312,5313,7,13, - 0,0,5313,5314,7,16,0,0,5314,1056,1,0,0,0,5315,5316,7,14,0,0,5316, - 5317,7,10,0,0,5317,5318,7,17,0,0,5318,5319,7,6,0,0,5319,1058,1,0, - 0,0,5320,5321,7,14,0,0,5321,5322,7,10,0,0,5322,5323,7,17,0,0,5323, - 5324,7,6,0,0,5324,5325,7,17,0,0,5325,5326,7,7,0,0,5326,5327,7,23, - 0,0,5327,1060,1,0,0,0,5328,5329,7,12,0,0,5329,5330,7,10,0,0,5330, - 5331,7,23,0,0,5331,5332,7,13,0,0,5332,5333,7,10,0,0,5333,5334,7, - 10,0,0,5334,5335,7,9,0,0,5335,1062,1,0,0,0,5336,5337,7,12,0,0,5337, - 5338,7,17,0,0,5338,5339,7,27,0,0,5339,1064,1,0,0,0,5340,5341,7,10, - 0,0,5341,5342,7,26,0,0,5342,5343,7,24,0,0,5343,1066,1,0,0,0,5344, - 5345,7,25,0,0,5345,5346,7,5,0,0,5346,5347,7,14,0,0,5347,5348,7,16, - 0,0,5348,5349,7,19,0,0,5349,5350,7,13,0,0,5350,5351,7,17,0,0,5351, - 5352,7,5,0,0,5352,5353,7,6,0,0,5353,1068,1,0,0,0,5354,5355,7,25, - 0,0,5355,5356,7,6,0,0,5356,5357,7,19,0,0,5357,5358,7,19,0,0,5358, - 5359,7,13,0,0,5359,1070,1,0,0,0,5360,5361,7,23,0,0,5361,5362,7,14, - 0,0,5362,5363,7,12,0,0,5363,1072,1,0,0,0,5364,5365,7,6,0,0,5365, - 5366,7,14,0,0,5366,5367,7,15,0,0,5367,1074,1,0,0,0,5368,5369,7,6, - 0,0,5369,5370,7,7,0,0,5370,1076,1,0,0,0,5371,5372,7,6,0,0,5372,5373, - 7,19,0,0,5373,5374,7,23,0,0,5374,5375,5,49,0,0,5375,5376,5,48,0, - 0,5376,1078,1,0,0,0,5377,5378,7,15,0,0,5378,5379,7,17,0,0,5379,5380, - 7,7,0,0,5380,5381,5,95,0,0,5381,5382,7,9,0,0,5382,5383,7,14,0,0, - 5383,5384,7,5,0,0,5384,5385,7,6,0,0,5385,5386,7,10,0,0,5386,1080, - 1,0,0,0,5387,5388,7,15,0,0,5388,5389,7,19,0,0,5389,5390,7,12,0,0, - 5390,1082,1,0,0,0,5391,5392,7,24,0,0,5392,5393,7,17,0,0,5393,1084, - 1,0,0,0,5394,5395,7,24,0,0,5395,5396,7,19,0,0,5396,5397,7,29,0,0, - 5397,5398,7,10,0,0,5398,5399,7,13,0,0,5399,1086,1,0,0,0,5400,5401, - 7,13,0,0,5401,5402,7,5,0,0,5402,5403,7,12,0,0,5403,5404,7,17,0,0, - 5404,5405,7,5,0,0,5405,5406,7,7,0,0,5406,5407,7,9,0,0,5407,1088, - 1,0,0,0,5408,5409,7,13,0,0,5409,5410,7,19,0,0,5410,5411,7,22,0,0, - 5411,5412,7,7,0,0,5412,5413,7,12,0,0,5413,1090,1,0,0,0,5414,5415, - 7,9,0,0,5415,5416,7,14,0,0,5416,5417,7,5,0,0,5417,5418,7,6,0,0,5418, - 5419,7,10,0,0,5419,1092,1,0,0,0,5420,5421,7,9,0,0,5421,5422,7,17, - 0,0,5422,5423,7,23,0,0,5423,5424,7,7,0,0,5424,1094,1,0,0,0,5425, - 5426,7,9,0,0,5426,5427,7,28,0,0,5427,5428,7,13,0,0,5428,5429,7,16, - 0,0,5429,1096,1,0,0,0,5430,5431,7,16,0,0,5431,5432,7,13,0,0,5432, - 5433,7,17,0,0,5433,5434,7,15,0,0,5434,5435,5,95,0,0,5435,5436,7, - 9,0,0,5436,5437,7,14,0,0,5437,5438,7,5,0,0,5438,5439,7,6,0,0,5439, - 5440,7,10,0,0,5440,1098,1,0,0,0,5441,5442,7,16,0,0,5442,5443,7,13, - 0,0,5443,5444,7,22,0,0,5444,5445,7,7,0,0,5445,5446,7,14,0,0,5446, - 1100,1,0,0,0,5447,5448,7,29,0,0,5448,5449,7,17,0,0,5449,5450,7,12, - 0,0,5450,5451,7,16,0,0,5451,5452,7,20,0,0,5452,5453,5,95,0,0,5453, - 5454,7,18,0,0,5454,5455,7,22,0,0,5455,5456,7,14,0,0,5456,5457,7, - 21,0,0,5457,5458,7,10,0,0,5458,5459,7,16,0,0,5459,1102,1,0,0,0,5460, - 5461,7,13,0,0,5461,5462,7,5,0,0,5462,5463,7,7,0,0,5463,5464,7,12, - 0,0,5464,5465,7,19,0,0,5465,5466,7,15,0,0,5466,1104,1,0,0,0,5467, - 5468,7,9,0,0,5468,5469,7,10,0,0,5469,5470,7,16,0,0,5470,5471,7,9, - 0,0,5471,5472,7,10,0,0,5472,5473,7,10,0,0,5473,5474,7,12,0,0,5474, - 1106,1,0,0,0,5475,5476,7,5,0,0,5476,5477,7,14,0,0,5477,5478,7,19, - 0,0,5478,5479,7,9,0,0,5479,1108,1,0,0,0,5480,5481,7,5,0,0,5481,5482, - 7,14,0,0,5482,5483,7,19,0,0,5483,5484,7,9,0,0,5484,5485,7,12,0,0, - 5485,1110,1,0,0,0,5486,5487,7,5,0,0,5487,5488,7,9,0,0,5488,5489, - 7,17,0,0,5489,5490,7,7,0,0,5490,1112,1,0,0,0,5491,5492,7,5,0,0,5492, - 5493,7,9,0,0,5493,5494,7,17,0,0,5494,5495,7,7,0,0,5495,5496,7,12, - 0,0,5496,1114,1,0,0,0,5497,5498,7,5,0,0,5498,5499,7,16,0,0,5499, - 5500,7,5,0,0,5500,5501,7,7,0,0,5501,1116,1,0,0,0,5502,5503,7,5,0, - 0,5503,5504,7,16,0,0,5504,5505,7,5,0,0,5505,5506,7,7,0,0,5506,5507, - 7,12,0,0,5507,1118,1,0,0,0,5508,5509,7,5,0,0,5509,5510,7,16,0,0, - 5510,5511,7,5,0,0,5511,5512,7,7,0,0,5512,5513,5,50,0,0,5513,1120, - 1,0,0,0,5514,5515,7,5,0,0,5515,5516,7,16,0,0,5516,5517,7,5,0,0,5517, - 5518,7,7,0,0,5518,5519,5,50,0,0,5519,5520,7,12,0,0,5520,1122,1,0, - 0,0,5521,5522,7,14,0,0,5522,5523,7,19,0,0,5523,5524,7,9,0,0,5524, - 1124,1,0,0,0,5525,5526,7,14,0,0,5526,5527,7,19,0,0,5527,5528,7,9, - 0,0,5528,5529,7,12,0,0,5529,1126,1,0,0,0,5530,5531,7,14,0,0,5531, - 5532,7,19,0,0,5532,5533,7,16,0,0,5533,1128,1,0,0,0,5534,5535,7,14, - 0,0,5535,5536,7,19,0,0,5536,5537,7,16,0,0,5537,5538,7,12,0,0,5538, - 1130,1,0,0,0,5539,5540,7,9,0,0,5540,5541,7,17,0,0,5541,5542,7,7, - 0,0,5542,1132,1,0,0,0,5543,5544,7,9,0,0,5544,5545,7,17,0,0,5545, - 5546,7,7,0,0,5546,5547,7,12,0,0,5547,1134,1,0,0,0,5548,5549,7,16, - 0,0,5549,5550,7,5,0,0,5550,5551,7,7,0,0,5551,1136,1,0,0,0,5552,5553, - 7,16,0,0,5553,5554,7,5,0,0,5554,5555,7,7,0,0,5555,5556,7,12,0,0, - 5556,1138,1,0,0,0,5557,5558,7,9,0,0,5558,5559,7,17,0,0,5559,5560, - 7,7,0,0,5560,5561,7,20,0,0,5561,1140,1,0,0,0,5562,5563,7,14,0,0, - 5563,5564,7,19,0,0,5564,5565,7,9,0,0,5565,5566,7,20,0,0,5566,1142, - 1,0,0,0,5567,5568,7,16,0,0,5568,5569,7,5,0,0,5569,5570,7,7,0,0,5570, - 5571,7,20,0,0,5571,1144,1,0,0,0,5572,5573,7,5,0,0,5573,5574,7,9, - 0,0,5574,5575,7,17,0,0,5575,5576,7,7,0,0,5576,5577,7,20,0,0,5577, - 1146,1,0,0,0,5578,5579,7,5,0,0,5579,5580,7,14,0,0,5580,5581,7,19, - 0,0,5581,5582,7,9,0,0,5582,5583,7,20,0,0,5583,1148,1,0,0,0,5584, - 5585,7,5,0,0,5585,5586,7,16,0,0,5586,5587,7,5,0,0,5587,5588,7,7, - 0,0,5588,5589,7,20,0,0,5589,1150,1,0,0,0,5590,5591,7,18,0,0,5591, - 5592,7,17,0,0,5592,5593,7,16,0,0,5593,5594,5,95,0,0,5594,5595,7, - 6,0,0,5595,5596,7,10,0,0,5596,5597,7,7,0,0,5597,5598,7,23,0,0,5598, - 5599,7,16,0,0,5599,5600,7,20,0,0,5600,1152,1,0,0,0,5601,5602,7,14, - 0,0,5602,5603,7,20,0,0,5603,5604,7,5,0,0,5604,5605,7,13,0,0,5605, - 5606,5,95,0,0,5606,5607,7,6,0,0,5607,5608,7,10,0,0,5608,5609,7,7, - 0,0,5609,5610,7,23,0,0,5610,5611,7,16,0,0,5611,5612,7,20,0,0,5612, - 1154,1,0,0,0,5613,5614,7,14,0,0,5614,5615,7,20,0,0,5615,5616,7,5, - 0,0,5616,5617,7,13,0,0,5617,5618,7,5,0,0,5618,5619,7,14,0,0,5619, - 5620,7,16,0,0,5620,5621,7,10,0,0,5621,5622,7,13,0,0,5622,5623,5, - 95,0,0,5623,5624,7,6,0,0,5624,5625,7,10,0,0,5625,5626,7,7,0,0,5626, - 5627,7,23,0,0,5627,5628,7,16,0,0,5628,5629,7,20,0,0,5629,1156,1, - 0,0,0,5630,5631,7,6,0,0,5631,5632,7,19,0,0,5632,5633,7,29,0,0,5633, - 5634,7,10,0,0,5634,5635,7,13,0,0,5635,1158,1,0,0,0,5636,5637,7,19, - 0,0,5637,5638,7,14,0,0,5638,5639,7,16,0,0,5639,5640,7,10,0,0,5640, - 5641,7,16,0,0,5641,5642,5,95,0,0,5642,5643,7,6,0,0,5643,5644,7,10, - 0,0,5644,5645,7,7,0,0,5645,5646,7,23,0,0,5646,5647,7,16,0,0,5647, - 5648,7,20,0,0,5648,1160,1,0,0,0,5649,5650,7,22,0,0,5650,5651,7,24, - 0,0,5651,5652,7,24,0,0,5652,5653,7,10,0,0,5653,5654,7,13,0,0,5654, - 1162,1,0,0,0,5655,5656,7,5,0,0,5656,5657,7,9,0,0,5657,5658,7,14, - 0,0,5658,5659,7,17,0,0,5659,5660,7,17,0,0,5660,1164,1,0,0,0,5661, - 5662,7,18,0,0,5662,5663,7,16,0,0,5663,5664,7,13,0,0,5664,5665,7, - 17,0,0,5665,5666,7,15,0,0,5666,1166,1,0,0,0,5667,5668,7,14,0,0,5668, - 5669,7,20,0,0,5669,5670,7,13,0,0,5670,1168,1,0,0,0,5671,5672,7,14, - 0,0,5672,5673,7,19,0,0,5673,5674,7,7,0,0,5674,5675,7,14,0,0,5675, - 5676,7,5,0,0,5676,5677,7,16,0,0,5677,1170,1,0,0,0,5678,5679,7,14, - 0,0,5679,5680,7,19,0,0,5680,5681,7,7,0,0,5681,5682,7,14,0,0,5682, - 5683,7,5,0,0,5683,5684,7,16,0,0,5684,5685,5,95,0,0,5685,5686,7,29, - 0,0,5686,5687,7,9,0,0,5687,1172,1,0,0,0,5688,5689,7,25,0,0,5689, - 5690,7,19,0,0,5690,5691,7,13,0,0,5691,5692,7,15,0,0,5692,5693,7, - 5,0,0,5693,5694,7,16,0,0,5694,1174,1,0,0,0,5695,5696,7,17,0,0,5696, - 5697,7,7,0,0,5697,5698,7,17,0,0,5698,5699,7,16,0,0,5699,5700,7,14, - 0,0,5700,5701,7,5,0,0,5701,5702,7,24,0,0,5702,1176,1,0,0,0,5703, - 5704,7,6,0,0,5704,5705,7,10,0,0,5705,5706,7,7,0,0,5706,5707,7,23, - 0,0,5707,5708,7,16,0,0,5708,5709,7,20,0,0,5709,1178,1,0,0,0,5710, - 5711,7,6,0,0,5711,5712,7,24,0,0,5712,5713,7,5,0,0,5713,5714,7,12, - 0,0,5714,1180,1,0,0,0,5715,5716,7,6,0,0,5716,5717,7,16,0,0,5717, - 5718,7,13,0,0,5718,5719,7,17,0,0,5719,5720,7,15,0,0,5720,1182,1, - 0,0,0,5721,5722,7,15,0,0,5722,5723,7,12,0,0,5723,5724,5,53,0,0,5724, - 1184,1,0,0,0,5725,5726,7,24,0,0,5726,5727,7,5,0,0,5727,5728,7,13, - 0,0,5728,5729,7,9,0,0,5729,5730,7,10,0,0,5730,5731,5,95,0,0,5731, - 5732,7,17,0,0,5732,5733,7,12,0,0,5733,5734,7,10,0,0,5734,5735,7, - 7,0,0,5735,5736,7,16,0,0,5736,1186,1,0,0,0,5737,5738,7,24,0,0,5738, - 5739,7,23,0,0,5739,5740,5,95,0,0,5740,5741,7,14,0,0,5741,5742,7, - 6,0,0,5742,5743,7,17,0,0,5743,5744,7,10,0,0,5744,5745,7,7,0,0,5745, - 5746,7,16,0,0,5746,5747,5,95,0,0,5747,5748,7,10,0,0,5748,5749,7, - 7,0,0,5749,5750,7,14,0,0,5750,5751,7,19,0,0,5751,5752,7,12,0,0,5752, - 5753,7,17,0,0,5753,5754,7,7,0,0,5754,5755,7,23,0,0,5755,1188,1,0, - 0,0,5756,5757,7,28,0,0,5757,5758,7,22,0,0,5758,5759,7,19,0,0,5759, - 5760,7,16,0,0,5760,5761,7,10,0,0,5761,5762,5,95,0,0,5762,5763,7, - 17,0,0,5763,5764,7,12,0,0,5764,5765,7,10,0,0,5765,5766,7,7,0,0,5766, - 5767,7,16,0,0,5767,1190,1,0,0,0,5768,5769,7,28,0,0,5769,5770,7,22, - 0,0,5770,5771,7,19,0,0,5771,5772,7,16,0,0,5772,5773,7,10,0,0,5773, - 5774,5,95,0,0,5774,5775,7,6,0,0,5775,5776,7,17,0,0,5776,5777,7,16, - 0,0,5777,5778,7,10,0,0,5778,5779,7,13,0,0,5779,5780,7,5,0,0,5780, - 5781,7,6,0,0,5781,1192,1,0,0,0,5782,5783,7,28,0,0,5783,5784,7,22, - 0,0,5784,5785,7,19,0,0,5785,5786,7,16,0,0,5786,5787,7,10,0,0,5787, - 5788,5,95,0,0,5788,5789,7,7,0,0,5789,5790,7,22,0,0,5790,5791,7,6, - 0,0,5791,5792,7,6,0,0,5792,5793,7,5,0,0,5793,5794,7,18,0,0,5794, - 5795,7,6,0,0,5795,5796,7,10,0,0,5796,1194,1,0,0,0,5797,5798,7,13, - 0,0,5798,5799,7,10,0,0,5799,5800,7,23,0,0,5800,5801,7,10,0,0,5801, - 5802,7,26,0,0,5802,5803,7,24,0,0,5803,5804,5,95,0,0,5804,5805,7, - 14,0,0,5805,5806,7,19,0,0,5806,5807,7,22,0,0,5807,5808,7,7,0,0,5808, - 5809,7,16,0,0,5809,1196,1,0,0,0,5810,5811,7,13,0,0,5811,5812,7,10, - 0,0,5812,5813,7,23,0,0,5813,5814,7,10,0,0,5814,5815,7,26,0,0,5815, - 5816,7,24,0,0,5816,5817,5,95,0,0,5817,5818,7,17,0,0,5818,5819,7, - 7,0,0,5819,5820,7,9,0,0,5820,5821,7,16,0,0,5821,5822,7,13,0,0,5822, - 1198,1,0,0,0,5823,5824,7,13,0,0,5824,5825,7,10,0,0,5825,5826,7,23, - 0,0,5826,5827,7,10,0,0,5827,5828,7,26,0,0,5828,5829,7,24,0,0,5829, - 5830,5,95,0,0,5830,5831,7,6,0,0,5831,5832,7,17,0,0,5832,5833,7,21, - 0,0,5833,5834,7,10,0,0,5834,1200,1,0,0,0,5835,5836,7,13,0,0,5836, - 5837,7,10,0,0,5837,5838,7,23,0,0,5838,5839,7,10,0,0,5839,5840,7, - 26,0,0,5840,5841,7,24,0,0,5841,5842,5,95,0,0,5842,5843,7,15,0,0, - 5843,5844,7,5,0,0,5844,5845,7,16,0,0,5845,5846,7,14,0,0,5846,5847, - 7,20,0,0,5847,1202,1,0,0,0,5848,5849,7,13,0,0,5849,5850,7,10,0,0, - 5850,5851,7,23,0,0,5851,5852,7,10,0,0,5852,5853,7,26,0,0,5853,5854, - 7,24,0,0,5854,5855,5,95,0,0,5855,5856,7,15,0,0,5856,5857,7,5,0,0, - 5857,5858,7,16,0,0,5858,5859,7,14,0,0,5859,5860,7,20,0,0,5860,5861, - 7,10,0,0,5861,5862,7,9,0,0,5862,1204,1,0,0,0,5863,5864,7,13,0,0, - 5864,5865,7,10,0,0,5865,5866,7,23,0,0,5866,5867,7,10,0,0,5867,5868, - 7,26,0,0,5868,5869,7,24,0,0,5869,5870,5,95,0,0,5870,5871,7,13,0, - 0,5871,5872,7,10,0,0,5872,5873,7,24,0,0,5873,5874,7,6,0,0,5874,5875, - 7,5,0,0,5875,5876,7,14,0,0,5876,5877,7,10,0,0,5877,1206,1,0,0,0, - 5878,5879,7,13,0,0,5879,5880,7,10,0,0,5880,5881,7,23,0,0,5881,5882, - 7,10,0,0,5882,5883,7,26,0,0,5883,5884,7,24,0,0,5884,5885,5,95,0, - 0,5885,5886,7,9,0,0,5886,5887,7,24,0,0,5887,5888,7,6,0,0,5888,5889, - 7,17,0,0,5889,5890,7,16,0,0,5890,5891,5,95,0,0,5891,5892,7,16,0, - 0,5892,5893,7,19,0,0,5893,5894,5,95,0,0,5894,5895,7,5,0,0,5895,5896, - 7,13,0,0,5896,5897,7,13,0,0,5897,5898,7,5,0,0,5898,5899,7,8,0,0, - 5899,1208,1,0,0,0,5900,5901,7,13,0,0,5901,5902,7,10,0,0,5902,5903, - 7,23,0,0,5903,5904,7,10,0,0,5904,5905,7,26,0,0,5905,5906,7,24,0, - 0,5906,5907,5,95,0,0,5907,5908,7,9,0,0,5908,5909,7,24,0,0,5909,5910, - 7,6,0,0,5910,5911,7,17,0,0,5911,5912,7,16,0,0,5912,5913,5,95,0,0, - 5913,5914,7,16,0,0,5914,5915,7,19,0,0,5915,5916,5,95,0,0,5916,5917, - 7,16,0,0,5917,5918,7,5,0,0,5918,5919,7,18,0,0,5919,5920,7,6,0,0, - 5920,5921,7,10,0,0,5921,1210,1,0,0,0,5922,5923,7,13,0,0,5923,5924, - 7,10,0,0,5924,5925,7,23,0,0,5925,5926,7,10,0,0,5926,5927,7,26,0, - 0,5927,5928,7,24,0,0,5928,5929,5,95,0,0,5929,5930,7,9,0,0,5930,5931, - 7,22,0,0,5931,5932,7,18,0,0,5932,5933,7,9,0,0,5933,5934,7,16,0,0, - 5934,5935,7,13,0,0,5935,1212,1,0,0,0,5936,5937,7,13,0,0,5937,5938, - 7,10,0,0,5938,5939,7,24,0,0,5939,5940,7,10,0,0,5940,5941,7,5,0,0, - 5941,5942,7,16,0,0,5942,1214,1,0,0,0,5943,5944,7,13,0,0,5944,5945, - 7,24,0,0,5945,5946,7,5,0,0,5946,5947,7,12,0,0,5947,1216,1,0,0,0, - 5948,5949,7,13,0,0,5949,5950,7,16,0,0,5950,5951,7,13,0,0,5951,5952, - 7,17,0,0,5952,5953,7,15,0,0,5953,1218,1,0,0,0,5954,5955,7,9,0,0, - 5955,5956,7,24,0,0,5956,5957,7,6,0,0,5957,5958,7,17,0,0,5958,5959, - 7,16,0,0,5959,5960,5,95,0,0,5960,5961,7,24,0,0,5961,5962,7,5,0,0, - 5962,5963,7,13,0,0,5963,5964,7,16,0,0,5964,1220,1,0,0,0,5965,5966, - 7,9,0,0,5966,5967,7,16,0,0,5967,5968,7,5,0,0,5968,5969,7,13,0,0, - 5969,5970,7,16,0,0,5970,5971,7,9,0,0,5971,5972,5,95,0,0,5972,5973, - 7,29,0,0,5973,5974,7,17,0,0,5974,5975,7,16,0,0,5975,5976,7,20,0, - 0,5976,1222,1,0,0,0,5977,5978,7,9,0,0,5978,5979,7,16,0,0,5979,5980, - 7,13,0,0,5980,5981,7,17,0,0,5981,5982,7,7,0,0,5982,5983,7,23,0,0, - 5983,5984,5,95,0,0,5984,5985,7,16,0,0,5985,5986,7,19,0,0,5986,5987, - 5,95,0,0,5987,5988,7,5,0,0,5988,5989,7,13,0,0,5989,5990,7,13,0,0, - 5990,5991,7,5,0,0,5991,5992,7,8,0,0,5992,1224,1,0,0,0,5993,5994, - 7,9,0,0,5994,5995,7,16,0,0,5995,5996,7,13,0,0,5996,5997,7,17,0,0, - 5997,5998,7,7,0,0,5998,5999,7,23,0,0,5999,6000,5,95,0,0,6000,6001, - 7,16,0,0,6001,6002,7,19,0,0,6002,6003,5,95,0,0,6003,6004,7,16,0, - 0,6004,6005,7,5,0,0,6005,6006,7,18,0,0,6006,6007,7,6,0,0,6007,6008, - 7,10,0,0,6008,1226,1,0,0,0,6009,6010,7,9,0,0,6010,6011,7,16,0,0, - 6011,6012,7,13,0,0,6012,6013,7,24,0,0,6013,6014,7,19,0,0,6014,6015, - 7,9,0,0,6015,1228,1,0,0,0,6016,6017,7,9,0,0,6017,6018,7,22,0,0,6018, - 6019,7,18,0,0,6019,6020,7,9,0,0,6020,6021,7,16,0,0,6021,6022,7,13, - 0,0,6022,1230,1,0,0,0,6023,6024,7,16,0,0,6024,6025,7,19,0,0,6025, - 6026,5,95,0,0,6026,6027,7,5,0,0,6027,6028,7,9,0,0,6028,6029,7,14, - 0,0,6029,6030,7,17,0,0,6030,6031,7,17,0,0,6031,1232,1,0,0,0,6032, - 6033,7,16,0,0,6033,6034,7,19,0,0,6034,6035,5,95,0,0,6035,6036,7, - 20,0,0,6036,6037,7,10,0,0,6037,6038,7,26,0,0,6038,1234,1,0,0,0,6039, - 6040,7,16,0,0,6040,6041,7,13,0,0,6041,6042,7,5,0,0,6042,6043,7,7, - 0,0,6043,6044,7,9,0,0,6044,6045,7,6,0,0,6045,6046,7,5,0,0,6046,6047, - 7,16,0,0,6047,6048,7,10,0,0,6048,1236,1,0,0,0,6049,6050,7,22,0,0, - 6050,6051,7,7,0,0,6051,6052,7,17,0,0,6052,6053,7,9,0,0,6053,6054, - 7,16,0,0,6054,6055,7,13,0,0,6055,1238,1,0,0,0,6056,6057,7,5,0,0, - 6057,6058,7,23,0,0,6058,6059,7,10,0,0,6059,1240,1,0,0,0,6060,6061, - 7,14,0,0,6061,6062,7,6,0,0,6062,6063,7,19,0,0,6063,6064,7,14,0,0, - 6064,6065,7,21,0,0,6065,6066,5,95,0,0,6066,6067,7,16,0,0,6067,6068, - 7,17,0,0,6068,6069,7,15,0,0,6069,6070,7,10,0,0,6070,6071,7,9,0,0, - 6071,6072,7,16,0,0,6072,6073,7,5,0,0,6073,6074,7,15,0,0,6074,6075, - 7,24,0,0,6075,1242,1,0,0,0,6076,6077,7,12,0,0,6077,6078,7,5,0,0, - 6078,6079,7,16,0,0,6079,6080,7,10,0,0,6080,6081,5,95,0,0,6081,6082, - 7,18,0,0,6082,6083,7,17,0,0,6083,6084,7,7,0,0,6084,1244,1,0,0,0, - 6085,6086,7,12,0,0,6086,6087,7,5,0,0,6087,6088,7,16,0,0,6088,6089, - 7,10,0,0,6089,6090,5,95,0,0,6090,6091,7,24,0,0,6091,6092,7,5,0,0, - 6092,6093,7,13,0,0,6093,6094,7,16,0,0,6094,1246,1,0,0,0,6095,6096, - 7,12,0,0,6096,6097,7,5,0,0,6097,6098,7,16,0,0,6098,6099,7,10,0,0, - 6099,6100,5,95,0,0,6100,6101,7,16,0,0,6101,6102,7,13,0,0,6102,6103, - 7,22,0,0,6103,6104,7,7,0,0,6104,6105,7,14,0,0,6105,1248,1,0,0,0, - 6106,6107,7,17,0,0,6107,6108,7,9,0,0,6108,6109,7,25,0,0,6109,6110, - 7,17,0,0,6110,6111,7,7,0,0,6111,6112,7,17,0,0,6112,6113,7,16,0,0, - 6113,6114,7,10,0,0,6114,1250,1,0,0,0,6115,6116,7,30,0,0,6116,6117, - 7,22,0,0,6117,6118,7,9,0,0,6118,6119,7,16,0,0,6119,6120,7,17,0,0, - 6120,6121,7,25,0,0,6121,6122,7,8,0,0,6122,6123,5,95,0,0,6123,6124, - 7,12,0,0,6124,6125,7,5,0,0,6125,6126,7,8,0,0,6126,6127,7,9,0,0,6127, - 1252,1,0,0,0,6128,6129,7,30,0,0,6129,6130,7,22,0,0,6130,6131,7,9, - 0,0,6131,6132,7,16,0,0,6132,6133,7,17,0,0,6133,6134,7,25,0,0,6134, - 6135,7,8,0,0,6135,6136,5,95,0,0,6136,6137,7,20,0,0,6137,6138,7,19, - 0,0,6138,6139,7,22,0,0,6139,6140,7,13,0,0,6140,6141,7,9,0,0,6141, - 1254,1,0,0,0,6142,6143,7,30,0,0,6143,6144,7,22,0,0,6144,6145,7,9, - 0,0,6145,6146,7,16,0,0,6146,6147,7,17,0,0,6147,6148,7,25,0,0,6148, - 6149,7,8,0,0,6149,6150,5,95,0,0,6150,6151,7,17,0,0,6151,6152,7,7, - 0,0,6152,6153,7,16,0,0,6153,6154,7,10,0,0,6154,6155,7,13,0,0,6155, - 6156,7,27,0,0,6156,6157,7,5,0,0,6157,6158,7,6,0,0,6158,1256,1,0, - 0,0,6159,6160,7,15,0,0,6160,6161,7,5,0,0,6161,6162,7,21,0,0,6162, - 6163,7,10,0,0,6163,6164,5,95,0,0,6164,6165,7,12,0,0,6165,6166,7, - 5,0,0,6166,6167,7,16,0,0,6167,6168,7,10,0,0,6168,1258,1,0,0,0,6169, - 6170,7,15,0,0,6170,6171,7,5,0,0,6171,6172,7,21,0,0,6172,6173,7,10, - 0,0,6173,6174,5,95,0,0,6174,6175,7,17,0,0,6175,6176,7,7,0,0,6176, - 6177,7,16,0,0,6177,6178,7,10,0,0,6178,6179,7,13,0,0,6179,6180,7, - 27,0,0,6180,6181,7,5,0,0,6181,6182,7,6,0,0,6182,1260,1,0,0,0,6183, - 6184,7,15,0,0,6184,6185,7,5,0,0,6185,6186,7,21,0,0,6186,6187,7,10, - 0,0,6187,6188,5,95,0,0,6188,6189,7,16,0,0,6189,6190,7,17,0,0,6190, - 6191,7,15,0,0,6191,6192,7,10,0,0,6192,1262,1,0,0,0,6193,6194,7,15, - 0,0,6194,6195,7,5,0,0,6195,6196,7,21,0,0,6196,6197,7,10,0,0,6197, - 6198,5,95,0,0,6198,6199,7,16,0,0,6199,6200,7,17,0,0,6200,6201,7, - 15,0,0,6201,6202,7,10,0,0,6202,6203,7,9,0,0,6203,6204,7,16,0,0,6204, - 6205,7,5,0,0,6205,6206,7,15,0,0,6206,6207,7,24,0,0,6207,1264,1,0, - 0,0,6208,6209,7,15,0,0,6209,6210,7,5,0,0,6210,6211,7,21,0,0,6211, - 6212,7,10,0,0,6212,6213,5,95,0,0,6213,6214,7,16,0,0,6214,6215,7, - 17,0,0,6215,6216,7,15,0,0,6216,6217,7,10,0,0,6217,6218,7,9,0,0,6218, - 6219,7,16,0,0,6219,6220,7,5,0,0,6220,6221,7,15,0,0,6221,6222,7,24, - 0,0,6222,6223,7,16,0,0,6223,6224,7,11,0,0,6224,1266,1,0,0,0,6225, - 6226,7,7,0,0,6226,6227,7,19,0,0,6227,6228,7,29,0,0,6228,1268,1,0, - 0,0,6229,6230,7,9,0,0,6230,6231,7,16,0,0,6231,6232,7,5,0,0,6232, - 6233,7,16,0,0,6233,6234,7,10,0,0,6234,6235,7,15,0,0,6235,6236,7, - 10,0,0,6236,6237,7,7,0,0,6237,6238,7,16,0,0,6238,6239,5,95,0,0,6239, - 6240,7,16,0,0,6240,6241,7,17,0,0,6241,6242,7,15,0,0,6242,6243,7, - 10,0,0,6243,6244,7,9,0,0,6244,6245,7,16,0,0,6245,6246,7,5,0,0,6246, - 6247,7,15,0,0,6247,6248,7,24,0,0,6248,1270,1,0,0,0,6249,6250,7,16, - 0,0,6250,6251,7,17,0,0,6251,6252,7,15,0,0,6252,6253,7,10,0,0,6253, - 6254,7,19,0,0,6254,6255,7,25,0,0,6255,6256,7,12,0,0,6256,6257,7, - 5,0,0,6257,6258,7,8,0,0,6258,1272,1,0,0,0,6259,6260,7,16,0,0,6260, - 6261,7,13,0,0,6261,6262,7,5,0,0,6262,6263,7,7,0,0,6263,6264,7,9, - 0,0,6264,6265,7,5,0,0,6265,6266,7,14,0,0,6266,6267,7,16,0,0,6267, - 6268,7,17,0,0,6268,6269,7,19,0,0,6269,6270,7,7,0,0,6270,6271,5,95, - 0,0,6271,6272,7,16,0,0,6272,6273,7,17,0,0,6273,6274,7,15,0,0,6274, - 6275,7,10,0,0,6275,6276,7,9,0,0,6276,6277,7,16,0,0,6277,6278,7,5, - 0,0,6278,6279,7,15,0,0,6279,6280,7,24,0,0,6280,1274,1,0,0,0,6281, - 6282,7,16,0,0,6282,6283,7,19,0,0,6283,6284,5,95,0,0,6284,6285,7, - 16,0,0,6285,6286,7,17,0,0,6286,6287,7,15,0,0,6287,6288,7,10,0,0, - 6288,6289,7,9,0,0,6289,6290,7,16,0,0,6290,6291,7,5,0,0,6291,6292, - 7,15,0,0,6292,6293,7,24,0,0,6293,1276,1,0,0,0,6294,6295,7,16,0,0, - 6295,6296,7,19,0,0,6296,6297,5,95,0,0,6297,6298,7,14,0,0,6298,6299, - 7,20,0,0,6299,6300,7,5,0,0,6300,6301,7,13,0,0,6301,1278,1,0,0,0, - 6302,6303,7,16,0,0,6303,6304,7,19,0,0,6304,6305,5,95,0,0,6305,6306, - 7,12,0,0,6306,6307,7,5,0,0,6307,6308,7,16,0,0,6308,6309,7,10,0,0, - 6309,1280,1,0,0,0,6310,6311,7,16,0,0,6311,6312,7,19,0,0,6312,6313, - 5,95,0,0,6313,6314,7,7,0,0,6314,6315,7,22,0,0,6315,6316,7,15,0,0, - 6316,6317,7,18,0,0,6317,6318,7,10,0,0,6318,6319,7,13,0,0,6319,1282, - 1,0,0,0,6320,6324,3,1285,640,0,6321,6323,3,1287,641,0,6322,6321, - 1,0,0,0,6323,6326,1,0,0,0,6324,6322,1,0,0,0,6324,6325,1,0,0,0,6325, - 1284,1,0,0,0,6326,6324,1,0,0,0,6327,6334,7,31,0,0,6328,6329,7,32, - 0,0,6329,6334,4,640,6,0,6330,6331,7,33,0,0,6331,6332,7,34,0,0,6332, - 6334,4,640,7,0,6333,6327,1,0,0,0,6333,6328,1,0,0,0,6333,6330,1,0, - 0,0,6334,1286,1,0,0,0,6335,6338,3,1289,642,0,6336,6338,5,36,0,0, - 6337,6335,1,0,0,0,6337,6336,1,0,0,0,6338,1288,1,0,0,0,6339,6342, - 3,1285,640,0,6340,6342,7,0,0,0,6341,6339,1,0,0,0,6341,6340,1,0,0, - 0,6342,1290,1,0,0,0,6343,6344,3,1293,644,0,6344,6345,5,34,0,0,6345, - 1292,1,0,0,0,6346,6352,5,34,0,0,6347,6348,5,34,0,0,6348,6351,5,34, - 0,0,6349,6351,8,35,0,0,6350,6347,1,0,0,0,6350,6349,1,0,0,0,6351, - 6354,1,0,0,0,6352,6350,1,0,0,0,6352,6353,1,0,0,0,6353,1294,1,0,0, - 0,6354,6352,1,0,0,0,6355,6356,3,1297,646,0,6356,6357,5,34,0,0,6357, - 1296,1,0,0,0,6358,6364,5,34,0,0,6359,6360,5,34,0,0,6360,6363,5,34, - 0,0,6361,6363,8,36,0,0,6362,6359,1,0,0,0,6362,6361,1,0,0,0,6363, - 6366,1,0,0,0,6364,6362,1,0,0,0,6364,6365,1,0,0,0,6365,1298,1,0,0, - 0,6366,6364,1,0,0,0,6367,6368,7,22,0,0,6368,6369,5,38,0,0,6369,6370, - 3,1291,643,0,6370,1300,1,0,0,0,6371,6372,7,22,0,0,6372,6373,5,38, - 0,0,6373,6374,3,1293,644,0,6374,1302,1,0,0,0,6375,6376,7,22,0,0, - 6376,6377,5,38,0,0,6377,6378,3,1295,645,0,6378,1304,1,0,0,0,6379, - 6380,7,22,0,0,6380,6381,5,38,0,0,6381,6382,3,1297,646,0,6382,1306, - 1,0,0,0,6383,6384,3,1309,652,0,6384,6385,5,39,0,0,6385,1308,1,0, - 0,0,6386,6392,5,39,0,0,6387,6388,5,39,0,0,6388,6391,5,39,0,0,6389, - 6391,8,37,0,0,6390,6387,1,0,0,0,6390,6389,1,0,0,0,6391,6394,1,0, - 0,0,6392,6390,1,0,0,0,6392,6393,1,0,0,0,6393,1310,1,0,0,0,6394,6392, - 1,0,0,0,6395,6396,7,10,0,0,6396,6397,5,39,0,0,6397,6398,1,0,0,0, - 6398,6399,6,653,2,0,6399,6400,6,653,3,0,6400,1312,1,0,0,0,6401,6402, - 3,1315,655,0,6402,6403,5,39,0,0,6403,1314,1,0,0,0,6404,6405,7,22, - 0,0,6405,6406,5,38,0,0,6406,6407,3,1309,652,0,6407,1316,1,0,0,0, - 6408,6410,5,36,0,0,6409,6411,3,1319,657,0,6410,6409,1,0,0,0,6410, - 6411,1,0,0,0,6411,6412,1,0,0,0,6412,6413,5,36,0,0,6413,6414,6,656, - 4,0,6414,6415,1,0,0,0,6415,6416,6,656,5,0,6416,1318,1,0,0,0,6417, - 6421,3,1285,640,0,6418,6420,3,1289,642,0,6419,6418,1,0,0,0,6420, - 6423,1,0,0,0,6421,6419,1,0,0,0,6421,6422,1,0,0,0,6422,1320,1,0,0, - 0,6423,6421,1,0,0,0,6424,6425,3,1323,659,0,6425,6426,5,39,0,0,6426, - 1322,1,0,0,0,6427,6428,7,18,0,0,6428,6432,5,39,0,0,6429,6431,7,38, - 0,0,6430,6429,1,0,0,0,6431,6434,1,0,0,0,6432,6430,1,0,0,0,6432,6433, - 1,0,0,0,6433,1324,1,0,0,0,6434,6432,1,0,0,0,6435,6436,3,1327,661, - 0,6436,6437,5,39,0,0,6437,1326,1,0,0,0,6438,6439,7,18,0,0,6439,6440, - 3,1309,652,0,6440,1328,1,0,0,0,6441,6442,3,1331,663,0,6442,6443, - 5,39,0,0,6443,1330,1,0,0,0,6444,6445,7,26,0,0,6445,6449,5,39,0,0, - 6446,6448,7,39,0,0,6447,6446,1,0,0,0,6448,6451,1,0,0,0,6449,6447, - 1,0,0,0,6449,6450,1,0,0,0,6450,1332,1,0,0,0,6451,6449,1,0,0,0,6452, - 6453,3,1335,665,0,6453,6454,5,39,0,0,6454,1334,1,0,0,0,6455,6456, - 7,26,0,0,6456,6457,3,1309,652,0,6457,1336,1,0,0,0,6458,6459,3,1343, - 669,0,6459,1338,1,0,0,0,6460,6461,3,1343,669,0,6461,6462,5,46,0, - 0,6462,6463,5,46,0,0,6463,6464,1,0,0,0,6464,6465,6,667,6,0,6465, - 1340,1,0,0,0,6466,6467,3,1343,669,0,6467,6469,5,46,0,0,6468,6470, - 3,1343,669,0,6469,6468,1,0,0,0,6469,6470,1,0,0,0,6470,6476,1,0,0, - 0,6471,6473,7,10,0,0,6472,6474,7,1,0,0,6473,6472,1,0,0,0,6473,6474, - 1,0,0,0,6474,6475,1,0,0,0,6475,6477,3,1343,669,0,6476,6471,1,0,0, - 0,6476,6477,1,0,0,0,6477,6495,1,0,0,0,6478,6479,5,46,0,0,6479,6485, - 3,1343,669,0,6480,6482,7,10,0,0,6481,6483,7,1,0,0,6482,6481,1,0, - 0,0,6482,6483,1,0,0,0,6483,6484,1,0,0,0,6484,6486,3,1343,669,0,6485, - 6480,1,0,0,0,6485,6486,1,0,0,0,6486,6495,1,0,0,0,6487,6488,3,1343, - 669,0,6488,6490,7,10,0,0,6489,6491,7,1,0,0,6490,6489,1,0,0,0,6490, - 6491,1,0,0,0,6491,6492,1,0,0,0,6492,6493,3,1343,669,0,6493,6495, - 1,0,0,0,6494,6466,1,0,0,0,6494,6478,1,0,0,0,6494,6487,1,0,0,0,6495, - 1342,1,0,0,0,6496,6498,7,0,0,0,6497,6496,1,0,0,0,6498,6499,1,0,0, - 0,6499,6497,1,0,0,0,6499,6500,1,0,0,0,6500,1344,1,0,0,0,6501,6502, - 5,58,0,0,6502,6506,7,40,0,0,6503,6505,7,41,0,0,6504,6503,1,0,0,0, - 6505,6508,1,0,0,0,6506,6504,1,0,0,0,6506,6507,1,0,0,0,6507,1346, - 1,0,0,0,6508,6506,1,0,0,0,6509,6510,5,58,0,0,6510,6511,5,34,0,0, - 6511,6519,1,0,0,0,6512,6513,5,92,0,0,6513,6518,9,0,0,0,6514,6515, - 5,34,0,0,6515,6518,5,34,0,0,6516,6518,8,42,0,0,6517,6512,1,0,0,0, - 6517,6514,1,0,0,0,6517,6516,1,0,0,0,6518,6521,1,0,0,0,6519,6517, - 1,0,0,0,6519,6520,1,0,0,0,6520,6522,1,0,0,0,6521,6519,1,0,0,0,6522, - 6523,5,34,0,0,6523,1348,1,0,0,0,6524,6526,7,43,0,0,6525,6524,1,0, - 0,0,6526,6527,1,0,0,0,6527,6525,1,0,0,0,6527,6528,1,0,0,0,6528,6529, - 1,0,0,0,6529,6530,6,672,7,0,6530,1350,1,0,0,0,6531,6533,5,13,0,0, - 6532,6534,5,10,0,0,6533,6532,1,0,0,0,6533,6534,1,0,0,0,6534,6537, - 1,0,0,0,6535,6537,5,10,0,0,6536,6531,1,0,0,0,6536,6535,1,0,0,0,6537, - 6538,1,0,0,0,6538,6539,6,673,7,0,6539,1352,1,0,0,0,6540,6541,5,45, - 0,0,6541,6542,5,45,0,0,6542,6546,1,0,0,0,6543,6545,8,44,0,0,6544, - 6543,1,0,0,0,6545,6548,1,0,0,0,6546,6544,1,0,0,0,6546,6547,1,0,0, - 0,6547,6549,1,0,0,0,6548,6546,1,0,0,0,6549,6550,6,674,7,0,6550,1354, - 1,0,0,0,6551,6552,5,47,0,0,6552,6553,5,42,0,0,6553,6576,1,0,0,0, - 6554,6556,5,47,0,0,6555,6554,1,0,0,0,6556,6559,1,0,0,0,6557,6555, - 1,0,0,0,6557,6558,1,0,0,0,6558,6560,1,0,0,0,6559,6557,1,0,0,0,6560, - 6575,3,1355,675,0,6561,6575,8,45,0,0,6562,6564,5,47,0,0,6563,6562, - 1,0,0,0,6564,6565,1,0,0,0,6565,6563,1,0,0,0,6565,6566,1,0,0,0,6566, - 6567,1,0,0,0,6567,6575,8,45,0,0,6568,6570,5,42,0,0,6569,6568,1,0, - 0,0,6570,6571,1,0,0,0,6571,6569,1,0,0,0,6571,6572,1,0,0,0,6572,6573, - 1,0,0,0,6573,6575,8,45,0,0,6574,6557,1,0,0,0,6574,6561,1,0,0,0,6574, - 6563,1,0,0,0,6574,6569,1,0,0,0,6575,6578,1,0,0,0,6576,6574,1,0,0, - 0,6576,6577,1,0,0,0,6577,6582,1,0,0,0,6578,6576,1,0,0,0,6579,6581, - 5,42,0,0,6580,6579,1,0,0,0,6581,6584,1,0,0,0,6582,6580,1,0,0,0,6582, - 6583,1,0,0,0,6583,6585,1,0,0,0,6584,6582,1,0,0,0,6585,6586,5,42, - 0,0,6586,6587,5,47,0,0,6587,6588,1,0,0,0,6588,6589,6,675,7,0,6589, - 1356,1,0,0,0,6590,6591,5,47,0,0,6591,6592,5,42,0,0,6592,6617,1,0, - 0,0,6593,6595,5,47,0,0,6594,6593,1,0,0,0,6595,6598,1,0,0,0,6596, - 6594,1,0,0,0,6596,6597,1,0,0,0,6597,6599,1,0,0,0,6598,6596,1,0,0, - 0,6599,6616,3,1355,675,0,6600,6616,8,45,0,0,6601,6603,5,47,0,0,6602, - 6601,1,0,0,0,6603,6604,1,0,0,0,6604,6602,1,0,0,0,6604,6605,1,0,0, - 0,6605,6606,1,0,0,0,6606,6614,8,45,0,0,6607,6609,5,42,0,0,6608,6607, - 1,0,0,0,6609,6610,1,0,0,0,6610,6608,1,0,0,0,6610,6611,1,0,0,0,6611, - 6612,1,0,0,0,6612,6614,8,45,0,0,6613,6602,1,0,0,0,6613,6608,1,0, - 0,0,6614,6616,1,0,0,0,6615,6596,1,0,0,0,6615,6600,1,0,0,0,6615,6613, - 1,0,0,0,6616,6619,1,0,0,0,6617,6615,1,0,0,0,6617,6618,1,0,0,0,6618, - 6637,1,0,0,0,6619,6617,1,0,0,0,6620,6622,5,47,0,0,6621,6620,1,0, - 0,0,6622,6623,1,0,0,0,6623,6621,1,0,0,0,6623,6624,1,0,0,0,6624,6638, - 1,0,0,0,6625,6627,5,42,0,0,6626,6625,1,0,0,0,6627,6628,1,0,0,0,6628, - 6626,1,0,0,0,6628,6629,1,0,0,0,6629,6638,1,0,0,0,6630,6632,5,47, - 0,0,6631,6630,1,0,0,0,6632,6635,1,0,0,0,6633,6631,1,0,0,0,6633,6634, - 1,0,0,0,6634,6636,1,0,0,0,6635,6633,1,0,0,0,6636,6638,3,1357,676, - 0,6637,6621,1,0,0,0,6637,6626,1,0,0,0,6637,6633,1,0,0,0,6637,6638, - 1,0,0,0,6638,6639,1,0,0,0,6639,6640,6,676,8,0,6640,1358,1,0,0,0, - 6641,6653,5,92,0,0,6642,6652,8,46,0,0,6643,6647,5,34,0,0,6644,6646, - 8,47,0,0,6645,6644,1,0,0,0,6646,6649,1,0,0,0,6647,6645,1,0,0,0,6647, - 6648,1,0,0,0,6648,6650,1,0,0,0,6649,6647,1,0,0,0,6650,6652,5,34, - 0,0,6651,6642,1,0,0,0,6651,6643,1,0,0,0,6652,6655,1,0,0,0,6653,6651, - 1,0,0,0,6653,6654,1,0,0,0,6654,6663,1,0,0,0,6655,6653,1,0,0,0,6656, - 6660,5,34,0,0,6657,6659,8,47,0,0,6658,6657,1,0,0,0,6659,6662,1,0, - 0,0,6660,6658,1,0,0,0,6660,6661,1,0,0,0,6661,6664,1,0,0,0,6662,6660, - 1,0,0,0,6663,6656,1,0,0,0,6663,6664,1,0,0,0,6664,1360,1,0,0,0,6665, - 6666,5,92,0,0,6666,6667,5,92,0,0,6667,1362,1,0,0,0,6668,6669,9,0, - 0,0,6669,1364,1,0,0,0,6670,6671,3,1369,682,0,6671,6672,5,39,0,0, - 6672,6673,1,0,0,0,6673,6674,6,680,9,0,6674,1366,1,0,0,0,6675,6677, - 3,1369,682,0,6676,6678,5,92,0,0,6677,6676,1,0,0,0,6677,6678,1,0, - 0,0,6678,6679,1,0,0,0,6679,6680,5,0,0,1,6680,1368,1,0,0,0,6681,6682, - 5,39,0,0,6682,6705,5,39,0,0,6683,6701,5,92,0,0,6684,6685,5,120,0, - 0,6685,6702,7,39,0,0,6686,6687,5,117,0,0,6687,6688,7,39,0,0,6688, - 6689,7,39,0,0,6689,6690,7,39,0,0,6690,6702,7,39,0,0,6691,6692,5, - 85,0,0,6692,6693,7,39,0,0,6693,6694,7,39,0,0,6694,6695,7,39,0,0, - 6695,6696,7,39,0,0,6696,6697,7,39,0,0,6697,6698,7,39,0,0,6698,6699, - 7,39,0,0,6699,6702,7,39,0,0,6700,6702,8,48,0,0,6701,6684,1,0,0,0, - 6701,6686,1,0,0,0,6701,6691,1,0,0,0,6701,6700,1,0,0,0,6702,6705, - 1,0,0,0,6703,6705,8,49,0,0,6704,6681,1,0,0,0,6704,6683,1,0,0,0,6704, - 6703,1,0,0,0,6705,6708,1,0,0,0,6706,6704,1,0,0,0,6706,6707,1,0,0, - 0,6707,1370,1,0,0,0,6708,6706,1,0,0,0,6709,6710,3,1375,685,0,6710, - 6711,5,39,0,0,6711,6712,1,0,0,0,6712,6713,6,683,9,0,6713,1372,1, - 0,0,0,6714,6716,3,1375,685,0,6715,6717,5,92,0,0,6716,6715,1,0,0, - 0,6716,6717,1,0,0,0,6717,6718,1,0,0,0,6718,6719,5,0,0,1,6719,1374, - 1,0,0,0,6720,6721,5,39,0,0,6721,6726,5,39,0,0,6722,6723,5,92,0,0, - 6723,6726,9,0,0,0,6724,6726,8,49,0,0,6725,6720,1,0,0,0,6725,6722, - 1,0,0,0,6725,6724,1,0,0,0,6726,6729,1,0,0,0,6727,6725,1,0,0,0,6727, - 6728,1,0,0,0,6728,1376,1,0,0,0,6729,6727,1,0,0,0,6730,6731,3,1349, - 672,0,6731,6732,1,0,0,0,6732,6733,6,686,10,0,6733,6734,6,686,7,0, - 6734,1378,1,0,0,0,6735,6736,3,1351,673,0,6736,6737,1,0,0,0,6737, - 6738,6,687,11,0,6738,6739,6,687,7,0,6739,6740,6,687,12,0,6740,1380, - 1,0,0,0,6741,6742,6,688,13,0,6742,6743,1,0,0,0,6743,6744,6,688,14, - 0,6744,6745,6,688,15,0,6745,1382,1,0,0,0,6746,6747,3,1349,672,0, - 6747,6748,1,0,0,0,6748,6749,6,689,10,0,6749,6750,6,689,7,0,6750, - 1384,1,0,0,0,6751,6752,3,1351,673,0,6752,6753,1,0,0,0,6753,6754, - 6,690,11,0,6754,6755,6,690,7,0,6755,1386,1,0,0,0,6756,6757,5,39, - 0,0,6757,6758,1,0,0,0,6758,6759,6,691,2,0,6759,6760,6,691,16,0,6760, - 1388,1,0,0,0,6761,6762,6,692,17,0,6762,6763,1,0,0,0,6763,6764,6, - 692,14,0,6764,6765,6,692,15,0,6765,1390,1,0,0,0,6766,6768,8,50,0, - 0,6767,6766,1,0,0,0,6768,6769,1,0,0,0,6769,6767,1,0,0,0,6769,6770, - 1,0,0,0,6770,6779,1,0,0,0,6771,6775,5,36,0,0,6772,6774,8,50,0,0, - 6773,6772,1,0,0,0,6774,6777,1,0,0,0,6775,6773,1,0,0,0,6775,6776, - 1,0,0,0,6776,6779,1,0,0,0,6777,6775,1,0,0,0,6778,6767,1,0,0,0,6778, - 6771,1,0,0,0,6779,1392,1,0,0,0,6780,6782,5,36,0,0,6781,6783,3,1319, - 657,0,6782,6781,1,0,0,0,6782,6783,1,0,0,0,6783,6784,1,0,0,0,6784, - 6785,5,36,0,0,6785,6786,1,0,0,0,6786,6787,4,694,8,0,6787,6788,6, - 694,18,0,6788,6789,1,0,0,0,6789,6790,6,694,15,0,6790,1394,1,0,0, - 0,78,0,1,2,3,4,1462,1468,1470,1475,1479,1481,1484,1493,1495,1500, - 1505,1507,6324,6333,6337,6341,6350,6352,6362,6364,6390,6392,6410, - 6421,6432,6449,6469,6473,6476,6482,6485,6490,6494,6499,6506,6517, - 6519,6527,6533,6536,6546,6557,6565,6571,6574,6576,6582,6596,6604, - 6610,6613,6615,6617,6623,6628,6633,6637,6647,6651,6653,6660,6663, - 6677,6701,6704,6706,6716,6725,6727,6769,6775,6778,6782,19,1,28,0, - 7,29,0,3,0,0,5,1,0,1,656,1,5,4,0,1,667,2,0,1,0,1,676,3,2,2,0,7,663, - 0,7,664,0,2,3,0,1,688,4,6,0,0,4,0,0,2,1,0,1,692,5,1,694,6 - ] - -class PostgreSQLLexer(): - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - EscapeStringConstantMode = 1 - AfterEscapeStringConstantMode = 2 - AfterEscapeStringConstantWithNewlineMode = 3 - DollarQuotedStringMode = 4 - - Dollar = 1 - OPEN_PAREN = 2 - CLOSE_PAREN = 3 - OPEN_BRACKET = 4 - CLOSE_BRACKET = 5 - COMMA = 6 - SEMI = 7 - COLON = 8 - STAR = 9 - EQUAL = 10 - DOT = 11 - PLUS = 12 - MINUS = 13 - SLASH = 14 - CARET = 15 - LT = 16 - GT = 17 - LESS_LESS = 18 - GREATER_GREATER = 19 - COLON_EQUALS = 20 - LESS_EQUALS = 21 - EQUALS_GREATER = 22 - GREATER_EQUALS = 23 - DOT_DOT = 24 - NOT_EQUALS = 25 - TYPECAST = 26 - PERCENT = 27 - PARAM = 28 - Operator = 29 - ALL = 30 - ANALYSE = 31 - ANALYZE = 32 - AND = 33 - ANY = 34 - ARRAY = 35 - AS = 36 - ASC = 37 - ASYMMETRIC = 38 - BOTH = 39 - CASE = 40 - CAST = 41 - CHECK = 42 - COLLATE = 43 - COLUMN = 44 - CONSTRAINT = 45 - CREATE = 46 - CURRENT_CATALOG = 47 - CURRENT_DATE = 48 - CURRENT_ROLE = 49 - CURRENT_TIME = 50 - CURRENT_TIMESTAMP = 51 - CURRENT_USER = 52 - DEFAULT = 53 - DEFERRABLE = 54 - DESC = 55 - DISTINCT = 56 - DO = 57 - ELSE = 58 - EXCEPT = 59 - FALSE_P = 60 - FETCH = 61 - FOR = 62 - FOREIGN = 63 - FROM = 64 - GRANT = 65 - GROUP_P = 66 - HAVING = 67 - IN_P = 68 - INITIALLY = 69 - INTERSECT = 70 - INTO = 71 - LATERAL_P = 72 - LEADING = 73 - LIMIT = 74 - LOCALTIME = 75 - LOCALTIMESTAMP = 76 - NOT = 77 - NULL_P = 78 - OFFSET = 79 - ON = 80 - ONLY = 81 - OR = 82 - ORDER = 83 - PLACING = 84 - PRIMARY = 85 - REFERENCES = 86 - RETURNING = 87 - SELECT = 88 - SESSION_USER = 89 - SOME = 90 - SYMMETRIC = 91 - TABLE = 92 - THEN = 93 - TO = 94 - TRAILING = 95 - TRUE_P = 96 - UNION = 97 - UNIQUE = 98 - USER = 99 - USING = 100 - VARIADIC = 101 - WHEN = 102 - WHERE = 103 - WINDOW = 104 - WITH = 105 - AUTHORIZATION = 106 - BINARY = 107 - COLLATION = 108 - CONCURRENTLY = 109 - CROSS = 110 - CURRENT_SCHEMA = 111 - FREEZE = 112 - FULL = 113 - ILIKE = 114 - INNER_P = 115 - IS = 116 - ISNULL = 117 - JOIN = 118 - LEFT = 119 - LIKE = 120 - NATURAL = 121 - NOTNULL = 122 - OUTER_P = 123 - OVER = 124 - OVERLAPS = 125 - RIGHT = 126 - SIMILAR = 127 - VERBOSE = 128 - ABORT_P = 129 - ABSOLUTE_P = 130 - ACCESS = 131 - ACTION = 132 - ADD_P = 133 - ADMIN = 134 - AFTER = 135 - AGGREGATE = 136 - ALSO = 137 - ALTER = 138 - ALWAYS = 139 - ASSERTION = 140 - ASSIGNMENT = 141 - AT = 142 - ATTRIBUTE = 143 - BACKWARD = 144 - BEFORE = 145 - BEGIN_P = 146 - BY = 147 - CACHE = 148 - CALLED = 149 - CASCADE = 150 - CASCADED = 151 - CATALOG = 152 - CHAIN = 153 - CHARACTERISTICS = 154 - CHECKPOINT = 155 - CLASS = 156 - CLOSE = 157 - CLUSTER = 158 - COMMENT = 159 - COMMENTS = 160 - COMMIT = 161 - COMMITTED = 162 - CONFIGURATION = 163 - CONNECTION = 164 - CONSTRAINTS = 165 - CONTENT_P = 166 - CONTINUE_P = 167 - CONVERSION_P = 168 - COPY = 169 - COST = 170 - CSV = 171 - CURSOR = 172 - CYCLE = 173 - DATA_P = 174 - DATABASE = 175 - DAY_P = 176 - DEALLOCATE = 177 - DECLARE = 178 - DEFAULTS = 179 - DEFERRED = 180 - DEFINER = 181 - DELETE_P = 182 - DELIMITER = 183 - DELIMITERS = 184 - DICTIONARY = 185 - DISABLE_P = 186 - DISCARD = 187 - DOCUMENT_P = 188 - DOMAIN_P = 189 - DOUBLE_P = 190 - DROP = 191 - EACH = 192 - ENABLE_P = 193 - ENCODING = 194 - ENCRYPTED = 195 - ENUM_P = 196 - ESCAPE = 197 - EVENT = 198 - EXCLUDE = 199 - EXCLUDING = 200 - EXCLUSIVE = 201 - EXECUTE = 202 - EXPLAIN = 203 - EXTENSION = 204 - EXTERNAL = 205 - FAMILY = 206 - FIRST_P = 207 - FOLLOWING = 208 - FORCE = 209 - FORWARD = 210 - FUNCTION = 211 - FUNCTIONS = 212 - GLOBAL = 213 - GRANTED = 214 - HANDLER = 215 - HEADER_P = 216 - HOLD = 217 - HOUR_P = 218 - IDENTITY_P = 219 - IF_P = 220 - IMMEDIATE = 221 - IMMUTABLE = 222 - IMPLICIT_P = 223 - INCLUDING = 224 - INCREMENT = 225 - INDEX = 226 - INDEXES = 227 - INHERIT = 228 - INHERITS = 229 - INLINE_P = 230 - INSENSITIVE = 231 - INSERT = 232 - INSTEAD = 233 - INVOKER = 234 - ISOLATION = 235 - KEY = 236 - LABEL = 237 - LANGUAGE = 238 - LARGE_P = 239 - LAST_P = 240 - LEAKPROOF = 241 - LEVEL = 242 - LISTEN = 243 - LOAD = 244 - LOCAL = 245 - LOCATION = 246 - LOCK_P = 247 - MAPPING = 248 - MATCH = 249 - MATCHED = 250 - MATERIALIZED = 251 - MAXVALUE = 252 - MERGE = 253 - MINUTE_P = 254 - MINVALUE = 255 - MODE = 256 - MONTH_P = 257 - MOVE = 258 - NAME_P = 259 - NAMES = 260 - NEXT = 261 - NO = 262 - NOTHING = 263 - NOTIFY = 264 - NOWAIT = 265 - NULLS_P = 266 - OBJECT_P = 267 - OF = 268 - OFF = 269 - OIDS = 270 - OPERATOR = 271 - OPTION = 272 - OPTIONS = 273 - OWNED = 274 - OWNER = 275 - PARSER = 276 - PARTIAL = 277 - PARTITION = 278 - PASSING = 279 - PASSWORD = 280 - PLANS = 281 - PRECEDING = 282 - PREPARE = 283 - PREPARED = 284 - PRESERVE = 285 - PRIOR = 286 - PRIVILEGES = 287 - PROCEDURAL = 288 - PROCEDURE = 289 - PROGRAM = 290 - QUOTE = 291 - RANGE = 292 - READ = 293 - REASSIGN = 294 - RECHECK = 295 - RECURSIVE = 296 - REF = 297 - REFRESH = 298 - REINDEX = 299 - RELATIVE_P = 300 - RELEASE = 301 - RENAME = 302 - REPEATABLE = 303 - REPLACE = 304 - REPLICA = 305 - RESET = 306 - RESTART = 307 - RESTRICT = 308 - RETURNS = 309 - REVOKE = 310 - ROLE = 311 - ROLLBACK = 312 - ROWS = 313 - RULE = 314 - SAVEPOINT = 315 - SCHEMA = 316 - SCROLL = 317 - SEARCH = 318 - SECOND_P = 319 - SECURITY = 320 - SEQUENCE = 321 - SEQUENCES = 322 - SERIALIZABLE = 323 - SERVER = 324 - SESSION = 325 - SET = 326 - SHARE = 327 - SHOW = 328 - SIMPLE = 329 - SNAPSHOT = 330 - STABLE = 331 - STANDALONE_P = 332 - START = 333 - STATEMENT = 334 - STATISTICS = 335 - STDIN = 336 - STDOUT = 337 - STORAGE = 338 - STRICT_P = 339 - STRIP_P = 340 - SYSID = 341 - SYSTEM_P = 342 - TABLES = 343 - TABLESPACE = 344 - TEMP = 345 - TEMPLATE = 346 - TEMPORARY = 347 - TEXT_P = 348 - TRANSACTION = 349 - TRIGGER = 350 - TRUNCATE = 351 - TRUSTED = 352 - TYPE_P = 353 - TYPES_P = 354 - UNBOUNDED = 355 - UNCOMMITTED = 356 - UNENCRYPTED = 357 - UNKNOWN = 358 - UNLISTEN = 359 - UNLOGGED = 360 - UNTIL = 361 - UPDATE = 362 - VACUUM = 363 - VALID = 364 - VALIDATE = 365 - VALIDATOR = 366 - VARYING = 367 - VERSION_P = 368 - VIEW = 369 - VOLATILE = 370 - WHITESPACE_P = 371 - WITHOUT = 372 - WORK = 373 - WRAPPER = 374 - WRITE = 375 - XML_P = 376 - YEAR_P = 377 - YES_P = 378 - ZONE = 379 - BETWEEN = 380 - BIGINT = 381 - BIT = 382 - BOOLEAN_P = 383 - CHAR_P = 384 - CHARACTER = 385 - COALESCE = 386 - DEC = 387 - DECIMAL_P = 388 - EXISTS = 389 - EXTRACT = 390 - FLOAT_P = 391 - GREATEST = 392 - INOUT = 393 - INT_P = 394 - INTEGER = 395 - INTERVAL = 396 - LEAST = 397 - NATIONAL = 398 - NCHAR = 399 - NONE = 400 - NULLIF = 401 - NUMERIC = 402 - OVERLAY = 403 - POSITION = 404 - PRECISION = 405 - REAL = 406 - ROW = 407 - SETOF = 408 - SMALLINT = 409 - SUBSTRING = 410 - TIME = 411 - TIMESTAMP = 412 - TREAT = 413 - TRIM = 414 - VALUES = 415 - VARCHAR = 416 - XMLATTRIBUTES = 417 - XMLCOMMENT = 418 - XMLAGG = 419 - XML_IS_WELL_FORMED = 420 - XML_IS_WELL_FORMED_DOCUMENT = 421 - XML_IS_WELL_FORMED_CONTENT = 422 - XPATH = 423 - XPATH_EXISTS = 424 - XMLCONCAT = 425 - XMLELEMENT = 426 - XMLEXISTS = 427 - XMLFOREST = 428 - XMLPARSE = 429 - XMLPI = 430 - XMLROOT = 431 - XMLSERIALIZE = 432 - CALL = 433 - CURRENT_P = 434 - ATTACH = 435 - DETACH = 436 - EXPRESSION = 437 - GENERATED = 438 - LOGGED = 439 - STORED = 440 - INCLUDE = 441 - ROUTINE = 442 - TRANSFORM = 443 - IMPORT_P = 444 - POLICY = 445 - METHOD = 446 - REFERENCING = 447 - NEW = 448 - OLD = 449 - VALUE_P = 450 - SUBSCRIPTION = 451 - PUBLICATION = 452 - OUT_P = 453 - END_P = 454 - ROUTINES = 455 - SCHEMAS = 456 - PROCEDURES = 457 - INPUT_P = 458 - SUPPORT = 459 - PARALLEL = 460 - SQL_P = 461 - DEPENDS = 462 - OVERRIDING = 463 - CONFLICT = 464 - SKIP_P = 465 - LOCKED = 466 - TIES = 467 - ROLLUP = 468 - CUBE = 469 - GROUPING = 470 - SETS = 471 - TABLESAMPLE = 472 - ORDINALITY = 473 - XMLTABLE = 474 - COLUMNS = 475 - XMLNAMESPACES = 476 - ROWTYPE = 477 - NORMALIZED = 478 - WITHIN = 479 - FILTER = 480 - GROUPS = 481 - OTHERS = 482 - NFC = 483 - NFD = 484 - NFKC = 485 - NFKD = 486 - UESCAPE = 487 - VIEWS = 488 - NORMALIZE = 489 - DUMP = 490 - PRINT_STRICT_PARAMS = 491 - VARIABLE_CONFLICT = 492 - ERROR = 493 - USE_VARIABLE = 494 - USE_COLUMN = 495 - ALIAS = 496 - CONSTANT = 497 - PERFORM = 498 - GET = 499 - DIAGNOSTICS = 500 - STACKED = 501 - ELSIF = 502 - WHILE = 503 - REVERSE = 504 - FOREACH = 505 - SLICE = 506 - EXIT = 507 - RETURN = 508 - QUERY = 509 - RAISE = 510 - SQLSTATE = 511 - DEBUG = 512 - LOG = 513 - INFO = 514 - NOTICE = 515 - WARNING = 516 - EXCEPTION = 517 - ASSERT = 518 - LOOP = 519 - OPEN = 520 - ABS = 521 - CBRT = 522 - CEIL = 523 - CEILING = 524 - DEGREES = 525 - DIV = 526 - EXP = 527 - FACTORIAL = 528 - FLOOR = 529 - GCD = 530 - LCM = 531 - LN = 532 - LOG10 = 533 - MIN_SCALE = 534 - MOD = 535 - PI = 536 - POWER = 537 - RADIANS = 538 - ROUND = 539 - SCALE = 540 - SIGN = 541 - SQRT = 542 - TRIM_SCALE = 543 - TRUNC = 544 - WIDTH_BUCKET = 545 - RANDOM = 546 - SETSEED = 547 - ACOS = 548 - ACOSD = 549 - ASIN = 550 - ASIND = 551 - ATAN = 552 - ATAND = 553 - ATAN2 = 554 - ATAN2D = 555 - COS = 556 - COSD = 557 - COT = 558 - COTD = 559 - SIN = 560 - SIND = 561 - TAN = 562 - TAND = 563 - SINH = 564 - COSH = 565 - TANH = 566 - ASINH = 567 - ACOSH = 568 - ATANH = 569 - BIT_LENGTH = 570 - CHAR_LENGTH = 571 - CHARACTER_LENGTH = 572 - LOWER = 573 - OCTET_LENGTH = 574 - UPPER = 575 - ASCII = 576 - BTRIM = 577 - CHR = 578 - CONCAT = 579 - CONCAT_WS = 580 - FORMAT = 581 - INITCAP = 582 - LENGTH = 583 - LPAD = 584 - LTRIM = 585 - MD5 = 586 - PARSE_IDENT = 587 - PG_CLIENT_ENCODING = 588 - QUOTE_IDENT = 589 - QUOTE_LITERAL = 590 - QUOTE_NULLABLE = 591 - REGEXP_COUNT = 592 - REGEXP_INSTR = 593 - REGEXP_LIKE = 594 - REGEXP_MATCH = 595 - REGEXP_MATCHES = 596 - REGEXP_REPLACE = 597 - REGEXP_SPLIT_TO_ARRAY = 598 - REGEXP_SPLIT_TO_TABLE = 599 - REGEXP_SUBSTR = 600 - REPEAT = 601 - RPAD = 602 - RTRIM = 603 - SPLIT_PART = 604 - STARTS_WITH = 605 - STRING_TO_ARRAY = 606 - STRING_TO_TABLE = 607 - STRPOS = 608 - SUBSTR = 609 - TO_ASCII = 610 - TO_HEX = 611 - TRANSLATE = 612 - UNISTR = 613 - AGE = 614 - CLOCK_TIMESTAMP = 615 - DATE_BIN = 616 - DATE_PART = 617 - DATE_TRUNC = 618 - ISFINITE = 619 - JUSTIFY_DAYS = 620 - JUSTIFY_HOURS = 621 - JUSTIFY_INTERVAL = 622 - MAKE_DATE = 623 - MAKE_INTERVAL = 624 - MAKE_TIME = 625 - MAKE_TIMESTAMP = 626 - MAKE_TIMESTAMPTZ = 627 - NOW = 628 - STATEMENT_TIMESTAMP = 629 - TIMEOFDAY = 630 - TRANSACTION_TIMESTAMP = 631 - TO_TIMESTAMP = 632 - TO_CHAR = 633 - TO_DATE = 634 - TO_NUMBER = 635 - Identifier = 636 - QuotedIdentifier = 637 - UnterminatedQuotedIdentifier = 638 - InvalidQuotedIdentifier = 639 - InvalidUnterminatedQuotedIdentifier = 640 - UnicodeQuotedIdentifier = 641 - UnterminatedUnicodeQuotedIdentifier = 642 - InvalidUnicodeQuotedIdentifier = 643 - InvalidUnterminatedUnicodeQuotedIdentifier = 644 - StringConstant = 645 - UnterminatedStringConstant = 646 - UnicodeEscapeStringConstant = 647 - UnterminatedUnicodeEscapeStringConstant = 648 - BeginDollarStringConstant = 649 - BinaryStringConstant = 650 - UnterminatedBinaryStringConstant = 651 - InvalidBinaryStringConstant = 652 - InvalidUnterminatedBinaryStringConstant = 653 - HexadecimalStringConstant = 654 - UnterminatedHexadecimalStringConstant = 655 - InvalidHexadecimalStringConstant = 656 - InvalidUnterminatedHexadecimalStringConstant = 657 - Integral = 658 - NumericFail = 659 - Numeric = 660 - PLSQLVARIABLENAME = 661 - PLSQLIDENTIFIER = 662 - Whitespace = 663 - Newline = 664 - LineComment = 665 - BlockComment = 666 - UnterminatedBlockComment = 667 - MetaCommand = 668 - EndMetaCommand = 669 - ErrorCharacter = 670 - EscapeStringConstant = 671 - UnterminatedEscapeStringConstant = 672 - InvalidEscapeStringConstant = 673 - InvalidUnterminatedEscapeStringConstant = 674 - AfterEscapeStringConstantMode_NotContinued = 675 - AfterEscapeStringConstantWithNewlineMode_NotContinued = 676 - DollarText = 677 - EndDollarStringConstant = 678 - AfterEscapeStringConstantWithNewlineMode_Continued = 679 - - channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] - - modeNames = [ "DEFAULT_MODE", "EscapeStringConstantMode", "AfterEscapeStringConstantMode", - "AfterEscapeStringConstantWithNewlineMode", "DollarQuotedStringMode" ] - - literalNames = [ "<INVALID>", - "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", - "'='", "'.'", "'+'", "'-'", "'/'", "'^'", "'<'", "'>'", "'<<'", - "'>>'", "':='", "'<='", "'=>'", "'>='", "'..'", "'<>'", "'::'", - "'%'", "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", "'ANY'", - "'ARRAY'", "'AS'", "'ASC'", "'ASYMMETRIC'", "'BOTH'", "'CASE'", - "'CAST'", "'CHECK'", "'COLLATE'", "'COLUMN'", "'CONSTRAINT'", - "'CREATE'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_ROLE'", - "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DEFAULT'", - "'DEFERRABLE'", "'DESC'", "'DISTINCT'", "'DO'", "'ELSE'", "'EXCEPT'", - "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", "'FROM'", "'GRANT'", - "'GROUP'", "'HAVING'", "'IN'", "'INITIALLY'", "'INTERSECT'", - "'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", - "'LOCALTIMESTAMP'", "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", - "'OR'", "'ORDER'", "'PLACING'", "'PRIMARY'", "'REFERENCES'", - "'RETURNING'", "'SELECT'", "'SESSION_USER'", "'SOME'", "'SYMMETRIC'", - "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", "'TRUE'", "'UNION'", - "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", "'WHEN'", "'WHERE'", - "'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", - "'CONCURRENTLY'", "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", - "'FULL'", "'ILIKE'", "'INNER'", "'IS'", "'ISNULL'", "'JOIN'", - "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", "'OUTER'", "'OVER'", - "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", "'ABORT'", - "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", "'ADMIN'", "'AFTER'", - "'AGGREGATE'", "'ALSO'", "'ALTER'", "'ALWAYS'", "'ASSERTION'", - "'ASSIGNMENT'", "'AT'", "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", - "'BEGIN'", "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", - "'CATALOG'", "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", - "'CLASS'", "'CLOSE'", "'CLUSTER'", "'COMMENT'", "'COMMENTS'", - "'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", "'CONNECTION'", - "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", "'CONVERSION'", - "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", "'DATA'", - "'DATABASE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULTS'", - "'DEFERRED'", "'DEFINER'", "'DELETE'", "'DELIMITER'", "'DELIMITERS'", - "'DICTIONARY'", "'DISABLE'", "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", - "'DOUBLE'", "'DROP'", "'EACH'", "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", - "'ENUM'", "'ESCAPE'", "'EVENT'", "'EXCLUDE'", "'EXCLUDING'", - "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", "'EXTENSION'", "'EXTERNAL'", - "'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", "'FORWARD'", - "'FUNCTION'", "'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", - "'HEADER'", "'HOLD'", "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", - "'IMMUTABLE'", "'IMPLICIT'", "'INCLUDING'", "'INCREMENT'", "'INDEX'", - "'INDEXES'", "'INHERIT'", "'INHERITS'", "'INLINE'", "'INSENSITIVE'", - "'INSERT'", "'INSTEAD'", "'INVOKER'", "'ISOLATION'", "'KEY'", - "'LABEL'", "'LANGUAGE'", "'LARGE'", "'LAST'", "'LEAKPROOF'", - "'LEVEL'", "'LISTEN'", "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", - "'MAPPING'", "'MATCH'", "'MATCHED'", "'MATERIALIZED'", "'MAXVALUE'", - "'MERGE'", "'MINUTE'", "'MINVALUE'", "'MODE'", "'MONTH'", "'MOVE'", - "'NAME'", "'NAMES'", "'NEXT'", "'NO'", "'NOTHING'", "'NOTIFY'", - "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", "'OFF'", "'OIDS'", - "'OPERATOR'", "'OPTION'", "'OPTIONS'", "'OWNED'", "'OWNER'", - "'PARSER'", "'PARTIAL'", "'PARTITION'", "'PASSING'", "'PASSWORD'", - "'PLANS'", "'PRECEDING'", "'PREPARE'", "'PREPARED'", "'PRESERVE'", - "'PRIOR'", "'PRIVILEGES'", "'PROCEDURAL'", "'PROCEDURE'", "'PROGRAM'", - "'QUOTE'", "'RANGE'", "'READ'", "'REASSIGN'", "'RECHECK'", "'RECURSIVE'", - "'REF'", "'REFRESH'", "'REINDEX'", "'RELATIVE'", "'RELEASE'", - "'RENAME'", "'REPEATABLE'", "'REPLACE'", "'REPLICA'", "'RESET'", - "'RESTART'", "'RESTRICT'", "'RETURNS'", "'REVOKE'", "'ROLE'", - "'ROLLBACK'", "'ROWS'", "'RULE'", "'SAVEPOINT'", "'SCHEMA'", - "'SCROLL'", "'SEARCH'", "'SECOND'", "'SECURITY'", "'SEQUENCE'", - "'SEQUENCES'", "'SERIALIZABLE'", "'SERVER'", "'SESSION'", "'SET'", - "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", "'STABLE'", "'STANDALONE'", - "'START'", "'STATEMENT'", "'STATISTICS'", "'STDIN'", "'STDOUT'", - "'STORAGE'", "'STRICT'", "'STRIP'", "'SYSID'", "'SYSTEM'", "'TABLES'", - "'TABLESPACE'", "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", "'TEXT'", - "'TRANSACTION'", "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", - "'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", - "'UNKNOWN'", "'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", - "'VACUUM'", "'VALID'", "'VALIDATE'", "'VALIDATOR'", "'VARYING'", - "'VERSION'", "'VIEW'", "'VOLATILE'", "'WHITESPACE'", "'WITHOUT'", - "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", "'YEAR'", "'YES'", - "'ZONE'", "'BETWEEN'", "'BIGINT'", "'BIT'", "'BOOLEAN'", "'CHAR'", - "'CHARACTER'", "'COALESCE'", "'DEC'", "'DECIMAL'", "'EXISTS'", - "'EXTRACT'", "'FLOAT'", "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", - "'INTERVAL'", "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", - "'NULLIF'", "'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", - "'REAL'", "'ROW'", "'SETOF'", "'SMALLINT'", "'SUBSTRING'", "'TIME'", - "'TIMESTAMP'", "'TREAT'", "'TRIM'", "'VALUES'", "'VARCHAR'", - "'XMLATTRIBUTES'", "'XMLCOMMENT'", "'XMLAGG'", "'XML_IS_WELL_FORMED'", - "'XML_IS_WELL_FORMED_DOCUMENT'", "'XML_IS_WELL_FORMED_CONTENT'", - "'XPATH'", "'XPATH_EXISTS'", "'XMLCONCAT'", "'XMLELEMENT'", - "'XMLEXISTS'", "'XMLFOREST'", "'XMLPARSE'", "'XMLPI'", "'XMLROOT'", - "'XMLSERIALIZE'", "'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", - "'EXPRESSION'", "'GENERATED'", "'LOGGED'", "'STORED'", "'INCLUDE'", - "'ROUTINE'", "'TRANSFORM'", "'IMPORT'", "'POLICY'", "'METHOD'", - "'REFERENCING'", "'NEW'", "'OLD'", "'VALUE'", "'SUBSCRIPTION'", - "'PUBLICATION'", "'OUT'", "'END'", "'ROUTINES'", "'SCHEMAS'", - "'PROCEDURES'", "'INPUT'", "'SUPPORT'", "'PARALLEL'", "'SQL'", - "'DEPENDS'", "'OVERRIDING'", "'CONFLICT'", "'SKIP'", "'LOCKED'", - "'TIES'", "'ROLLUP'", "'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", - "'ORDINALITY'", "'XMLTABLE'", "'COLUMNS'", "'XMLNAMESPACES'", - "'ROWTYPE'", "'NORMALIZED'", "'WITHIN'", "'FILTER'", "'GROUPS'", - "'OTHERS'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'UESCAPE'", - "'VIEWS'", "'NORMALIZE'", "'DUMP'", "'PRINT_STRICT_PARAMS'", - "'VARIABLE_CONFLICT'", "'ERROR'", "'USE_VARIABLE'", "'USE_COLUMN'", - "'ALIAS'", "'CONSTANT'", "'PERFORM'", "'GET'", "'DIAGNOSTICS'", - "'STACKED'", "'ELSIF'", "'WHILE'", "'REVERSE'", "'FOREACH'", - "'SLICE'", "'EXIT'", "'RETURN'", "'QUERY'", "'RAISE'", "'SQLSTATE'", - "'DEBUG'", "'LOG'", "'INFO'", "'NOTICE'", "'WARNING'", "'EXCEPTION'", - "'ASSERT'", "'LOOP'", "'OPEN'", "'ABS'", "'CBRT'", "'CEIL'", - "'CEILING'", "'DEGREES'", "'DIV'", "'EXP'", "'FACTORIAL'", "'FLOOR'", - "'GCD'", "'LCM'", "'LN'", "'LOG10'", "'MIN_SCALE'", "'MOD'", - "'PI'", "'POWER'", "'RADIANS'", "'ROUND'", "'SCALE'", "'SIGN'", - "'SQRT'", "'TRIM_SCALE'", "'TRUNC'", "'WIDTH_BUCKET'", "'RANDOM'", - "'SETSEED'", "'ACOS'", "'ACOSD'", "'ASIN'", "'ASIND'", "'ATAN'", - "'ATAND'", "'ATAN2'", "'ATAN2D'", "'COS'", "'COSD'", "'COT'", - "'COTD'", "'SIN'", "'SIND'", "'TAN'", "'TAND'", "'SINH'", "'COSH'", - "'TANH'", "'ASINH'", "'ACOSH'", "'ATANH'", "'BIT_LENGTH'", "'CHAR_LENGTH'", - "'CHARACTER_LENGTH'", "'LOWER'", "'OCTET_LENGTH'", "'UPPER'", - "'ASCII'", "'BTRIM'", "'CHR'", "'CONCAT'", "'CONCAT_WS'", "'FORMAT'", - "'INITCAP'", "'LENGTH'", "'LPAD'", "'LTRIM'", "'MD5'", "'PARSE_IDENT'", - "'PG_CLIENT_ENCODING'", "'QUOTE_IDENT'", "'QUOTE_LITERAL'", - "'QUOTE_NULLABLE'", "'REGEXP_COUNT'", "'REGEXP_INSTR'", "'REGEXP_LIKE'", - "'REGEXP_MATCH'", "'REGEXP_MATCHES'", "'REGEXP_REPLACE'", "'REGEXP_SPLIT_TO_ARRAY'", - "'REGEXP_SPLIT_TO_TABLE'", "'REGEXP_SUBSTR'", "'REPEAT'", "'RPAD'", - "'RTRIM'", "'SPLIT_PART'", "'STARTS_WITH'", "'STRING_TO_ARRAY'", - "'STRING_TO_TABLE'", "'STRPOS'", "'SUBSTR'", "'TO_ASCII'", "'TO_HEX'", - "'TRANSLATE'", "'UNISTR'", "'AGE'", "'CLOCK_TIMESTAMP'", "'DATE_BIN'", - "'DATE_PART'", "'DATE_TRUNC'", "'ISFINITE'", "'JUSTIFY_DAYS'", - "'JUSTIFY_HOURS'", "'JUSTIFY_INTERVAL'", "'MAKE_DATE'", "'MAKE_INTERVAL'", - "'MAKE_TIME'", "'MAKE_TIMESTAMP'", "'MAKE_TIMESTAMPTZ'", "'NOW'", - "'STATEMENT_TIMESTAMP'", "'TIMEOFDAY'", "'TRANSACTION_TIMESTAMP'", - "'TO_TIMESTAMP'", "'TO_CHAR'", "'TO_DATE'", "'TO_NUMBER'", "'\\\\'", - "'''" ] - - symbolicNames = [ "<INVALID>", - "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", - "COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", - "SLASH", "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", - "COLON_EQUALS", "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", - "DOT_DOT", "NOT_EQUALS", "TYPECAST", "PERCENT", "PARAM", "Operator", - "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", - "ASYMMETRIC", "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", - "CONSTRAINT", "CREATE", "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", - "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "DEFAULT", - "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", "EXCEPT", "FALSE_P", - "FETCH", "FOR", "FOREIGN", "FROM", "GRANT", "GROUP_P", "HAVING", - "IN_P", "INITIALLY", "INTERSECT", "INTO", "LATERAL_P", "LEADING", - "LIMIT", "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", - "ON", "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", - "RETURNING", "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", - "TABLE", "THEN", "TO", "TRAILING", "TRUE_P", "UNION", "UNIQUE", - "USER", "USING", "VARIADIC", "WHEN", "WHERE", "WINDOW", "WITH", - "AUTHORIZATION", "BINARY", "COLLATION", "CONCURRENTLY", "CROSS", - "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", "INNER_P", "IS", - "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", "OUTER_P", - "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", "ABORT_P", - "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", - "AGGREGATE", "ALSO", "ALTER", "ALWAYS", "ASSERTION", "ASSIGNMENT", - "AT", "ATTRIBUTE", "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", - "CALLED", "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", - "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COMMENT", "COMMENTS", - "COMMIT", "COMMITTED", "CONFIGURATION", "CONNECTION", "CONSTRAINTS", - "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", "CSV", - "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", "DEALLOCATE", - "DECLARE", "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", "DELIMITER", - "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", "DOCUMENT_P", - "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ENABLE_P", "ENCODING", - "ENCRYPTED", "ENUM_P", "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", - "EXCLUSIVE", "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", - "FAMILY", "FIRST_P", "FOLLOWING", "FORCE", "FORWARD", "FUNCTION", - "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", "HEADER_P", "HOLD", - "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", - "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", - "INLINE_P", "INSENSITIVE", "INSERT", "INSTEAD", "INVOKER", "ISOLATION", - "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", "MAPPING", - "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", - "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", - "NO", "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", - "OF", "OFF", "OIDS", "OPERATOR", "OPTION", "OPTIONS", "OWNED", - "OWNER", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", - "PLANS", "PRECEDING", "PREPARE", "PREPARED", "PRESERVE", "PRIOR", - "PRIVILEGES", "PROCEDURAL", "PROCEDURE", "PROGRAM", "QUOTE", - "RANGE", "READ", "REASSIGN", "RECHECK", "RECURSIVE", "REF", - "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", - "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNS", - "REVOKE", "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", - "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", - "SERIALIZABLE", "SERVER", "SESSION", "SET", "SHARE", "SHOW", - "SIMPLE", "SNAPSHOT", "STABLE", "STANDALONE_P", "START", "STATEMENT", - "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STRICT_P", "STRIP_P", - "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", "TEMP", "TEMPLATE", - "TEMPORARY", "TEXT_P", "TRANSACTION", "TRIGGER", "TRUNCATE", - "TRUSTED", "TYPE_P", "TYPES_P", "UNBOUNDED", "UNCOMMITTED", - "UNENCRYPTED", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", - "VIEW", "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", "WRAPPER", - "WRITE", "XML_P", "YEAR_P", "YES_P", "ZONE", "BETWEEN", "BIGINT", - "BIT", "BOOLEAN_P", "CHAR_P", "CHARACTER", "COALESCE", "DEC", - "DECIMAL_P", "EXISTS", "EXTRACT", "FLOAT_P", "GREATEST", "INOUT", - "INT_P", "INTEGER", "INTERVAL", "LEAST", "NATIONAL", "NCHAR", - "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", "PRECISION", - "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", "XMLCOMMENT", - "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", - "XML_IS_WELL_FORMED_CONTENT", "XPATH", "XPATH_EXISTS", "XMLCONCAT", - "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLPARSE", "XMLPI", - "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", "ATTACH", "DETACH", - "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", "ROUTINE", - "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", "REFERENCING", - "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", "PUBLICATION", "OUT_P", - "END_P", "ROUTINES", "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", - "PARALLEL", "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", - "LOCKED", "TIES", "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", - "ORDINALITY", "XMLTABLE", "COLUMNS", "XMLNAMESPACES", "ROWTYPE", - "NORMALIZED", "WITHIN", "FILTER", "GROUPS", "OTHERS", "NFC", - "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", "NORMALIZE", "DUMP", - "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", "ERROR", "USE_VARIABLE", - "USE_COLUMN", "ALIAS", "CONSTANT", "PERFORM", "GET", "DIAGNOSTICS", - "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", "SLICE", - "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", "DEBUG", "LOG", - "INFO", "NOTICE", "WARNING", "EXCEPTION", "ASSERT", "LOOP", - "OPEN", "ABS", "CBRT", "CEIL", "CEILING", "DEGREES", "DIV", - "EXP", "FACTORIAL", "FLOOR", "GCD", "LCM", "LN", "LOG10", "MIN_SCALE", - "MOD", "PI", "POWER", "RADIANS", "ROUND", "SCALE", "SIGN", "SQRT", - "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", "SETSEED", - "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", "TAN", - "TAND", "SINH", "COSH", "TANH", "ASINH", "ACOSH", "ATANH", "BIT_LENGTH", - "CHAR_LENGTH", "CHARACTER_LENGTH", "LOWER", "OCTET_LENGTH", - "UPPER", "ASCII", "BTRIM", "CHR", "CONCAT", "CONCAT_WS", "FORMAT", - "INITCAP", "LENGTH", "LPAD", "LTRIM", "MD5", "PARSE_IDENT", - "PG_CLIENT_ENCODING", "QUOTE_IDENT", "QUOTE_LITERAL", "QUOTE_NULLABLE", - "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", - "REGEXP_SPLIT_TO_TABLE", "REGEXP_SUBSTR", "REPEAT", "RPAD", - "RTRIM", "SPLIT_PART", "STARTS_WITH", "STRING_TO_ARRAY", "STRING_TO_TABLE", - "STRPOS", "SUBSTR", "TO_ASCII", "TO_HEX", "TRANSLATE", "UNISTR", - "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", "DATE_PART", "DATE_TRUNC", - "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", "JUSTIFY_INTERVAL", - "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", - "TRANSACTION_TIMESTAMP", "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", - "TO_NUMBER", "Identifier", "QuotedIdentifier", "UnterminatedQuotedIdentifier", - "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", - "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", - "InvalidUnicodeQuotedIdentifier", "InvalidUnterminatedUnicodeQuotedIdentifier", - "StringConstant", "UnterminatedStringConstant", "UnicodeEscapeStringConstant", - "UnterminatedUnicodeEscapeStringConstant", "BeginDollarStringConstant", - "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "PLSQLVARIABLENAME", "PLSQLIDENTIFIER", - "Whitespace", "Newline", "LineComment", "BlockComment", "UnterminatedBlockComment", - "MetaCommand", "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", - "UnterminatedEscapeStringConstant", "InvalidEscapeStringConstant", - "InvalidUnterminatedEscapeStringConstant", "AfterEscapeStringConstantMode_NotContinued", - "AfterEscapeStringConstantWithNewlineMode_NotContinued", "DollarText", - "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued" ] - - ruleNames = [ "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", - "CLOSE_BRACKET", "COMMA", "SEMI", "COLON", "STAR", "EQUAL", - "DOT", "PLUS", "MINUS", "SLASH", "CARET", "LT", "GT", - "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", "LESS_EQUALS", - "EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", - "TYPECAST", "PERCENT", "PARAM", "Operator", "OperatorEndingWithPlusMinus", - "OperatorCharacter", "OperatorCharacterNotAllowPlusMinusAtEnd", - "OperatorCharacterAllowPlusMinusAtEnd", "ALL", "ANALYSE", - "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASYMMETRIC", - "BOTH", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", - "CONSTRAINT", "CREATE", "CURRENT_CATALOG", "CURRENT_DATE", - "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", - "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", - "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", "FROM", - "GRANT", "GROUP_P", "HAVING", "IN_P", "INITIALLY", "INTERSECT", - "INTO", "LATERAL_P", "LEADING", "LIMIT", "LOCALTIME", - "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", "ON", "ONLY", - "OR", "ORDER", "PLACING", "PRIMARY", "REFERENCES", "RETURNING", - "SELECT", "SESSION_USER", "SOME", "SYMMETRIC", "TABLE", - "THEN", "TO", "TRAILING", "TRUE_P", "UNION", "UNIQUE", - "USER", "USING", "VARIADIC", "WHEN", "WHERE", "WINDOW", - "WITH", "AUTHORIZATION", "BINARY", "COLLATION", "CONCURRENTLY", - "CROSS", "CURRENT_SCHEMA", "FREEZE", "FULL", "ILIKE", - "INNER_P", "IS", "ISNULL", "JOIN", "LEFT", "LIKE", "NATURAL", - "NOTNULL", "OUTER_P", "OVER", "OVERLAPS", "RIGHT", "SIMILAR", - "VERBOSE", "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", - "ADD_P", "ADMIN", "AFTER", "AGGREGATE", "ALSO", "ALTER", - "ALWAYS", "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", - "BACKWARD", "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", - "CASCADE", "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", - "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COMMENT", - "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", "CONNECTION", - "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", - "COPY", "COST", "CSV", "CURSOR", "CYCLE", "DATA_P", "DATABASE", - "DAY_P", "DEALLOCATE", "DECLARE", "DEFAULTS", "DEFERRED", - "DEFINER", "DELETE_P", "DELIMITER", "DELIMITERS", "DICTIONARY", - "DISABLE_P", "DISCARD", "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", - "DROP", "EACH", "ENABLE_P", "ENCODING", "ENCRYPTED", "ENUM_P", - "ESCAPE", "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", - "EXECUTE", "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", - "FIRST_P", "FOLLOWING", "FORCE", "FORWARD", "FUNCTION", - "FUNCTIONS", "GLOBAL", "GRANTED", "HANDLER", "HEADER_P", - "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", - "INHERIT", "INHERITS", "INLINE_P", "INSENSITIVE", "INSERT", - "INSTEAD", "INVOKER", "ISOLATION", "KEY", "LABEL", "LANGUAGE", - "LARGE_P", "LAST_P", "LEAKPROOF", "LEVEL", "LISTEN", "LOAD", - "LOCAL", "LOCATION", "LOCK_P", "MAPPING", "MATCH", "MATCHED", - "MATERIALIZED", "MAXVALUE", "MERGE", "MINUTE_P", "MINVALUE", - "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NEXT", - "NO", "NOTHING", "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", - "OF", "OFF", "OIDS", "OPERATOR", "OPTION", "OPTIONS", - "OWNED", "OWNER", "PARSER", "PARTIAL", "PARTITION", "PASSING", - "PASSWORD", "PLANS", "PRECEDING", "PREPARE", "PREPARED", - "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", - "RECURSIVE", "REF", "REFRESH", "REINDEX", "RELATIVE_P", - "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", - "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", "ROLE", - "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCROLL", - "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", "SEQUENCES", - "SERIALIZABLE", "SERVER", "SESSION", "SET", "SHARE", "SHOW", - "SIMPLE", "SNAPSHOT", "STABLE", "STANDALONE_P", "START", - "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", - "STRICT_P", "STRIP_P", "SYSID", "SYSTEM_P", "TABLES", - "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", - "TRANSACTION", "TRIGGER", "TRUNCATE", "TRUSTED", "TYPE_P", - "TYPES_P", "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", - "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", - "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VARYING", - "VERSION_P", "VIEW", "VOLATILE", "WHITESPACE_P", "WITHOUT", - "WORK", "WRAPPER", "WRITE", "XML_P", "YEAR_P", "YES_P", - "ZONE", "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", - "EXTRACT", "FLOAT_P", "GREATEST", "INOUT", "INT_P", "INTEGER", - "INTERVAL", "LEAST", "NATIONAL", "NCHAR", "NONE", "NULLIF", - "NUMERIC", "OVERLAY", "POSITION", "PRECISION", "REAL", - "ROW", "SETOF", "SMALLINT", "SUBSTRING", "TIME", "TIMESTAMP", - "TREAT", "TRIM", "VALUES", "VARCHAR", "XMLATTRIBUTES", - "XMLCOMMENT", "XMLAGG", "XML_IS_WELL_FORMED", "XML_IS_WELL_FORMED_DOCUMENT", - "XML_IS_WELL_FORMED_CONTENT", "XPATH", "XPATH_EXISTS", - "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLPARSE", - "XMLPI", "XMLROOT", "XMLSERIALIZE", "CALL", "CURRENT_P", - "ATTACH", "DETACH", "EXPRESSION", "GENERATED", "LOGGED", - "STORED", "INCLUDE", "ROUTINE", "TRANSFORM", "IMPORT_P", - "POLICY", "METHOD", "REFERENCING", "NEW", "OLD", "VALUE_P", - "SUBSCRIPTION", "PUBLICATION", "OUT_P", "END_P", "ROUTINES", - "SCHEMAS", "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", - "SQL_P", "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", - "LOCKED", "TIES", "ROLLUP", "CUBE", "GROUPING", "SETS", - "TABLESAMPLE", "ORDINALITY", "XMLTABLE", "COLUMNS", "XMLNAMESPACES", - "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", "GROUPS", - "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", "VIEWS", - "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", "VARIABLE_CONFLICT", - "ERROR", "USE_VARIABLE", "USE_COLUMN", "ALIAS", "CONSTANT", - "PERFORM", "GET", "DIAGNOSTICS", "STACKED", "ELSIF", "WHILE", - "REVERSE", "FOREACH", "SLICE", "EXIT", "RETURN", "QUERY", - "RAISE", "SQLSTATE", "DEBUG", "LOG", "INFO", "NOTICE", - "WARNING", "EXCEPTION", "ASSERT", "LOOP", "OPEN", "ABS", - "CBRT", "CEIL", "CEILING", "DEGREES", "DIV", "EXP", "FACTORIAL", - "FLOOR", "GCD", "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", - "PI", "POWER", "RADIANS", "ROUND", "SCALE", "SIGN", "SQRT", - "TRIM_SCALE", "TRUNC", "WIDTH_BUCKET", "RANDOM", "SETSEED", - "ACOS", "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", - "TAN", "TAND", "SINH", "COSH", "TANH", "ASINH", "ACOSH", - "ATANH", "BIT_LENGTH", "CHAR_LENGTH", "CHARACTER_LENGTH", - "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", "CHR", - "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", "LENGTH", - "LPAD", "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", - "QUOTE_IDENT", "QUOTE_LITERAL", "QUOTE_NULLABLE", "REGEXP_COUNT", - "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", "REGEXP_MATCHES", - "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", "REGEXP_SPLIT_TO_TABLE", - "REGEXP_SUBSTR", "REPEAT", "RPAD", "RTRIM", "SPLIT_PART", - "STARTS_WITH", "STRING_TO_ARRAY", "STRING_TO_TABLE", "STRPOS", - "SUBSTR", "TO_ASCII", "TO_HEX", "TRANSLATE", "UNISTR", - "AGE", "CLOCK_TIMESTAMP", "DATE_BIN", "DATE_PART", "DATE_TRUNC", - "ISFINITE", "JUSTIFY_DAYS", "JUSTIFY_HOURS", "JUSTIFY_INTERVAL", - "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", "TIMEOFDAY", - "TRANSACTION_TIMESTAMP", "TO_TIMESTAMP", "TO_CHAR", "TO_DATE", - "TO_NUMBER", "Identifier", "IdentifierStartChar", "IdentifierChar", - "StrictIdentifierChar", "QuotedIdentifier", "UnterminatedQuotedIdentifier", - "InvalidQuotedIdentifier", "InvalidUnterminatedQuotedIdentifier", - "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", - "InvalidUnicodeQuotedIdentifier", "InvalidUnterminatedUnicodeQuotedIdentifier", - "StringConstant", "UnterminatedStringConstant", "BeginEscapeStringConstant", - "UnicodeEscapeStringConstant", "UnterminatedUnicodeEscapeStringConstant", - "BeginDollarStringConstant", "Tag", "BinaryStringConstant", - "UnterminatedBinaryStringConstant", "InvalidBinaryStringConstant", - "InvalidUnterminatedBinaryStringConstant", "HexadecimalStringConstant", - "UnterminatedHexadecimalStringConstant", "InvalidHexadecimalStringConstant", - "InvalidUnterminatedHexadecimalStringConstant", "Integral", - "NumericFail", "Numeric", "Digits", "PLSQLVARIABLENAME", - "PLSQLIDENTIFIER", "Whitespace", "Newline", "LineComment", - "BlockComment", "UnterminatedBlockComment", "MetaCommand", - "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", - "UnterminatedEscapeStringConstant", "EscapeStringText", - "InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", - "InvalidEscapeStringText", "AfterEscapeStringConstantMode_Whitespace", - "AfterEscapeStringConstantMode_Newline", "AfterEscapeStringConstantMode_NotContinued", - "AfterEscapeStringConstantWithNewlineMode_Whitespace", - "AfterEscapeStringConstantWithNewlineMode_Newline", "AfterEscapeStringConstantWithNewlineMode_Continued", - "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant" ] - - grammarFileName = "PostgreSQLLexer.g4" - - def __init__(self, input=None, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.13.2") - self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) - self._actions = None - self._predicates = None - - - def action(self, localctx:RuleContext, ruleIndex:int, actionIndex:int): - if self._actions is None: - actions = dict() - actions[28] = self.Operator_action - actions[656] = self.BeginDollarStringConstant_action - actions[667] = self.NumericFail_action - actions[676] = self.UnterminatedBlockComment_action - actions[688] = self.AfterEscapeStringConstantMode_NotContinued_action - actions[692] = self.AfterEscapeStringConstantWithNewlineMode_NotContinued_action - actions[694] = self.EndDollarStringConstant_action - self._actions = actions - action = self._actions.get(ruleIndex, None) - if action is not None: - action(localctx, actionIndex) - else: - raise Exception("No registered action for:" + str(ruleIndex)) - - - def Operator_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 0: - - HandleLessLessGreaterGreater(); - - - - def BeginDollarStringConstant_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 1: - pushTag(); - - - def NumericFail_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 2: - HandleNumericFail(); - - - def UnterminatedBlockComment_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 3: - - UnterminatedBlockCommentDebugAssert(); - - - - def AfterEscapeStringConstantMode_NotContinued_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 4: - pass - - - def AfterEscapeStringConstantWithNewlineMode_NotContinued_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 5: - pass - - - def EndDollarStringConstant_action(self, localctx:RuleContext , actionIndex:int): - if actionIndex == 6: - popTag(); - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates is None: - preds = dict() - preds[28] = self.Operator_sempred - preds[29] = self.OperatorEndingWithPlusMinus_sempred - preds[640] = self.IdentifierStartChar_sempred - preds[694] = self.EndDollarStringConstant_sempred - self._predicates = preds - pred = self._predicates.get(ruleIndex, None) - if pred is not None: - return pred(localctx, predIndex) - else: - raise Exception("No registered predicate for:" + str(ruleIndex)) - - def Operator_sempred(self, localctx:RuleContext, predIndex:int): - if predIndex == 0: - return checkLA('-') - - - if predIndex == 1: - return checkLA('*') - - - if predIndex == 2: - return checkLA('*') - - - def OperatorEndingWithPlusMinus_sempred(self, localctx:RuleContext, predIndex:int): - if predIndex == 3: - return checkLA('-') - - - if predIndex == 4: - return checkLA('*') - - - if predIndex == 5: - return checkLA('-') - - - def IdentifierStartChar_sempred(self, localctx:RuleContext, predIndex:int): - if predIndex == 6: - return charIsLetter() - - - if predIndex == 7: - return - CheckIfUtf32Letter() - - - - def EndDollarStringConstant_sempred(self, localctx:RuleContext, predIndex:int): - if predIndex == 8: - return isTag() - - - diff --git a/antlr4_postgresql/PostgreSQLLexer.tokens b/antlr4_postgresql/PostgreSQLLexer.tokens deleted file mode 100644 index 03ca671..0000000 --- a/antlr4_postgresql/PostgreSQLLexer.tokens +++ /dev/null @@ -1,1314 +0,0 @@ -Dollar=1 -OPEN_PAREN=2 -CLOSE_PAREN=3 -OPEN_BRACKET=4 -CLOSE_BRACKET=5 -COMMA=6 -SEMI=7 -COLON=8 -STAR=9 -EQUAL=10 -DOT=11 -PLUS=12 -MINUS=13 -SLASH=14 -CARET=15 -LT=16 -GT=17 -LESS_LESS=18 -GREATER_GREATER=19 -COLON_EQUALS=20 -LESS_EQUALS=21 -EQUALS_GREATER=22 -GREATER_EQUALS=23 -DOT_DOT=24 -NOT_EQUALS=25 -TYPECAST=26 -PERCENT=27 -PARAM=28 -Operator=29 -ALL=30 -ANALYSE=31 -ANALYZE=32 -AND=33 -ANY=34 -ARRAY=35 -AS=36 -ASC=37 -ASYMMETRIC=38 -BOTH=39 -CASE=40 -CAST=41 -CHECK=42 -COLLATE=43 -COLUMN=44 -CONSTRAINT=45 -CREATE=46 -CURRENT_CATALOG=47 -CURRENT_DATE=48 -CURRENT_ROLE=49 -CURRENT_TIME=50 -CURRENT_TIMESTAMP=51 -CURRENT_USER=52 -DEFAULT=53 -DEFERRABLE=54 -DESC=55 -DISTINCT=56 -DO=57 -ELSE=58 -EXCEPT=59 -FALSE_P=60 -FETCH=61 -FOR=62 -FOREIGN=63 -FROM=64 -GRANT=65 -GROUP_P=66 -HAVING=67 -IN_P=68 -INITIALLY=69 -INTERSECT=70 -INTO=71 -LATERAL_P=72 -LEADING=73 -LIMIT=74 -LOCALTIME=75 -LOCALTIMESTAMP=76 -NOT=77 -NULL_P=78 -OFFSET=79 -ON=80 -ONLY=81 -OR=82 -ORDER=83 -PLACING=84 -PRIMARY=85 -REFERENCES=86 -RETURNING=87 -SELECT=88 -SESSION_USER=89 -SOME=90 -SYMMETRIC=91 -TABLE=92 -THEN=93 -TO=94 -TRAILING=95 -TRUE_P=96 -UNION=97 -UNIQUE=98 -USER=99 -USING=100 -VARIADIC=101 -WHEN=102 -WHERE=103 -WINDOW=104 -WITH=105 -AUTHORIZATION=106 -BINARY=107 -COLLATION=108 -CONCURRENTLY=109 -CROSS=110 -CURRENT_SCHEMA=111 -FREEZE=112 -FULL=113 -ILIKE=114 -INNER_P=115 -IS=116 -ISNULL=117 -JOIN=118 -LEFT=119 -LIKE=120 -NATURAL=121 -NOTNULL=122 -OUTER_P=123 -OVER=124 -OVERLAPS=125 -RIGHT=126 -SIMILAR=127 -VERBOSE=128 -ABORT_P=129 -ABSOLUTE_P=130 -ACCESS=131 -ACTION=132 -ADD_P=133 -ADMIN=134 -AFTER=135 -AGGREGATE=136 -ALSO=137 -ALTER=138 -ALWAYS=139 -ASSERTION=140 -ASSIGNMENT=141 -AT=142 -ATTRIBUTE=143 -BACKWARD=144 -BEFORE=145 -BEGIN_P=146 -BY=147 -CACHE=148 -CALLED=149 -CASCADE=150 -CASCADED=151 -CATALOG=152 -CHAIN=153 -CHARACTERISTICS=154 -CHECKPOINT=155 -CLASS=156 -CLOSE=157 -CLUSTER=158 -COMMENT=159 -COMMENTS=160 -COMMIT=161 -COMMITTED=162 -CONFIGURATION=163 -CONNECTION=164 -CONSTRAINTS=165 -CONTENT_P=166 -CONTINUE_P=167 -CONVERSION_P=168 -COPY=169 -COST=170 -CSV=171 -CURSOR=172 -CYCLE=173 -DATA_P=174 -DATABASE=175 -DAY_P=176 -DEALLOCATE=177 -DECLARE=178 -DEFAULTS=179 -DEFERRED=180 -DEFINER=181 -DELETE_P=182 -DELIMITER=183 -DELIMITERS=184 -DICTIONARY=185 -DISABLE_P=186 -DISCARD=187 -DOCUMENT_P=188 -DOMAIN_P=189 -DOUBLE_P=190 -DROP=191 -EACH=192 -ENABLE_P=193 -ENCODING=194 -ENCRYPTED=195 -ENUM_P=196 -ESCAPE=197 -EVENT=198 -EXCLUDE=199 -EXCLUDING=200 -EXCLUSIVE=201 -EXECUTE=202 -EXPLAIN=203 -EXTENSION=204 -EXTERNAL=205 -FAMILY=206 -FIRST_P=207 -FOLLOWING=208 -FORCE=209 -FORWARD=210 -FUNCTION=211 -FUNCTIONS=212 -GLOBAL=213 -GRANTED=214 -HANDLER=215 -HEADER_P=216 -HOLD=217 -HOUR_P=218 -IDENTITY_P=219 -IF_P=220 -IMMEDIATE=221 -IMMUTABLE=222 -IMPLICIT_P=223 -INCLUDING=224 -INCREMENT=225 -INDEX=226 -INDEXES=227 -INHERIT=228 -INHERITS=229 -INLINE_P=230 -INSENSITIVE=231 -INSERT=232 -INSTEAD=233 -INVOKER=234 -ISOLATION=235 -KEY=236 -LABEL=237 -LANGUAGE=238 -LARGE_P=239 -LAST_P=240 -LEAKPROOF=241 -LEVEL=242 -LISTEN=243 -LOAD=244 -LOCAL=245 -LOCATION=246 -LOCK_P=247 -MAPPING=248 -MATCH=249 -MATCHED=250 -MATERIALIZED=251 -MAXVALUE=252 -MERGE=253 -MINUTE_P=254 -MINVALUE=255 -MODE=256 -MONTH_P=257 -MOVE=258 -NAME_P=259 -NAMES=260 -NEXT=261 -NO=262 -NOTHING=263 -NOTIFY=264 -NOWAIT=265 -NULLS_P=266 -OBJECT_P=267 -OF=268 -OFF=269 -OIDS=270 -OPERATOR=271 -OPTION=272 -OPTIONS=273 -OWNED=274 -OWNER=275 -PARSER=276 -PARTIAL=277 -PARTITION=278 -PASSING=279 -PASSWORD=280 -PLANS=281 -PRECEDING=282 -PREPARE=283 -PREPARED=284 -PRESERVE=285 -PRIOR=286 -PRIVILEGES=287 -PROCEDURAL=288 -PROCEDURE=289 -PROGRAM=290 -QUOTE=291 -RANGE=292 -READ=293 -REASSIGN=294 -RECHECK=295 -RECURSIVE=296 -REF=297 -REFRESH=298 -REINDEX=299 -RELATIVE_P=300 -RELEASE=301 -RENAME=302 -REPEATABLE=303 -REPLACE=304 -REPLICA=305 -RESET=306 -RESTART=307 -RESTRICT=308 -RETURNS=309 -REVOKE=310 -ROLE=311 -ROLLBACK=312 -ROWS=313 -RULE=314 -SAVEPOINT=315 -SCHEMA=316 -SCROLL=317 -SEARCH=318 -SECOND_P=319 -SECURITY=320 -SEQUENCE=321 -SEQUENCES=322 -SERIALIZABLE=323 -SERVER=324 -SESSION=325 -SET=326 -SHARE=327 -SHOW=328 -SIMPLE=329 -SNAPSHOT=330 -STABLE=331 -STANDALONE_P=332 -START=333 -STATEMENT=334 -STATISTICS=335 -STDIN=336 -STDOUT=337 -STORAGE=338 -STRICT_P=339 -STRIP_P=340 -SYSID=341 -SYSTEM_P=342 -TABLES=343 -TABLESPACE=344 -TEMP=345 -TEMPLATE=346 -TEMPORARY=347 -TEXT_P=348 -TRANSACTION=349 -TRIGGER=350 -TRUNCATE=351 -TRUSTED=352 -TYPE_P=353 -TYPES_P=354 -UNBOUNDED=355 -UNCOMMITTED=356 -UNENCRYPTED=357 -UNKNOWN=358 -UNLISTEN=359 -UNLOGGED=360 -UNTIL=361 -UPDATE=362 -VACUUM=363 -VALID=364 -VALIDATE=365 -VALIDATOR=366 -VARYING=367 -VERSION_P=368 -VIEW=369 -VOLATILE=370 -WHITESPACE_P=371 -WITHOUT=372 -WORK=373 -WRAPPER=374 -WRITE=375 -XML_P=376 -YEAR_P=377 -YES_P=378 -ZONE=379 -BETWEEN=380 -BIGINT=381 -BIT=382 -BOOLEAN_P=383 -CHAR_P=384 -CHARACTER=385 -COALESCE=386 -DEC=387 -DECIMAL_P=388 -EXISTS=389 -EXTRACT=390 -FLOAT_P=391 -GREATEST=392 -INOUT=393 -INT_P=394 -INTEGER=395 -INTERVAL=396 -LEAST=397 -NATIONAL=398 -NCHAR=399 -NONE=400 -NULLIF=401 -NUMERIC=402 -OVERLAY=403 -POSITION=404 -PRECISION=405 -REAL=406 -ROW=407 -SETOF=408 -SMALLINT=409 -SUBSTRING=410 -TIME=411 -TIMESTAMP=412 -TREAT=413 -TRIM=414 -VALUES=415 -VARCHAR=416 -XMLATTRIBUTES=417 -XMLCOMMENT=418 -XMLAGG=419 -XML_IS_WELL_FORMED=420 -XML_IS_WELL_FORMED_DOCUMENT=421 -XML_IS_WELL_FORMED_CONTENT=422 -XPATH=423 -XPATH_EXISTS=424 -XMLCONCAT=425 -XMLELEMENT=426 -XMLEXISTS=427 -XMLFOREST=428 -XMLPARSE=429 -XMLPI=430 -XMLROOT=431 -XMLSERIALIZE=432 -CALL=433 -CURRENT_P=434 -ATTACH=435 -DETACH=436 -EXPRESSION=437 -GENERATED=438 -LOGGED=439 -STORED=440 -INCLUDE=441 -ROUTINE=442 -TRANSFORM=443 -IMPORT_P=444 -POLICY=445 -METHOD=446 -REFERENCING=447 -NEW=448 -OLD=449 -VALUE_P=450 -SUBSCRIPTION=451 -PUBLICATION=452 -OUT_P=453 -END_P=454 -ROUTINES=455 -SCHEMAS=456 -PROCEDURES=457 -INPUT_P=458 -SUPPORT=459 -PARALLEL=460 -SQL_P=461 -DEPENDS=462 -OVERRIDING=463 -CONFLICT=464 -SKIP_P=465 -LOCKED=466 -TIES=467 -ROLLUP=468 -CUBE=469 -GROUPING=470 -SETS=471 -TABLESAMPLE=472 -ORDINALITY=473 -XMLTABLE=474 -COLUMNS=475 -XMLNAMESPACES=476 -ROWTYPE=477 -NORMALIZED=478 -WITHIN=479 -FILTER=480 -GROUPS=481 -OTHERS=482 -NFC=483 -NFD=484 -NFKC=485 -NFKD=486 -UESCAPE=487 -VIEWS=488 -NORMALIZE=489 -DUMP=490 -PRINT_STRICT_PARAMS=491 -VARIABLE_CONFLICT=492 -ERROR=493 -USE_VARIABLE=494 -USE_COLUMN=495 -ALIAS=496 -CONSTANT=497 -PERFORM=498 -GET=499 -DIAGNOSTICS=500 -STACKED=501 -ELSIF=502 -WHILE=503 -REVERSE=504 -FOREACH=505 -SLICE=506 -EXIT=507 -RETURN=508 -QUERY=509 -RAISE=510 -SQLSTATE=511 -DEBUG=512 -LOG=513 -INFO=514 -NOTICE=515 -WARNING=516 -EXCEPTION=517 -ASSERT=518 -LOOP=519 -OPEN=520 -ABS=521 -CBRT=522 -CEIL=523 -CEILING=524 -DEGREES=525 -DIV=526 -EXP=527 -FACTORIAL=528 -FLOOR=529 -GCD=530 -LCM=531 -LN=532 -LOG10=533 -MIN_SCALE=534 -MOD=535 -PI=536 -POWER=537 -RADIANS=538 -ROUND=539 -SCALE=540 -SIGN=541 -SQRT=542 -TRIM_SCALE=543 -TRUNC=544 -WIDTH_BUCKET=545 -RANDOM=546 -SETSEED=547 -ACOS=548 -ACOSD=549 -ASIN=550 -ASIND=551 -ATAN=552 -ATAND=553 -ATAN2=554 -ATAN2D=555 -COS=556 -COSD=557 -COT=558 -COTD=559 -SIN=560 -SIND=561 -TAN=562 -TAND=563 -SINH=564 -COSH=565 -TANH=566 -ASINH=567 -ACOSH=568 -ATANH=569 -BIT_LENGTH=570 -CHAR_LENGTH=571 -CHARACTER_LENGTH=572 -LOWER=573 -OCTET_LENGTH=574 -UPPER=575 -ASCII=576 -BTRIM=577 -CHR=578 -CONCAT=579 -CONCAT_WS=580 -FORMAT=581 -INITCAP=582 -LENGTH=583 -LPAD=584 -LTRIM=585 -MD5=586 -PARSE_IDENT=587 -PG_CLIENT_ENCODING=588 -QUOTE_IDENT=589 -QUOTE_LITERAL=590 -QUOTE_NULLABLE=591 -REGEXP_COUNT=592 -REGEXP_INSTR=593 -REGEXP_LIKE=594 -REGEXP_MATCH=595 -REGEXP_MATCHES=596 -REGEXP_REPLACE=597 -REGEXP_SPLIT_TO_ARRAY=598 -REGEXP_SPLIT_TO_TABLE=599 -REGEXP_SUBSTR=600 -REPEAT=601 -RPAD=602 -RTRIM=603 -SPLIT_PART=604 -STARTS_WITH=605 -STRING_TO_ARRAY=606 -STRING_TO_TABLE=607 -STRPOS=608 -SUBSTR=609 -TO_ASCII=610 -TO_HEX=611 -TRANSLATE=612 -UNISTR=613 -AGE=614 -CLOCK_TIMESTAMP=615 -DATE_BIN=616 -DATE_PART=617 -DATE_TRUNC=618 -ISFINITE=619 -JUSTIFY_DAYS=620 -JUSTIFY_HOURS=621 -JUSTIFY_INTERVAL=622 -MAKE_DATE=623 -MAKE_INTERVAL=624 -MAKE_TIME=625 -MAKE_TIMESTAMP=626 -MAKE_TIMESTAMPTZ=627 -NOW=628 -STATEMENT_TIMESTAMP=629 -TIMEOFDAY=630 -TRANSACTION_TIMESTAMP=631 -TO_TIMESTAMP=632 -TO_CHAR=633 -TO_DATE=634 -TO_NUMBER=635 -Identifier=636 -QuotedIdentifier=637 -UnterminatedQuotedIdentifier=638 -InvalidQuotedIdentifier=639 -InvalidUnterminatedQuotedIdentifier=640 -UnicodeQuotedIdentifier=641 -UnterminatedUnicodeQuotedIdentifier=642 -InvalidUnicodeQuotedIdentifier=643 -InvalidUnterminatedUnicodeQuotedIdentifier=644 -StringConstant=645 -UnterminatedStringConstant=646 -UnicodeEscapeStringConstant=647 -UnterminatedUnicodeEscapeStringConstant=648 -BeginDollarStringConstant=649 -BinaryStringConstant=650 -UnterminatedBinaryStringConstant=651 -InvalidBinaryStringConstant=652 -InvalidUnterminatedBinaryStringConstant=653 -HexadecimalStringConstant=654 -UnterminatedHexadecimalStringConstant=655 -InvalidHexadecimalStringConstant=656 -InvalidUnterminatedHexadecimalStringConstant=657 -Integral=658 -NumericFail=659 -Numeric=660 -PLSQLVARIABLENAME=661 -PLSQLIDENTIFIER=662 -Whitespace=663 -Newline=664 -LineComment=665 -BlockComment=666 -UnterminatedBlockComment=667 -MetaCommand=668 -EndMetaCommand=669 -ErrorCharacter=670 -EscapeStringConstant=671 -UnterminatedEscapeStringConstant=672 -InvalidEscapeStringConstant=673 -InvalidUnterminatedEscapeStringConstant=674 -AfterEscapeStringConstantMode_NotContinued=675 -AfterEscapeStringConstantWithNewlineMode_NotContinued=676 -DollarText=677 -EndDollarStringConstant=678 -AfterEscapeStringConstantWithNewlineMode_Continued=679 -'$'=1 -'('=2 -')'=3 -'['=4 -']'=5 -','=6 -';'=7 -':'=8 -'*'=9 -'='=10 -'.'=11 -'+'=12 -'-'=13 -'/'=14 -'^'=15 -'<'=16 -'>'=17 -'<<'=18 -'>>'=19 -':='=20 -'<='=21 -'=>'=22 -'>='=23 -'..'=24 -'<>'=25 -'::'=26 -'%'=27 -'ALL'=30 -'ANALYSE'=31 -'ANALYZE'=32 -'AND'=33 -'ANY'=34 -'ARRAY'=35 -'AS'=36 -'ASC'=37 -'ASYMMETRIC'=38 -'BOTH'=39 -'CASE'=40 -'CAST'=41 -'CHECK'=42 -'COLLATE'=43 -'COLUMN'=44 -'CONSTRAINT'=45 -'CREATE'=46 -'CURRENT_CATALOG'=47 -'CURRENT_DATE'=48 -'CURRENT_ROLE'=49 -'CURRENT_TIME'=50 -'CURRENT_TIMESTAMP'=51 -'CURRENT_USER'=52 -'DEFAULT'=53 -'DEFERRABLE'=54 -'DESC'=55 -'DISTINCT'=56 -'DO'=57 -'ELSE'=58 -'EXCEPT'=59 -'FALSE'=60 -'FETCH'=61 -'FOR'=62 -'FOREIGN'=63 -'FROM'=64 -'GRANT'=65 -'GROUP'=66 -'HAVING'=67 -'IN'=68 -'INITIALLY'=69 -'INTERSECT'=70 -'INTO'=71 -'LATERAL'=72 -'LEADING'=73 -'LIMIT'=74 -'LOCALTIME'=75 -'LOCALTIMESTAMP'=76 -'NOT'=77 -'NULL'=78 -'OFFSET'=79 -'ON'=80 -'ONLY'=81 -'OR'=82 -'ORDER'=83 -'PLACING'=84 -'PRIMARY'=85 -'REFERENCES'=86 -'RETURNING'=87 -'SELECT'=88 -'SESSION_USER'=89 -'SOME'=90 -'SYMMETRIC'=91 -'TABLE'=92 -'THEN'=93 -'TO'=94 -'TRAILING'=95 -'TRUE'=96 -'UNION'=97 -'UNIQUE'=98 -'USER'=99 -'USING'=100 -'VARIADIC'=101 -'WHEN'=102 -'WHERE'=103 -'WINDOW'=104 -'WITH'=105 -'AUTHORIZATION'=106 -'BINARY'=107 -'COLLATION'=108 -'CONCURRENTLY'=109 -'CROSS'=110 -'CURRENT_SCHEMA'=111 -'FREEZE'=112 -'FULL'=113 -'ILIKE'=114 -'INNER'=115 -'IS'=116 -'ISNULL'=117 -'JOIN'=118 -'LEFT'=119 -'LIKE'=120 -'NATURAL'=121 -'NOTNULL'=122 -'OUTER'=123 -'OVER'=124 -'OVERLAPS'=125 -'RIGHT'=126 -'SIMILAR'=127 -'VERBOSE'=128 -'ABORT'=129 -'ABSOLUTE'=130 -'ACCESS'=131 -'ACTION'=132 -'ADD'=133 -'ADMIN'=134 -'AFTER'=135 -'AGGREGATE'=136 -'ALSO'=137 -'ALTER'=138 -'ALWAYS'=139 -'ASSERTION'=140 -'ASSIGNMENT'=141 -'AT'=142 -'ATTRIBUTE'=143 -'BACKWARD'=144 -'BEFORE'=145 -'BEGIN'=146 -'BY'=147 -'CACHE'=148 -'CALLED'=149 -'CASCADE'=150 -'CASCADED'=151 -'CATALOG'=152 -'CHAIN'=153 -'CHARACTERISTICS'=154 -'CHECKPOINT'=155 -'CLASS'=156 -'CLOSE'=157 -'CLUSTER'=158 -'COMMENT'=159 -'COMMENTS'=160 -'COMMIT'=161 -'COMMITTED'=162 -'CONFIGURATION'=163 -'CONNECTION'=164 -'CONSTRAINTS'=165 -'CONTENT'=166 -'CONTINUE'=167 -'CONVERSION'=168 -'COPY'=169 -'COST'=170 -'CSV'=171 -'CURSOR'=172 -'CYCLE'=173 -'DATA'=174 -'DATABASE'=175 -'DAY'=176 -'DEALLOCATE'=177 -'DECLARE'=178 -'DEFAULTS'=179 -'DEFERRED'=180 -'DEFINER'=181 -'DELETE'=182 -'DELIMITER'=183 -'DELIMITERS'=184 -'DICTIONARY'=185 -'DISABLE'=186 -'DISCARD'=187 -'DOCUMENT'=188 -'DOMAIN'=189 -'DOUBLE'=190 -'DROP'=191 -'EACH'=192 -'ENABLE'=193 -'ENCODING'=194 -'ENCRYPTED'=195 -'ENUM'=196 -'ESCAPE'=197 -'EVENT'=198 -'EXCLUDE'=199 -'EXCLUDING'=200 -'EXCLUSIVE'=201 -'EXECUTE'=202 -'EXPLAIN'=203 -'EXTENSION'=204 -'EXTERNAL'=205 -'FAMILY'=206 -'FIRST'=207 -'FOLLOWING'=208 -'FORCE'=209 -'FORWARD'=210 -'FUNCTION'=211 -'FUNCTIONS'=212 -'GLOBAL'=213 -'GRANTED'=214 -'HANDLER'=215 -'HEADER'=216 -'HOLD'=217 -'HOUR'=218 -'IDENTITY'=219 -'IF'=220 -'IMMEDIATE'=221 -'IMMUTABLE'=222 -'IMPLICIT'=223 -'INCLUDING'=224 -'INCREMENT'=225 -'INDEX'=226 -'INDEXES'=227 -'INHERIT'=228 -'INHERITS'=229 -'INLINE'=230 -'INSENSITIVE'=231 -'INSERT'=232 -'INSTEAD'=233 -'INVOKER'=234 -'ISOLATION'=235 -'KEY'=236 -'LABEL'=237 -'LANGUAGE'=238 -'LARGE'=239 -'LAST'=240 -'LEAKPROOF'=241 -'LEVEL'=242 -'LISTEN'=243 -'LOAD'=244 -'LOCAL'=245 -'LOCATION'=246 -'LOCK'=247 -'MAPPING'=248 -'MATCH'=249 -'MATCHED'=250 -'MATERIALIZED'=251 -'MAXVALUE'=252 -'MERGE'=253 -'MINUTE'=254 -'MINVALUE'=255 -'MODE'=256 -'MONTH'=257 -'MOVE'=258 -'NAME'=259 -'NAMES'=260 -'NEXT'=261 -'NO'=262 -'NOTHING'=263 -'NOTIFY'=264 -'NOWAIT'=265 -'NULLS'=266 -'OBJECT'=267 -'OF'=268 -'OFF'=269 -'OIDS'=270 -'OPERATOR'=271 -'OPTION'=272 -'OPTIONS'=273 -'OWNED'=274 -'OWNER'=275 -'PARSER'=276 -'PARTIAL'=277 -'PARTITION'=278 -'PASSING'=279 -'PASSWORD'=280 -'PLANS'=281 -'PRECEDING'=282 -'PREPARE'=283 -'PREPARED'=284 -'PRESERVE'=285 -'PRIOR'=286 -'PRIVILEGES'=287 -'PROCEDURAL'=288 -'PROCEDURE'=289 -'PROGRAM'=290 -'QUOTE'=291 -'RANGE'=292 -'READ'=293 -'REASSIGN'=294 -'RECHECK'=295 -'RECURSIVE'=296 -'REF'=297 -'REFRESH'=298 -'REINDEX'=299 -'RELATIVE'=300 -'RELEASE'=301 -'RENAME'=302 -'REPEATABLE'=303 -'REPLACE'=304 -'REPLICA'=305 -'RESET'=306 -'RESTART'=307 -'RESTRICT'=308 -'RETURNS'=309 -'REVOKE'=310 -'ROLE'=311 -'ROLLBACK'=312 -'ROWS'=313 -'RULE'=314 -'SAVEPOINT'=315 -'SCHEMA'=316 -'SCROLL'=317 -'SEARCH'=318 -'SECOND'=319 -'SECURITY'=320 -'SEQUENCE'=321 -'SEQUENCES'=322 -'SERIALIZABLE'=323 -'SERVER'=324 -'SESSION'=325 -'SET'=326 -'SHARE'=327 -'SHOW'=328 -'SIMPLE'=329 -'SNAPSHOT'=330 -'STABLE'=331 -'STANDALONE'=332 -'START'=333 -'STATEMENT'=334 -'STATISTICS'=335 -'STDIN'=336 -'STDOUT'=337 -'STORAGE'=338 -'STRICT'=339 -'STRIP'=340 -'SYSID'=341 -'SYSTEM'=342 -'TABLES'=343 -'TABLESPACE'=344 -'TEMP'=345 -'TEMPLATE'=346 -'TEMPORARY'=347 -'TEXT'=348 -'TRANSACTION'=349 -'TRIGGER'=350 -'TRUNCATE'=351 -'TRUSTED'=352 -'TYPE'=353 -'TYPES'=354 -'UNBOUNDED'=355 -'UNCOMMITTED'=356 -'UNENCRYPTED'=357 -'UNKNOWN'=358 -'UNLISTEN'=359 -'UNLOGGED'=360 -'UNTIL'=361 -'UPDATE'=362 -'VACUUM'=363 -'VALID'=364 -'VALIDATE'=365 -'VALIDATOR'=366 -'VARYING'=367 -'VERSION'=368 -'VIEW'=369 -'VOLATILE'=370 -'WHITESPACE'=371 -'WITHOUT'=372 -'WORK'=373 -'WRAPPER'=374 -'WRITE'=375 -'XML'=376 -'YEAR'=377 -'YES'=378 -'ZONE'=379 -'BETWEEN'=380 -'BIGINT'=381 -'BIT'=382 -'BOOLEAN'=383 -'CHAR'=384 -'CHARACTER'=385 -'COALESCE'=386 -'DEC'=387 -'DECIMAL'=388 -'EXISTS'=389 -'EXTRACT'=390 -'FLOAT'=391 -'GREATEST'=392 -'INOUT'=393 -'INT'=394 -'INTEGER'=395 -'INTERVAL'=396 -'LEAST'=397 -'NATIONAL'=398 -'NCHAR'=399 -'NONE'=400 -'NULLIF'=401 -'NUMERIC'=402 -'OVERLAY'=403 -'POSITION'=404 -'PRECISION'=405 -'REAL'=406 -'ROW'=407 -'SETOF'=408 -'SMALLINT'=409 -'SUBSTRING'=410 -'TIME'=411 -'TIMESTAMP'=412 -'TREAT'=413 -'TRIM'=414 -'VALUES'=415 -'VARCHAR'=416 -'XMLATTRIBUTES'=417 -'XMLCOMMENT'=418 -'XMLAGG'=419 -'XML_IS_WELL_FORMED'=420 -'XML_IS_WELL_FORMED_DOCUMENT'=421 -'XML_IS_WELL_FORMED_CONTENT'=422 -'XPATH'=423 -'XPATH_EXISTS'=424 -'XMLCONCAT'=425 -'XMLELEMENT'=426 -'XMLEXISTS'=427 -'XMLFOREST'=428 -'XMLPARSE'=429 -'XMLPI'=430 -'XMLROOT'=431 -'XMLSERIALIZE'=432 -'CALL'=433 -'CURRENT'=434 -'ATTACH'=435 -'DETACH'=436 -'EXPRESSION'=437 -'GENERATED'=438 -'LOGGED'=439 -'STORED'=440 -'INCLUDE'=441 -'ROUTINE'=442 -'TRANSFORM'=443 -'IMPORT'=444 -'POLICY'=445 -'METHOD'=446 -'REFERENCING'=447 -'NEW'=448 -'OLD'=449 -'VALUE'=450 -'SUBSCRIPTION'=451 -'PUBLICATION'=452 -'OUT'=453 -'END'=454 -'ROUTINES'=455 -'SCHEMAS'=456 -'PROCEDURES'=457 -'INPUT'=458 -'SUPPORT'=459 -'PARALLEL'=460 -'SQL'=461 -'DEPENDS'=462 -'OVERRIDING'=463 -'CONFLICT'=464 -'SKIP'=465 -'LOCKED'=466 -'TIES'=467 -'ROLLUP'=468 -'CUBE'=469 -'GROUPING'=470 -'SETS'=471 -'TABLESAMPLE'=472 -'ORDINALITY'=473 -'XMLTABLE'=474 -'COLUMNS'=475 -'XMLNAMESPACES'=476 -'ROWTYPE'=477 -'NORMALIZED'=478 -'WITHIN'=479 -'FILTER'=480 -'GROUPS'=481 -'OTHERS'=482 -'NFC'=483 -'NFD'=484 -'NFKC'=485 -'NFKD'=486 -'UESCAPE'=487 -'VIEWS'=488 -'NORMALIZE'=489 -'DUMP'=490 -'PRINT_STRICT_PARAMS'=491 -'VARIABLE_CONFLICT'=492 -'ERROR'=493 -'USE_VARIABLE'=494 -'USE_COLUMN'=495 -'ALIAS'=496 -'CONSTANT'=497 -'PERFORM'=498 -'GET'=499 -'DIAGNOSTICS'=500 -'STACKED'=501 -'ELSIF'=502 -'WHILE'=503 -'REVERSE'=504 -'FOREACH'=505 -'SLICE'=506 -'EXIT'=507 -'RETURN'=508 -'QUERY'=509 -'RAISE'=510 -'SQLSTATE'=511 -'DEBUG'=512 -'LOG'=513 -'INFO'=514 -'NOTICE'=515 -'WARNING'=516 -'EXCEPTION'=517 -'ASSERT'=518 -'LOOP'=519 -'OPEN'=520 -'ABS'=521 -'CBRT'=522 -'CEIL'=523 -'CEILING'=524 -'DEGREES'=525 -'DIV'=526 -'EXP'=527 -'FACTORIAL'=528 -'FLOOR'=529 -'GCD'=530 -'LCM'=531 -'LN'=532 -'LOG10'=533 -'MIN_SCALE'=534 -'MOD'=535 -'PI'=536 -'POWER'=537 -'RADIANS'=538 -'ROUND'=539 -'SCALE'=540 -'SIGN'=541 -'SQRT'=542 -'TRIM_SCALE'=543 -'TRUNC'=544 -'WIDTH_BUCKET'=545 -'RANDOM'=546 -'SETSEED'=547 -'ACOS'=548 -'ACOSD'=549 -'ASIN'=550 -'ASIND'=551 -'ATAN'=552 -'ATAND'=553 -'ATAN2'=554 -'ATAN2D'=555 -'COS'=556 -'COSD'=557 -'COT'=558 -'COTD'=559 -'SIN'=560 -'SIND'=561 -'TAN'=562 -'TAND'=563 -'SINH'=564 -'COSH'=565 -'TANH'=566 -'ASINH'=567 -'ACOSH'=568 -'ATANH'=569 -'BIT_LENGTH'=570 -'CHAR_LENGTH'=571 -'CHARACTER_LENGTH'=572 -'LOWER'=573 -'OCTET_LENGTH'=574 -'UPPER'=575 -'ASCII'=576 -'BTRIM'=577 -'CHR'=578 -'CONCAT'=579 -'CONCAT_WS'=580 -'FORMAT'=581 -'INITCAP'=582 -'LENGTH'=583 -'LPAD'=584 -'LTRIM'=585 -'MD5'=586 -'PARSE_IDENT'=587 -'PG_CLIENT_ENCODING'=588 -'QUOTE_IDENT'=589 -'QUOTE_LITERAL'=590 -'QUOTE_NULLABLE'=591 -'REGEXP_COUNT'=592 -'REGEXP_INSTR'=593 -'REGEXP_LIKE'=594 -'REGEXP_MATCH'=595 -'REGEXP_MATCHES'=596 -'REGEXP_REPLACE'=597 -'REGEXP_SPLIT_TO_ARRAY'=598 -'REGEXP_SPLIT_TO_TABLE'=599 -'REGEXP_SUBSTR'=600 -'REPEAT'=601 -'RPAD'=602 -'RTRIM'=603 -'SPLIT_PART'=604 -'STARTS_WITH'=605 -'STRING_TO_ARRAY'=606 -'STRING_TO_TABLE'=607 -'STRPOS'=608 -'SUBSTR'=609 -'TO_ASCII'=610 -'TO_HEX'=611 -'TRANSLATE'=612 -'UNISTR'=613 -'AGE'=614 -'CLOCK_TIMESTAMP'=615 -'DATE_BIN'=616 -'DATE_PART'=617 -'DATE_TRUNC'=618 -'ISFINITE'=619 -'JUSTIFY_DAYS'=620 -'JUSTIFY_HOURS'=621 -'JUSTIFY_INTERVAL'=622 -'MAKE_DATE'=623 -'MAKE_INTERVAL'=624 -'MAKE_TIME'=625 -'MAKE_TIMESTAMP'=626 -'MAKE_TIMESTAMPTZ'=627 -'NOW'=628 -'STATEMENT_TIMESTAMP'=629 -'TIMEOFDAY'=630 -'TRANSACTION_TIMESTAMP'=631 -'TO_TIMESTAMP'=632 -'TO_CHAR'=633 -'TO_DATE'=634 -'TO_NUMBER'=635 -'\\\\'=669 -'\''=679 diff --git a/antlr4_postgresql/PostgreSQLParser.g4 b/antlr4_postgresql/PostgreSQLParser.g4 deleted file mode 100644 index 89a5902..0000000 --- a/antlr4_postgresql/PostgreSQLParser.g4 +++ /dev/null @@ -1,5584 +0,0 @@ -/* -PostgreSQL grammar. -The MIT License (MIT). -Copyright (c) 2021-2023, Oleksii Kovalov (Oleksii.Kovalov@outlook.com). -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false -// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging - -parser grammar PostgreSQLParser; - -options { - tokenVocab = PostgreSQLLexer; - superClass = PostgreSQLParserBase; -} - -@header { -} - -@members { -} - -root - : stmtblock EOF - ; - -plsqlroot - : pl_function - ; - -stmtblock - : stmtmulti - ; - -stmtmulti - : (stmt SEMI?)* - ; - -stmt - : altereventtrigstmt - | altercollationstmt - | alterdatabasestmt - | alterdatabasesetstmt - | alterdefaultprivilegesstmt - | alterdomainstmt - | alterenumstmt - | alterextensionstmt - | alterextensioncontentsstmt - | alterfdwstmt - | alterforeignserverstmt - | alterfunctionstmt - | altergroupstmt - | alterobjectdependsstmt - | alterobjectschemastmt - | alterownerstmt - | alteroperatorstmt - | altertypestmt - | alterpolicystmt - | alterseqstmt - | altersystemstmt - | altertablestmt - | altertblspcstmt - | altercompositetypestmt - | alterpublicationstmt - | alterrolesetstmt - | alterrolestmt - | altersubscriptionstmt - | alterstatsstmt - | altertsconfigurationstmt - | altertsdictionarystmt - | alterusermappingstmt - | analyzestmt - | callstmt - | checkpointstmt - | closeportalstmt - | clusterstmt - | commentstmt - | constraintssetstmt - | copystmt - | createamstmt - | createasstmt - | createassertionstmt - | createcaststmt - | createconversionstmt - | createdomainstmt - | createextensionstmt - | createfdwstmt - | createforeignserverstmt - | createforeigntablestmt - | createfunctionstmt - | creategroupstmt - | creatematviewstmt - | createopclassstmt - | createopfamilystmt - | createpublicationstmt - | alteropfamilystmt - | createpolicystmt - | createplangstmt - | createschemastmt - | createseqstmt - | createstmt - | createsubscriptionstmt - | createstatsstmt - | createtablespacestmt - | createtransformstmt - | createtrigstmt - | createeventtrigstmt - | createrolestmt - | createuserstmt - | createusermappingstmt - | createdbstmt - | deallocatestmt - | declarecursorstmt - | definestmt - | deletestmt - | discardstmt - | dostmt - | dropcaststmt - | dropopclassstmt - | dropopfamilystmt - | dropownedstmt - | dropstmt - | dropsubscriptionstmt - | droptablespacestmt - | droptransformstmt - | droprolestmt - | dropusermappingstmt - | dropdbstmt - | executestmt - | explainstmt - | fetchstmt - | grantstmt - | grantrolestmt - | importforeignschemastmt - | indexstmt - | insertstmt - | mergestmt - | listenstmt - | refreshmatviewstmt - | loadstmt - | lockstmt - | notifystmt - | preparestmt - | reassignownedstmt - | reindexstmt - | removeaggrstmt - | removefuncstmt - | removeoperstmt - | renamestmt - | revokestmt - | revokerolestmt - | rulestmt - | seclabelstmt - | selectstmt - | transactionstmt - | truncatestmt - | unlistenstmt - | updatestmt - | vacuumstmt - | variableresetstmt - | variablesetstmt - | variableshowstmt - | viewstmt - | plsqlconsolecommand - ; - -plsqlconsolecommand - : MetaCommand EndMetaCommand? - ; - -callstmt - : CALL func_application - ; - -createrolestmt - : CREATE ROLE roleid opt_with optrolelist - ; - -opt_with - : WITH - //| WITH_LA - | - ; - -optrolelist - : createoptroleelem* - ; - -alteroptrolelist - : alteroptroleelem* - ; - -alteroptroleelem - : PASSWORD (sconst | NULL_P) - | (ENCRYPTED | UNENCRYPTED) PASSWORD sconst - | INHERIT - | CONNECTION LIMIT signediconst - | VALID UNTIL sconst - | USER role_list - | identifier - ; - -createoptroleelem - : alteroptroleelem - | SYSID iconst - | ADMIN role_list - | ROLE role_list - | IN_P (ROLE | GROUP_P) role_list - ; - -createuserstmt - : CREATE USER roleid opt_with optrolelist - ; - -alterrolestmt - : ALTER (ROLE | USER) rolespec opt_with alteroptrolelist - ; - -opt_in_database - : - | IN_P DATABASE name - ; - -alterrolesetstmt - : ALTER (ROLE | USER) ALL? rolespec opt_in_database setresetclause - ; - -droprolestmt - : DROP (ROLE | USER | GROUP_P) (IF_P EXISTS)? role_list - ; - -creategroupstmt - : CREATE GROUP_P roleid opt_with optrolelist - ; - -altergroupstmt - : ALTER GROUP_P rolespec add_drop USER role_list - ; - -add_drop - : ADD_P - | DROP - ; - -createschemastmt - : CREATE SCHEMA (IF_P NOT EXISTS)? (optschemaname AUTHORIZATION rolespec | colid) optschemaeltlist - ; - -optschemaname - : colid - | - ; - -optschemaeltlist - : schema_stmt* - ; - -schema_stmt - : createstmt - | indexstmt - | createseqstmt - | createtrigstmt - | grantstmt - | viewstmt - ; - -variablesetstmt - : SET (LOCAL | SESSION)? set_rest - ; - -set_rest - : TRANSACTION transaction_mode_list - | SESSION CHARACTERISTICS AS TRANSACTION transaction_mode_list - | set_rest_more - ; - -generic_set - : var_name (TO | EQUAL) var_list - ; - -set_rest_more - : generic_set - | var_name FROM CURRENT_P - | TIME ZONE zone_value - | CATALOG sconst - | SCHEMA sconst - | NAMES opt_encoding - | ROLE nonreservedword_or_sconst - | SESSION AUTHORIZATION nonreservedword_or_sconst - | XML_P OPTION document_or_content - | TRANSACTION SNAPSHOT sconst - ; - -var_name - : colid (DOT colid)* - ; - -var_list - : var_value (COMMA var_value)* - ; - -var_value - : opt_boolean_or_string - | numericonly - ; - -iso_level - : READ (UNCOMMITTED | COMMITTED) - | REPEATABLE READ - | SERIALIZABLE - ; - -opt_boolean_or_string - : TRUE_P - | FALSE_P - | ON - | nonreservedword_or_sconst - ; - -zone_value - : sconst - | identifier - | constinterval sconst opt_interval - | constinterval OPEN_PAREN iconst CLOSE_PAREN sconst - | numericonly - | DEFAULT - | LOCAL - ; - -opt_encoding - : sconst - | DEFAULT - | - ; - -nonreservedword_or_sconst - : nonreservedword - | sconst - ; - -variableresetstmt - : RESET reset_rest - ; - -reset_rest - : generic_reset - | TIME ZONE - | TRANSACTION ISOLATION LEVEL - | SESSION AUTHORIZATION - ; - -generic_reset - : var_name - | ALL - ; - -setresetclause - : SET set_rest - | variableresetstmt - ; - -functionsetresetclause - : SET set_rest_more - | variableresetstmt - ; - -variableshowstmt - : SHOW (var_name | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL) - ; - -constraintssetstmt - : SET CONSTRAINTS constraints_set_list constraints_set_mode - ; - -constraints_set_list - : ALL - | qualified_name_list - ; - -constraints_set_mode - : DEFERRED - | IMMEDIATE - ; - -checkpointstmt - : CHECKPOINT - ; - -discardstmt - : DISCARD (ALL | TEMP | TEMPORARY | PLANS | SEQUENCES) - ; - -altertablestmt - : ALTER TABLE (IF_P EXISTS)? relation_expr (alter_table_cmds | partition_cmd) - | ALTER TABLE ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait - | ALTER INDEX (IF_P EXISTS)? qualified_name (alter_table_cmds | index_partition_cmd) - | ALTER INDEX ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait - | ALTER SEQUENCE (IF_P EXISTS)? qualified_name alter_table_cmds - | ALTER VIEW (IF_P EXISTS)? qualified_name alter_table_cmds - | ALTER MATERIALIZED VIEW (IF_P EXISTS)? qualified_name alter_table_cmds - | ALTER MATERIALIZED VIEW ALL IN_P TABLESPACE name (OWNED BY role_list)? SET TABLESPACE name opt_nowait - | ALTER FOREIGN TABLE (IF_P EXISTS)? relation_expr alter_table_cmds - ; - -alter_table_cmds - : alter_table_cmd (COMMA alter_table_cmd)* - ; - -partition_cmd - : ATTACH PARTITION qualified_name partitionboundspec - | DETACH PARTITION qualified_name - ; - -index_partition_cmd - : ATTACH PARTITION qualified_name - ; - -alter_table_cmd - : ADD_P columnDef - | ADD_P IF_P NOT EXISTS columnDef - | ADD_P COLUMN columnDef - | ADD_P COLUMN IF_P NOT EXISTS columnDef - | ALTER opt_column colid alter_column_default - | ALTER opt_column colid DROP NOT NULL_P - | ALTER opt_column colid SET NOT NULL_P - | ALTER opt_column colid DROP EXPRESSION - | ALTER opt_column colid DROP EXPRESSION IF_P EXISTS - | ALTER opt_column colid SET STATISTICS signediconst - | ALTER opt_column iconst SET STATISTICS signediconst - | ALTER opt_column colid SET reloptions - | ALTER opt_column colid RESET reloptions - | ALTER opt_column colid SET STORAGE colid - | ALTER opt_column colid ADD_P GENERATED generated_when AS IDENTITY_P optparenthesizedseqoptlist - | ALTER opt_column colid alter_identity_column_option_list - | ALTER opt_column colid DROP IDENTITY_P - | ALTER opt_column colid DROP IDENTITY_P IF_P EXISTS - | DROP opt_column IF_P EXISTS colid opt_drop_behavior - | DROP opt_column colid opt_drop_behavior - | ALTER opt_column colid opt_set_data TYPE_P typename opt_collate_clause alter_using - | ALTER opt_column colid alter_generic_options - | ADD_P tableconstraint - | ALTER CONSTRAINT name constraintattributespec - | VALIDATE CONSTRAINT name - | DROP CONSTRAINT IF_P EXISTS name opt_drop_behavior - | DROP CONSTRAINT name opt_drop_behavior - | SET WITHOUT OIDS - | CLUSTER ON name - | SET WITHOUT CLUSTER - | SET LOGGED - | SET UNLOGGED - | ENABLE_P TRIGGER name - | ENABLE_P ALWAYS TRIGGER name - | ENABLE_P REPLICA TRIGGER name - | ENABLE_P TRIGGER ALL - | ENABLE_P TRIGGER USER - | DISABLE_P TRIGGER name - | DISABLE_P TRIGGER ALL - | DISABLE_P TRIGGER USER - | ENABLE_P RULE name - | ENABLE_P ALWAYS RULE name - | ENABLE_P REPLICA RULE name - | DISABLE_P RULE name - | INHERIT qualified_name - | NO INHERIT qualified_name - | OF any_name - | NOT OF - | OWNER TO rolespec - | SET TABLESPACE name - | SET reloptions - | RESET reloptions - | REPLICA IDENTITY_P replica_identity - | ENABLE_P ROW LEVEL SECURITY - | DISABLE_P ROW LEVEL SECURITY - | FORCE ROW LEVEL SECURITY - | NO FORCE ROW LEVEL SECURITY - | alter_generic_options - ; - -alter_column_default - : SET DEFAULT a_expr - | DROP DEFAULT - ; - -opt_drop_behavior - : CASCADE - | RESTRICT - | - ; - -opt_collate_clause - : COLLATE any_name - | - ; - -alter_using - : USING a_expr - | - ; - -replica_identity - : NOTHING - | FULL - | DEFAULT - | USING INDEX name - ; - -reloptions - : OPEN_PAREN reloption_list CLOSE_PAREN - ; - -opt_reloptions - : WITH reloptions - | - ; - -reloption_list - : reloption_elem (COMMA reloption_elem)* - ; - -reloption_elem - : collabel (EQUAL def_arg | DOT collabel (EQUAL def_arg)?)? - ; - -alter_identity_column_option_list - : alter_identity_column_option+ - ; - -alter_identity_column_option - : RESTART (opt_with numericonly)? - | SET (seqoptelem | GENERATED generated_when) - ; - -partitionboundspec - : FOR VALUES WITH OPEN_PAREN hash_partbound CLOSE_PAREN - | FOR VALUES IN_P OPEN_PAREN expr_list CLOSE_PAREN - | FOR VALUES FROM OPEN_PAREN expr_list CLOSE_PAREN TO OPEN_PAREN expr_list CLOSE_PAREN - | DEFAULT - ; - -hash_partbound_elem - : nonreservedword iconst - ; - -hash_partbound - : hash_partbound_elem (COMMA hash_partbound_elem)* - ; - -altercompositetypestmt - : ALTER TYPE_P any_name alter_type_cmds - ; - -alter_type_cmds - : alter_type_cmd (COMMA alter_type_cmd)* - ; - -alter_type_cmd - : ADD_P ATTRIBUTE tablefuncelement opt_drop_behavior - | DROP ATTRIBUTE (IF_P EXISTS)? colid opt_drop_behavior - | ALTER ATTRIBUTE colid opt_set_data TYPE_P typename opt_collate_clause opt_drop_behavior - ; - -closeportalstmt - : CLOSE (cursor_name | ALL) - ; - -copystmt - : COPY opt_binary qualified_name opt_column_list copy_from opt_program copy_file_name copy_delimiter opt_with copy_options where_clause - | COPY OPEN_PAREN preparablestmt CLOSE_PAREN TO opt_program copy_file_name opt_with copy_options - ; - -copy_from - : FROM - | TO - ; - -opt_program - : PROGRAM - | - ; - -copy_file_name - : sconst - | STDIN - | STDOUT - ; - -copy_options - : copy_opt_list - | OPEN_PAREN copy_generic_opt_list CLOSE_PAREN - ; - -copy_opt_list - : copy_opt_item* - ; - -copy_opt_item - : BINARY - | FREEZE - | DELIMITER opt_as sconst - | NULL_P opt_as sconst - | CSV - | HEADER_P - | QUOTE opt_as sconst - | ESCAPE opt_as sconst - | FORCE QUOTE columnlist - | FORCE QUOTE STAR - | FORCE NOT NULL_P columnlist - | FORCE NULL_P columnlist - | ENCODING sconst - ; - -opt_binary - : BINARY - | - ; - -copy_delimiter - : opt_using DELIMITERS sconst - | - ; - -opt_using - : USING - | - ; - -copy_generic_opt_list - : copy_generic_opt_elem (COMMA copy_generic_opt_elem)* - ; - -copy_generic_opt_elem - : collabel copy_generic_opt_arg - ; - -copy_generic_opt_arg - : opt_boolean_or_string - | numericonly - | STAR - | OPEN_PAREN copy_generic_opt_arg_list CLOSE_PAREN - | - ; - -copy_generic_opt_arg_list - : copy_generic_opt_arg_list_item (COMMA copy_generic_opt_arg_list_item)* - ; - -copy_generic_opt_arg_list_item - : opt_boolean_or_string - ; - -createstmt - : CREATE opttemp TABLE (IF_P NOT EXISTS)? qualified_name ( - OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit optpartitionspec table_access_method_clause optwith oncommitoption opttablespace - | OF any_name opttypedtableelementlist optpartitionspec table_access_method_clause optwith oncommitoption opttablespace - | PARTITION OF qualified_name opttypedtableelementlist partitionboundspec optpartitionspec table_access_method_clause optwith oncommitoption - opttablespace - ) - ; - -opttemp - : TEMPORARY - | TEMP - | LOCAL (TEMPORARY | TEMP) - | GLOBAL (TEMPORARY | TEMP) - | UNLOGGED - | - ; - -opttableelementlist - : tableelementlist - | - ; - -opttypedtableelementlist - : OPEN_PAREN typedtableelementlist CLOSE_PAREN - | - ; - -tableelementlist - : tableelement (COMMA tableelement)* - ; - -typedtableelementlist - : typedtableelement (COMMA typedtableelement)* - ; - -tableelement - : tableconstraint - | tablelikeclause - | columnDef - ; - -typedtableelement - : columnOptions - | tableconstraint - ; - -columnDef - : colid typename create_generic_options colquallist - ; - -columnOptions - : colid (WITH OPTIONS)? colquallist - ; - -colquallist - : colconstraint* - ; - -colconstraint - : CONSTRAINT name colconstraintelem - | colconstraintelem - | constraintattr - | COLLATE any_name - ; - -colconstraintelem - : NOT NULL_P - | NULL_P - | UNIQUE opt_definition optconstablespace - | PRIMARY KEY opt_definition optconstablespace - | CHECK OPEN_PAREN a_expr CLOSE_PAREN opt_no_inherit - | DEFAULT b_expr - | GENERATED generated_when AS ( - IDENTITY_P optparenthesizedseqoptlist - | OPEN_PAREN a_expr CLOSE_PAREN STORED - ) - | REFERENCES qualified_name opt_column_list key_match key_actions - ; - -generated_when - : ALWAYS - | BY DEFAULT - ; - -constraintattr - : DEFERRABLE - | NOT DEFERRABLE - | INITIALLY (DEFERRED | IMMEDIATE) - ; - -tablelikeclause - : LIKE qualified_name tablelikeoptionlist - ; - -tablelikeoptionlist - : ((INCLUDING | EXCLUDING) tablelikeoption)* - ; - -tablelikeoption - : COMMENTS - | CONSTRAINTS - | DEFAULTS - | IDENTITY_P - | GENERATED - | INDEXES - | STATISTICS - | STORAGE - | ALL - ; - -tableconstraint - : CONSTRAINT name constraintelem - | constraintelem - ; - -constraintelem - : CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec - | UNIQUE ( - OPEN_PAREN columnlist CLOSE_PAREN opt_c_include opt_definition optconstablespace constraintattributespec - | existingindex constraintattributespec - ) - | PRIMARY KEY ( - OPEN_PAREN columnlist CLOSE_PAREN opt_c_include opt_definition optconstablespace constraintattributespec - | existingindex constraintattributespec - ) - | EXCLUDE access_method_clause OPEN_PAREN exclusionconstraintlist CLOSE_PAREN opt_c_include opt_definition optconstablespace exclusionwhereclause - constraintattributespec - | FOREIGN KEY OPEN_PAREN columnlist CLOSE_PAREN REFERENCES qualified_name opt_column_list key_match key_actions constraintattributespec - ; - -opt_no_inherit - : NO INHERIT - | - ; - -opt_column_list - : OPEN_PAREN columnlist CLOSE_PAREN - | - ; - -columnlist - : columnElem (COMMA columnElem)* - ; - -columnElem - : colid - ; - -opt_c_include - : INCLUDE OPEN_PAREN columnlist CLOSE_PAREN - | - ; - -key_match - : MATCH (FULL | PARTIAL | SIMPLE) - | - ; - -exclusionconstraintlist - : exclusionconstraintelem (COMMA exclusionconstraintelem)* - ; - -exclusionconstraintelem - : index_elem WITH (any_operator | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN) - ; - -exclusionwhereclause - : WHERE OPEN_PAREN a_expr CLOSE_PAREN - | - ; - -key_actions - : key_update - | key_delete - | key_update key_delete - | key_delete key_update - | - ; - -key_update - : ON UPDATE key_action - ; - -key_delete - : ON DELETE_P key_action - ; - -key_action - : NO ACTION - | RESTRICT - | CASCADE - | SET (NULL_P | DEFAULT) - ; - -optinherit - : INHERITS OPEN_PAREN qualified_name_list CLOSE_PAREN - | - ; - -optpartitionspec - : partitionspec - | - ; - -partitionspec - : PARTITION BY colid OPEN_PAREN part_params CLOSE_PAREN - ; - -part_params - : part_elem (COMMA part_elem)* - ; - -part_elem - : colid opt_collate opt_class - | func_expr_windowless opt_collate opt_class - | OPEN_PAREN a_expr CLOSE_PAREN opt_collate opt_class - ; - -table_access_method_clause - : USING name - | - ; - -optwith - : WITH reloptions - | WITHOUT OIDS - | - ; - -oncommitoption - : ON COMMIT (DROP | DELETE_P ROWS | PRESERVE ROWS) - | - ; - -opttablespace - : TABLESPACE name - | - ; - -optconstablespace - : USING INDEX TABLESPACE name - | - ; - -existingindex - : USING INDEX name - ; - -createstatsstmt - : CREATE STATISTICS (IF_P NOT EXISTS)? any_name opt_name_list ON expr_list FROM from_list - ; - -alterstatsstmt - : ALTER STATISTICS (IF_P EXISTS)? any_name SET STATISTICS signediconst - ; - -createasstmt - : CREATE opttemp TABLE (IF_P NOT EXISTS)? create_as_target AS selectstmt opt_with_data - ; - -create_as_target - : qualified_name opt_column_list table_access_method_clause optwith oncommitoption opttablespace - ; - -opt_with_data - : WITH (DATA_P | NO DATA_P) - | - ; - -creatematviewstmt - : CREATE optnolog MATERIALIZED VIEW (IF_P NOT EXISTS)? create_mv_target AS selectstmt opt_with_data - ; - -create_mv_target - : qualified_name opt_column_list table_access_method_clause opt_reloptions opttablespace - ; - -optnolog - : UNLOGGED - | - ; - -refreshmatviewstmt - : REFRESH MATERIALIZED VIEW opt_concurrently qualified_name opt_with_data - ; - -createseqstmt - : CREATE opttemp SEQUENCE (IF_P NOT EXISTS)? qualified_name optseqoptlist - ; - -alterseqstmt - : ALTER SEQUENCE (IF_P EXISTS)? qualified_name seqoptlist - ; - -optseqoptlist - : seqoptlist - | - ; - -optparenthesizedseqoptlist - : OPEN_PAREN seqoptlist CLOSE_PAREN - | - ; - -seqoptlist - : seqoptelem+ - ; - -seqoptelem - : AS simpletypename - | CACHE numericonly - | CYCLE - | INCREMENT opt_by numericonly - | MAXVALUE numericonly - | MINVALUE numericonly - | NO (MAXVALUE | MINVALUE | CYCLE) - | OWNED BY any_name - | SEQUENCE NAME_P any_name - | START opt_with numericonly - | RESTART opt_with numericonly? - ; - -opt_by - : BY - | - ; - -numericonly - : fconst - | PLUS fconst - | MINUS fconst - | signediconst - ; - -numericonly_list - : numericonly (COMMA numericonly)* - ; - -createplangstmt - : CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE name ( - HANDLER handler_name opt_inline_handler opt_validator - )? - ; - -opt_trusted - : TRUSTED - | - ; - -handler_name - : name attrs? - ; - -opt_inline_handler - : INLINE_P handler_name - | - ; - -validator_clause - : VALIDATOR handler_name - | NO VALIDATOR - ; - -opt_validator - : validator_clause - | - ; - -opt_procedural - : PROCEDURAL - | - ; - -createtablespacestmt - : CREATE TABLESPACE name opttablespaceowner LOCATION sconst opt_reloptions - ; - -opttablespaceowner - : OWNER rolespec - | - ; - -droptablespacestmt - : DROP TABLESPACE (IF_P EXISTS)? name - ; - -createextensionstmt - : CREATE EXTENSION (IF_P NOT EXISTS)? name opt_with create_extension_opt_list - ; - -create_extension_opt_list - : create_extension_opt_item* - ; - -create_extension_opt_item - : SCHEMA name - | VERSION_P nonreservedword_or_sconst - | FROM nonreservedword_or_sconst - | CASCADE - ; - -alterextensionstmt - : ALTER EXTENSION name UPDATE alter_extension_opt_list - ; - -alter_extension_opt_list - : alter_extension_opt_item* - ; - -alter_extension_opt_item - : TO nonreservedword_or_sconst - ; - -alterextensioncontentsstmt - : ALTER EXTENSION name add_drop object_type_name name - | ALTER EXTENSION name add_drop object_type_any_name any_name - | ALTER EXTENSION name add_drop AGGREGATE aggregate_with_argtypes - | ALTER EXTENSION name add_drop CAST OPEN_PAREN typename AS typename CLOSE_PAREN - | ALTER EXTENSION name add_drop DOMAIN_P typename - | ALTER EXTENSION name add_drop FUNCTION function_with_argtypes - | ALTER EXTENSION name add_drop OPERATOR operator_with_argtypes - | ALTER EXTENSION name add_drop OPERATOR CLASS any_name USING name - | ALTER EXTENSION name add_drop OPERATOR FAMILY any_name USING name - | ALTER EXTENSION name add_drop PROCEDURE function_with_argtypes - | ALTER EXTENSION name add_drop ROUTINE function_with_argtypes - | ALTER EXTENSION name add_drop TRANSFORM FOR typename LANGUAGE name - | ALTER EXTENSION name add_drop TYPE_P typename - ; - -createfdwstmt - : CREATE FOREIGN DATA_P WRAPPER name opt_fdw_options create_generic_options - ; - -fdw_option - : HANDLER handler_name - | NO HANDLER - | VALIDATOR handler_name - | NO VALIDATOR - ; - -fdw_options - : fdw_option+ - ; - -opt_fdw_options - : fdw_options - | - ; - -alterfdwstmt - : ALTER FOREIGN DATA_P WRAPPER name opt_fdw_options alter_generic_options - | ALTER FOREIGN DATA_P WRAPPER name fdw_options - ; - -create_generic_options - : OPTIONS OPEN_PAREN generic_option_list CLOSE_PAREN - | - ; - -generic_option_list - : generic_option_elem (COMMA generic_option_elem)* - ; - -alter_generic_options - : OPTIONS OPEN_PAREN alter_generic_option_list CLOSE_PAREN - ; - -alter_generic_option_list - : alter_generic_option_elem (COMMA alter_generic_option_elem)* - ; - -alter_generic_option_elem - : generic_option_elem - | SET generic_option_elem - | ADD_P generic_option_elem - | DROP generic_option_name - ; - -generic_option_elem - : generic_option_name generic_option_arg - ; - -generic_option_name - : collabel - ; - -generic_option_arg - : sconst - ; - -createforeignserverstmt - : CREATE SERVER name opt_type opt_foreign_server_version FOREIGN DATA_P WRAPPER name create_generic_options - | CREATE SERVER IF_P NOT EXISTS name opt_type opt_foreign_server_version FOREIGN DATA_P WRAPPER name create_generic_options - ; - -opt_type - : TYPE_P sconst - | - ; - -foreign_server_version - : VERSION_P (sconst | NULL_P) - ; - -opt_foreign_server_version - : foreign_server_version - | - ; - -alterforeignserverstmt - : ALTER SERVER name (alter_generic_options | foreign_server_version alter_generic_options?) - ; - -createforeigntablestmt - : CREATE FOREIGN TABLE qualified_name OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit SERVER name create_generic_options - | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name OPEN_PAREN opttableelementlist CLOSE_PAREN optinherit SERVER name create_generic_options - | CREATE FOREIGN TABLE qualified_name PARTITION OF qualified_name opttypedtableelementlist partitionboundspec SERVER name create_generic_options - | CREATE FOREIGN TABLE IF_P NOT EXISTS qualified_name PARTITION OF qualified_name opttypedtableelementlist partitionboundspec SERVER name - create_generic_options - ; - -importforeignschemastmt - : IMPORT_P FOREIGN SCHEMA name import_qualification FROM SERVER name INTO name create_generic_options - ; - -import_qualification_type - : LIMIT TO - | EXCEPT - ; - -import_qualification - : import_qualification_type OPEN_PAREN relation_expr_list CLOSE_PAREN - | - ; - -createusermappingstmt - : CREATE USER MAPPING FOR auth_ident SERVER name create_generic_options - | CREATE USER MAPPING IF_P NOT EXISTS FOR auth_ident SERVER name create_generic_options - ; - -auth_ident - : rolespec - | USER - ; - -dropusermappingstmt - : DROP USER MAPPING FOR auth_ident SERVER name - | DROP USER MAPPING IF_P EXISTS FOR auth_ident SERVER name - ; - -alterusermappingstmt - : ALTER USER MAPPING FOR auth_ident SERVER name alter_generic_options - ; - -createpolicystmt - : CREATE POLICY name ON qualified_name rowsecuritydefaultpermissive rowsecuritydefaultforcmd rowsecuritydefaulttorole rowsecurityoptionalexpr - rowsecurityoptionalwithcheck - ; - -alterpolicystmt - : ALTER POLICY name ON qualified_name rowsecurityoptionaltorole rowsecurityoptionalexpr rowsecurityoptionalwithcheck - ; - -rowsecurityoptionalexpr - : USING OPEN_PAREN a_expr CLOSE_PAREN - | - ; - -rowsecurityoptionalwithcheck - : WITH CHECK OPEN_PAREN a_expr CLOSE_PAREN - | - ; - -rowsecuritydefaulttorole - : TO role_list - | - ; - -rowsecurityoptionaltorole - : TO role_list - | - ; - -rowsecuritydefaultpermissive - : AS identifier - | - ; - -rowsecuritydefaultforcmd - : FOR row_security_cmd - | - ; - -row_security_cmd - : ALL - | SELECT - | INSERT - | UPDATE - | DELETE_P - ; - -createamstmt - : CREATE ACCESS METHOD name TYPE_P am_type HANDLER handler_name - ; - -am_type - : INDEX - | TABLE - ; - -createtrigstmt - : CREATE TRIGGER name triggeractiontime triggerevents ON qualified_name triggerreferencing triggerforspec triggerwhen EXECUTE - function_or_procedure func_name OPEN_PAREN triggerfuncargs CLOSE_PAREN - | CREATE CONSTRAINT TRIGGER name AFTER triggerevents ON qualified_name optconstrfromtable constraintattributespec FOR EACH ROW triggerwhen EXECUTE - function_or_procedure func_name OPEN_PAREN triggerfuncargs CLOSE_PAREN - ; - -triggeractiontime - : BEFORE - | AFTER - | INSTEAD OF - ; - -triggerevents - : triggeroneevent (OR triggeroneevent)* - ; - -triggeroneevent - : INSERT - | DELETE_P - | UPDATE - | UPDATE OF columnlist - | TRUNCATE - ; - -triggerreferencing - : REFERENCING triggertransitions - | - ; - -triggertransitions - : triggertransition+ - ; - -triggertransition - : transitionoldornew transitionrowortable opt_as transitionrelname - ; - -transitionoldornew - : NEW - | OLD - ; - -transitionrowortable - : TABLE - | ROW - ; - -transitionrelname - : colid - ; - -triggerforspec - : FOR triggerforopteach triggerfortype - | - ; - -triggerforopteach - : EACH - | - ; - -triggerfortype - : ROW - | STATEMENT - ; - -triggerwhen - : WHEN OPEN_PAREN a_expr CLOSE_PAREN - | - ; - -function_or_procedure - : FUNCTION - | PROCEDURE - ; - -triggerfuncargs - : (triggerfuncarg |) (COMMA triggerfuncarg)* - ; - -triggerfuncarg - : iconst - | fconst - | sconst - | collabel - ; - -optconstrfromtable - : FROM qualified_name - | - ; - -constraintattributespec - : constraintattributeElem* - ; - -constraintattributeElem - : NOT DEFERRABLE - | DEFERRABLE - | INITIALLY IMMEDIATE - | INITIALLY DEFERRED - | NOT VALID - | NO INHERIT - ; - -createeventtrigstmt - : CREATE EVENT TRIGGER name ON collabel EXECUTE function_or_procedure func_name OPEN_PAREN CLOSE_PAREN - | CREATE EVENT TRIGGER name ON collabel WHEN event_trigger_when_list EXECUTE function_or_procedure func_name OPEN_PAREN CLOSE_PAREN - ; - -event_trigger_when_list - : event_trigger_when_item (AND event_trigger_when_item)* - ; - -event_trigger_when_item - : colid IN_P OPEN_PAREN event_trigger_value_list CLOSE_PAREN - ; - -event_trigger_value_list - : sconst (COMMA sconst)* - ; - -altereventtrigstmt - : ALTER EVENT TRIGGER name enable_trigger - ; - -enable_trigger - : ENABLE_P - | ENABLE_P REPLICA - | ENABLE_P ALWAYS - | DISABLE_P - ; - -createassertionstmt - : CREATE ASSERTION any_name CHECK OPEN_PAREN a_expr CLOSE_PAREN constraintattributespec - ; - -definestmt - : CREATE opt_or_replace AGGREGATE func_name aggr_args definition - | CREATE opt_or_replace AGGREGATE func_name old_aggr_definition - | CREATE OPERATOR any_operator definition - | CREATE TYPE_P any_name definition - | CREATE TYPE_P any_name - | CREATE TYPE_P any_name AS OPEN_PAREN opttablefuncelementlist CLOSE_PAREN - | CREATE TYPE_P any_name AS ENUM_P OPEN_PAREN opt_enum_val_list CLOSE_PAREN - | CREATE TYPE_P any_name AS RANGE definition - | CREATE TEXT_P SEARCH PARSER any_name definition - | CREATE TEXT_P SEARCH DICTIONARY any_name definition - | CREATE TEXT_P SEARCH TEMPLATE any_name definition - | CREATE TEXT_P SEARCH CONFIGURATION any_name definition - | CREATE COLLATION any_name definition - | CREATE COLLATION IF_P NOT EXISTS any_name definition - | CREATE COLLATION any_name FROM any_name - | CREATE COLLATION IF_P NOT EXISTS any_name FROM any_name - ; - -definition - : OPEN_PAREN def_list CLOSE_PAREN - ; - -def_list - : def_elem (COMMA def_elem)* - ; - -def_elem - : collabel (EQUAL def_arg)? - ; - -def_arg - : func_type - | reserved_keyword - | qual_all_op - | numericonly - | sconst - | NONE - ; - -old_aggr_definition - : OPEN_PAREN old_aggr_list CLOSE_PAREN - ; - -old_aggr_list - : old_aggr_elem (COMMA old_aggr_elem)* - ; - -old_aggr_elem - : identifier EQUAL def_arg - ; - -opt_enum_val_list - : enum_val_list - | - ; - -enum_val_list - : sconst (COMMA sconst)* - ; - -alterenumstmt - : ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst - | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst BEFORE sconst - | ALTER TYPE_P any_name ADD_P VALUE_P opt_if_not_exists sconst AFTER sconst - | ALTER TYPE_P any_name RENAME VALUE_P sconst TO sconst - ; - -opt_if_not_exists - : IF_P NOT EXISTS - | - ; - -createopclassstmt - : CREATE OPERATOR CLASS any_name opt_default FOR TYPE_P typename USING name opt_opfamily AS opclass_item_list - ; - -opclass_item_list - : opclass_item (COMMA opclass_item)* - ; - -opclass_item - : OPERATOR iconst any_operator opclass_purpose opt_recheck - | OPERATOR iconst operator_with_argtypes opclass_purpose opt_recheck - | FUNCTION iconst function_with_argtypes - | FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN function_with_argtypes - | STORAGE typename - ; - -opt_default - : DEFAULT - | - ; - -opt_opfamily - : FAMILY any_name - | - ; - -opclass_purpose - : FOR SEARCH - | FOR ORDER BY any_name - | - ; - -opt_recheck - : RECHECK - | - ; - -createopfamilystmt - : CREATE OPERATOR FAMILY any_name USING name - ; - -alteropfamilystmt - : ALTER OPERATOR FAMILY any_name USING name ADD_P opclass_item_list - | ALTER OPERATOR FAMILY any_name USING name DROP opclass_drop_list - ; - -opclass_drop_list - : opclass_drop (COMMA opclass_drop)* - ; - -opclass_drop - : OPERATOR iconst OPEN_PAREN type_list CLOSE_PAREN - | FUNCTION iconst OPEN_PAREN type_list CLOSE_PAREN - ; - -dropopclassstmt - : DROP OPERATOR CLASS any_name USING name opt_drop_behavior - | DROP OPERATOR CLASS IF_P EXISTS any_name USING name opt_drop_behavior - ; - -dropopfamilystmt - : DROP OPERATOR FAMILY any_name USING name opt_drop_behavior - | DROP OPERATOR FAMILY IF_P EXISTS any_name USING name opt_drop_behavior - ; - -dropownedstmt - : DROP OWNED BY role_list opt_drop_behavior - ; - -reassignownedstmt - : REASSIGN OWNED BY role_list TO rolespec - ; - -dropstmt - : DROP object_type_any_name IF_P EXISTS any_name_list opt_drop_behavior - | DROP object_type_any_name any_name_list opt_drop_behavior - | DROP drop_type_name IF_P EXISTS name_list opt_drop_behavior - | DROP drop_type_name name_list opt_drop_behavior - | DROP object_type_name_on_any_name name ON any_name opt_drop_behavior - | DROP object_type_name_on_any_name IF_P EXISTS name ON any_name opt_drop_behavior - | DROP TYPE_P type_name_list opt_drop_behavior - | DROP TYPE_P IF_P EXISTS type_name_list opt_drop_behavior - | DROP DOMAIN_P type_name_list opt_drop_behavior - | DROP DOMAIN_P IF_P EXISTS type_name_list opt_drop_behavior - | DROP INDEX CONCURRENTLY any_name_list opt_drop_behavior - | DROP INDEX CONCURRENTLY IF_P EXISTS any_name_list opt_drop_behavior - ; - -object_type_any_name - : TABLE - | SEQUENCE - | VIEW - | MATERIALIZED VIEW - | INDEX - | FOREIGN TABLE - | COLLATION - | CONVERSION_P - | STATISTICS - | TEXT_P SEARCH PARSER - | TEXT_P SEARCH DICTIONARY - | TEXT_P SEARCH TEMPLATE - | TEXT_P SEARCH CONFIGURATION - ; - -object_type_name - : drop_type_name - | DATABASE - | ROLE - | SUBSCRIPTION - | TABLESPACE - ; - -drop_type_name - : ACCESS METHOD - | EVENT TRIGGER - | EXTENSION - | FOREIGN DATA_P WRAPPER - | opt_procedural LANGUAGE - | PUBLICATION - | SCHEMA - | SERVER - ; - -object_type_name_on_any_name - : POLICY - | RULE - | TRIGGER - ; - -any_name_list - : any_name (COMMA any_name)* - ; - -any_name - : colid attrs? - ; - -attrs - : (DOT attr_name)+ - ; - -type_name_list - : typename (COMMA typename)* - ; - -truncatestmt - : TRUNCATE opt_table relation_expr_list opt_restart_seqs opt_drop_behavior - ; - -opt_restart_seqs - : CONTINUE_P IDENTITY_P - | RESTART IDENTITY_P - | - ; - -commentstmt - : COMMENT ON object_type_any_name any_name IS comment_text - | COMMENT ON COLUMN any_name IS comment_text - | COMMENT ON object_type_name name IS comment_text - | COMMENT ON TYPE_P typename IS comment_text - | COMMENT ON DOMAIN_P typename IS comment_text - | COMMENT ON AGGREGATE aggregate_with_argtypes IS comment_text - | COMMENT ON FUNCTION function_with_argtypes IS comment_text - | COMMENT ON OPERATOR operator_with_argtypes IS comment_text - | COMMENT ON CONSTRAINT name ON any_name IS comment_text - | COMMENT ON CONSTRAINT name ON DOMAIN_P any_name IS comment_text - | COMMENT ON object_type_name_on_any_name name ON any_name IS comment_text - | COMMENT ON PROCEDURE function_with_argtypes IS comment_text - | COMMENT ON ROUTINE function_with_argtypes IS comment_text - | COMMENT ON TRANSFORM FOR typename LANGUAGE name IS comment_text - | COMMENT ON OPERATOR CLASS any_name USING name IS comment_text - | COMMENT ON OPERATOR FAMILY any_name USING name IS comment_text - | COMMENT ON LARGE_P OBJECT_P numericonly IS comment_text - | COMMENT ON CAST OPEN_PAREN typename AS typename CLOSE_PAREN IS comment_text - ; - -comment_text - : sconst - | NULL_P - ; - -seclabelstmt - : SECURITY LABEL opt_provider ON object_type_any_name any_name IS security_label - | SECURITY LABEL opt_provider ON COLUMN any_name IS security_label - | SECURITY LABEL opt_provider ON object_type_name name IS security_label - | SECURITY LABEL opt_provider ON TYPE_P typename IS security_label - | SECURITY LABEL opt_provider ON DOMAIN_P typename IS security_label - | SECURITY LABEL opt_provider ON AGGREGATE aggregate_with_argtypes IS security_label - | SECURITY LABEL opt_provider ON FUNCTION function_with_argtypes IS security_label - | SECURITY LABEL opt_provider ON LARGE_P OBJECT_P numericonly IS security_label - | SECURITY LABEL opt_provider ON PROCEDURE function_with_argtypes IS security_label - | SECURITY LABEL opt_provider ON ROUTINE function_with_argtypes IS security_label - ; - -opt_provider - : FOR nonreservedword_or_sconst - | - ; - -security_label - : sconst - | NULL_P - ; - -fetchstmt - : FETCH fetch_args - | MOVE fetch_args - ; - -fetch_args - : cursor_name - | from_in cursor_name - | NEXT opt_from_in cursor_name - | PRIOR opt_from_in cursor_name - | FIRST_P opt_from_in cursor_name - | LAST_P opt_from_in cursor_name - | ABSOLUTE_P signediconst opt_from_in cursor_name - | RELATIVE_P signediconst opt_from_in cursor_name - | signediconst opt_from_in cursor_name - | ALL opt_from_in cursor_name - | FORWARD opt_from_in cursor_name - | FORWARD signediconst opt_from_in cursor_name - | FORWARD ALL opt_from_in cursor_name - | BACKWARD opt_from_in cursor_name - | BACKWARD signediconst opt_from_in cursor_name - | BACKWARD ALL opt_from_in cursor_name - ; - -from_in - : FROM - | IN_P - ; - -opt_from_in - : from_in - | - ; - -grantstmt - : GRANT privileges ON privilege_target TO grantee_list opt_grant_grant_option - ; - -revokestmt - : REVOKE privileges ON privilege_target FROM grantee_list opt_drop_behavior - | REVOKE GRANT OPTION FOR privileges ON privilege_target FROM grantee_list opt_drop_behavior - ; - -privileges - : privilege_list - | ALL - | ALL PRIVILEGES - | ALL OPEN_PAREN columnlist CLOSE_PAREN - | ALL PRIVILEGES OPEN_PAREN columnlist CLOSE_PAREN - ; - -privilege_list - : privilege (COMMA privilege)* - ; - -privilege - : SELECT opt_column_list - | REFERENCES opt_column_list - | CREATE opt_column_list - | colid opt_column_list - ; - -privilege_target - : qualified_name_list - | TABLE qualified_name_list - | SEQUENCE qualified_name_list - | FOREIGN DATA_P WRAPPER name_list - | FOREIGN SERVER name_list - | FUNCTION function_with_argtypes_list - | PROCEDURE function_with_argtypes_list - | ROUTINE function_with_argtypes_list - | DATABASE name_list - | DOMAIN_P any_name_list - | LANGUAGE name_list - | LARGE_P OBJECT_P numericonly_list - | SCHEMA name_list - | TABLESPACE name_list - | TYPE_P any_name_list - | ALL TABLES IN_P SCHEMA name_list - | ALL SEQUENCES IN_P SCHEMA name_list - | ALL FUNCTIONS IN_P SCHEMA name_list - | ALL PROCEDURES IN_P SCHEMA name_list - | ALL ROUTINES IN_P SCHEMA name_list - ; - -grantee_list - : grantee (COMMA grantee)* - ; - -grantee - : rolespec - | GROUP_P rolespec - ; - -opt_grant_grant_option - : WITH GRANT OPTION - | - ; - -grantrolestmt - : GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by - ; - -revokerolestmt - : REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior - | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior - ; - -opt_grant_admin_option - : WITH ADMIN OPTION - | - ; - -opt_granted_by - : GRANTED BY rolespec - | - ; - -alterdefaultprivilegesstmt - : ALTER DEFAULT PRIVILEGES defacloptionlist defaclaction - ; - -defacloptionlist - : defacloption* - ; - -defacloption - : IN_P SCHEMA name_list - | FOR ROLE role_list - | FOR USER role_list - ; - -defaclaction - : GRANT privileges ON defacl_privilege_target TO grantee_list opt_grant_grant_option - | REVOKE privileges ON defacl_privilege_target FROM grantee_list opt_drop_behavior - | REVOKE GRANT OPTION FOR privileges ON defacl_privilege_target FROM grantee_list opt_drop_behavior - ; - -defacl_privilege_target - : TABLES - | FUNCTIONS - | ROUTINES - | SEQUENCES - | TYPES_P - | SCHEMAS - ; - -//create index - -indexstmt - : CREATE opt_unique INDEX opt_concurrently opt_index_name ON relation_expr access_method_clause OPEN_PAREN index_params CLOSE_PAREN opt_include - opt_reloptions opttablespace where_clause - | CREATE opt_unique INDEX opt_concurrently IF_P NOT EXISTS name ON relation_expr access_method_clause OPEN_PAREN index_params CLOSE_PAREN - opt_include opt_reloptions opttablespace where_clause - ; - -opt_unique - : UNIQUE - | - ; - -opt_concurrently - : CONCURRENTLY - | - ; - -opt_index_name - : name - | - ; - -access_method_clause - : USING name - | - ; - -index_params - : index_elem (COMMA index_elem)* - ; - -index_elem_options - : opt_collate opt_class opt_asc_desc opt_nulls_order - | opt_collate any_name reloptions opt_asc_desc opt_nulls_order - ; - -index_elem - : colid index_elem_options - | func_expr_windowless index_elem_options - | OPEN_PAREN a_expr CLOSE_PAREN index_elem_options - ; - -opt_include - : INCLUDE OPEN_PAREN index_including_params CLOSE_PAREN - | - ; - -index_including_params - : index_elem (COMMA index_elem)* - ; - -opt_collate - : COLLATE any_name - | - ; - -opt_class - : any_name - | - ; - -opt_asc_desc - : ASC - | DESC - | - ; - -//TOD NULLS_LA was used - -opt_nulls_order - : NULLS_P FIRST_P - | NULLS_P LAST_P - | - ; - -createfunctionstmt - : CREATE opt_or_replace (FUNCTION | PROCEDURE) func_name func_args_with_defaults ( - RETURNS (func_return | TABLE OPEN_PAREN table_func_column_list CLOSE_PAREN) - )? createfunc_opt_list - ; - -opt_or_replace - : OR REPLACE - | - ; - -func_args - : OPEN_PAREN func_args_list? CLOSE_PAREN - ; - -func_args_list - : func_arg (COMMA func_arg)* - ; - -function_with_argtypes_list - : function_with_argtypes (COMMA function_with_argtypes)* - ; - -function_with_argtypes - : func_name func_args - | type_func_name_keyword - | colid indirection? - ; - -func_args_with_defaults - : OPEN_PAREN func_args_with_defaults_list? CLOSE_PAREN - ; - -func_args_with_defaults_list - : func_arg_with_default (COMMA func_arg_with_default)* - ; - -func_arg - : arg_class param_name? func_type - | param_name arg_class? func_type - | func_type - ; - -arg_class - : IN_P OUT_P? - | OUT_P - | INOUT - | VARIADIC - ; - -param_name - : type_function_name - | builtin_function_name - | LEFT - | RIGHT - ; - -func_return - : func_type - ; - -func_type - : typename - | SETOF? (builtin_function_name | type_function_name | LEFT | RIGHT) attrs PERCENT TYPE_P - ; - -func_arg_with_default - : func_arg ((DEFAULT | EQUAL) a_expr)? - ; - -aggr_arg - : func_arg - ; - -aggr_args - : OPEN_PAREN ( - STAR - | aggr_args_list - | ORDER BY aggr_args_list - | aggr_args_list ORDER BY aggr_args_list - ) CLOSE_PAREN - ; - -aggr_args_list - : aggr_arg (COMMA aggr_arg)* - ; - -aggregate_with_argtypes - : func_name aggr_args - ; - -aggregate_with_argtypes_list - : aggregate_with_argtypes (COMMA aggregate_with_argtypes)* - ; - -createfunc_opt_list - : createfunc_opt_item+ { - ParseRoutineBody(_localctx); - } - // | createfunc_opt_list createfunc_opt_item - ; - -common_func_opt_item - : CALLED ON NULL_P INPUT_P - | RETURNS NULL_P ON NULL_P INPUT_P - | STRICT_P - | IMMUTABLE - | STABLE - | VOLATILE - | EXTERNAL SECURITY DEFINER - | EXTERNAL SECURITY INVOKER - | SECURITY DEFINER - | SECURITY INVOKER - | LEAKPROOF - | NOT LEAKPROOF - | COST numericonly - | ROWS numericonly - | SUPPORT any_name - | functionsetresetclause - | PARALLEL colid - ; - -createfunc_opt_item - : AS func_as - | LANGUAGE nonreservedword_or_sconst - | TRANSFORM transform_type_list - | WINDOW - | common_func_opt_item - ; - -//https://www.postgresql.org/docs/9.1/sql-createfunction.html - -// | AS 'definition' - -// | AS 'obj_file', 'link_symbol' - -func_as - locals[ParserRuleContext Definition] - : - /* |AS 'definition'*/ def = sconst - /*| AS 'obj_file', 'link_symbol'*/ - | sconst COMMA sconst - ; - -transform_type_list - : FOR TYPE_P typename (COMMA FOR TYPE_P typename)* - ; - -opt_definition - : WITH definition - | - ; - -table_func_column - : param_name func_type - ; - -table_func_column_list - : table_func_column (COMMA table_func_column)* - ; - -alterfunctionstmt - : ALTER (FUNCTION | PROCEDURE | ROUTINE) function_with_argtypes alterfunc_opt_list opt_restrict - ; - -alterfunc_opt_list - : common_func_opt_item+ - ; - -opt_restrict - : RESTRICT - | - ; - -removefuncstmt - : DROP FUNCTION function_with_argtypes_list opt_drop_behavior - | DROP FUNCTION IF_P EXISTS function_with_argtypes_list opt_drop_behavior - | DROP PROCEDURE function_with_argtypes_list opt_drop_behavior - | DROP PROCEDURE IF_P EXISTS function_with_argtypes_list opt_drop_behavior - | DROP ROUTINE function_with_argtypes_list opt_drop_behavior - | DROP ROUTINE IF_P EXISTS function_with_argtypes_list opt_drop_behavior - ; - -removeaggrstmt - : DROP AGGREGATE aggregate_with_argtypes_list opt_drop_behavior - | DROP AGGREGATE IF_P EXISTS aggregate_with_argtypes_list opt_drop_behavior - ; - -removeoperstmt - : DROP OPERATOR operator_with_argtypes_list opt_drop_behavior - | DROP OPERATOR IF_P EXISTS operator_with_argtypes_list opt_drop_behavior - ; - -oper_argtypes - : OPEN_PAREN typename CLOSE_PAREN - | OPEN_PAREN typename COMMA typename CLOSE_PAREN - | OPEN_PAREN NONE COMMA typename CLOSE_PAREN - | OPEN_PAREN typename COMMA NONE CLOSE_PAREN - ; - -any_operator - : (colid DOT)* all_op - ; - -operator_with_argtypes_list - : operator_with_argtypes (COMMA operator_with_argtypes)* - ; - -operator_with_argtypes - : any_operator oper_argtypes - ; - -dostmt - : DO dostmt_opt_list - ; - -dostmt_opt_list - : dostmt_opt_item+ - ; - -dostmt_opt_item - : sconst - | LANGUAGE nonreservedword_or_sconst - ; - -createcaststmt - : CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITH FUNCTION function_with_argtypes cast_context - | CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITHOUT FUNCTION cast_context - | CREATE CAST OPEN_PAREN typename AS typename CLOSE_PAREN WITH INOUT cast_context - ; - -cast_context - : AS IMPLICIT_P - | AS ASSIGNMENT - | - ; - -dropcaststmt - : DROP CAST opt_if_exists OPEN_PAREN typename AS typename CLOSE_PAREN opt_drop_behavior - ; - -opt_if_exists - : IF_P EXISTS - | - ; - -createtransformstmt - : CREATE opt_or_replace TRANSFORM FOR typename LANGUAGE name OPEN_PAREN transform_element_list CLOSE_PAREN - ; - -transform_element_list - : FROM SQL_P WITH FUNCTION function_with_argtypes COMMA TO SQL_P WITH FUNCTION function_with_argtypes - | TO SQL_P WITH FUNCTION function_with_argtypes COMMA FROM SQL_P WITH FUNCTION function_with_argtypes - | FROM SQL_P WITH FUNCTION function_with_argtypes - | TO SQL_P WITH FUNCTION function_with_argtypes - ; - -droptransformstmt - : DROP TRANSFORM opt_if_exists FOR typename LANGUAGE name opt_drop_behavior - ; - -reindexstmt - : REINDEX reindex_target_type opt_concurrently qualified_name - | REINDEX reindex_target_multitable opt_concurrently name - | REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_type opt_concurrently qualified_name - | REINDEX OPEN_PAREN reindex_option_list CLOSE_PAREN reindex_target_multitable opt_concurrently name - ; - -reindex_target_type - : INDEX - | TABLE - | SCHEMA - | DATABASE - | SYSTEM_P - ; - -reindex_target_multitable - : SCHEMA - | SYSTEM_P - | DATABASE - ; - -reindex_option_list - : reindex_option_elem (COMMA reindex_option_elem)* - ; - -reindex_option_elem - : VERBOSE - | TABLESPACE - | CONCURRENTLY - ; - -altertblspcstmt - : ALTER TABLESPACE name SET reloptions - | ALTER TABLESPACE name RESET reloptions - ; - -renamestmt - : ALTER AGGREGATE aggregate_with_argtypes RENAME TO name - | ALTER COLLATION any_name RENAME TO name - | ALTER CONVERSION_P any_name RENAME TO name - | ALTER DATABASE name RENAME TO name - | ALTER DOMAIN_P any_name RENAME TO name - | ALTER DOMAIN_P any_name RENAME CONSTRAINT name TO name - | ALTER FOREIGN DATA_P WRAPPER name RENAME TO name - | ALTER FUNCTION function_with_argtypes RENAME TO name - | ALTER GROUP_P roleid RENAME TO roleid - | ALTER opt_procedural LANGUAGE name RENAME TO name - | ALTER OPERATOR CLASS any_name USING name RENAME TO name - | ALTER OPERATOR FAMILY any_name USING name RENAME TO name - | ALTER POLICY name ON qualified_name RENAME TO name - | ALTER POLICY IF_P EXISTS name ON qualified_name RENAME TO name - | ALTER PROCEDURE function_with_argtypes RENAME TO name - | ALTER PUBLICATION name RENAME TO name - | ALTER ROUTINE function_with_argtypes RENAME TO name - | ALTER SCHEMA name RENAME TO name - | ALTER SERVER name RENAME TO name - | ALTER SUBSCRIPTION name RENAME TO name - | ALTER TABLE relation_expr RENAME TO name - | ALTER TABLE IF_P EXISTS relation_expr RENAME TO name - | ALTER SEQUENCE qualified_name RENAME TO name - | ALTER SEQUENCE IF_P EXISTS qualified_name RENAME TO name - | ALTER VIEW qualified_name RENAME TO name - | ALTER VIEW IF_P EXISTS qualified_name RENAME TO name - | ALTER MATERIALIZED VIEW qualified_name RENAME TO name - | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME TO name - | ALTER INDEX qualified_name RENAME TO name - | ALTER INDEX IF_P EXISTS qualified_name RENAME TO name - | ALTER FOREIGN TABLE relation_expr RENAME TO name - | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME TO name - | ALTER TABLE relation_expr RENAME opt_column name TO name - | ALTER TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name - | ALTER VIEW qualified_name RENAME opt_column name TO name - | ALTER VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name - | ALTER MATERIALIZED VIEW qualified_name RENAME opt_column name TO name - | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name RENAME opt_column name TO name - | ALTER TABLE relation_expr RENAME CONSTRAINT name TO name - | ALTER TABLE IF_P EXISTS relation_expr RENAME CONSTRAINT name TO name - | ALTER FOREIGN TABLE relation_expr RENAME opt_column name TO name - | ALTER FOREIGN TABLE IF_P EXISTS relation_expr RENAME opt_column name TO name - | ALTER RULE name ON qualified_name RENAME TO name - | ALTER TRIGGER name ON qualified_name RENAME TO name - | ALTER EVENT TRIGGER name RENAME TO name - | ALTER ROLE roleid RENAME TO roleid - | ALTER USER roleid RENAME TO roleid - | ALTER TABLESPACE name RENAME TO name - | ALTER STATISTICS any_name RENAME TO name - | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name - | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name - | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name - | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name - | ALTER TYPE_P any_name RENAME TO name - | ALTER TYPE_P any_name RENAME ATTRIBUTE name TO name opt_drop_behavior - ; - -opt_column - : COLUMN - | - ; - -opt_set_data - : SET DATA_P - | - ; - -alterobjectdependsstmt - : ALTER FUNCTION function_with_argtypes opt_no DEPENDS ON EXTENSION name - | ALTER PROCEDURE function_with_argtypes opt_no DEPENDS ON EXTENSION name - | ALTER ROUTINE function_with_argtypes opt_no DEPENDS ON EXTENSION name - | ALTER TRIGGER name ON qualified_name opt_no DEPENDS ON EXTENSION name - | ALTER MATERIALIZED VIEW qualified_name opt_no DEPENDS ON EXTENSION name - | ALTER INDEX qualified_name opt_no DEPENDS ON EXTENSION name - ; - -opt_no - : NO - | - ; - -alterobjectschemastmt - : ALTER AGGREGATE aggregate_with_argtypes SET SCHEMA name - | ALTER COLLATION any_name SET SCHEMA name - | ALTER CONVERSION_P any_name SET SCHEMA name - | ALTER DOMAIN_P any_name SET SCHEMA name - | ALTER EXTENSION name SET SCHEMA name - | ALTER FUNCTION function_with_argtypes SET SCHEMA name - | ALTER OPERATOR operator_with_argtypes SET SCHEMA name - | ALTER OPERATOR CLASS any_name USING name SET SCHEMA name - | ALTER OPERATOR FAMILY any_name USING name SET SCHEMA name - | ALTER PROCEDURE function_with_argtypes SET SCHEMA name - | ALTER ROUTINE function_with_argtypes SET SCHEMA name - | ALTER TABLE relation_expr SET SCHEMA name - | ALTER TABLE IF_P EXISTS relation_expr SET SCHEMA name - | ALTER STATISTICS any_name SET SCHEMA name - | ALTER TEXT_P SEARCH PARSER any_name SET SCHEMA name - | ALTER TEXT_P SEARCH DICTIONARY any_name SET SCHEMA name - | ALTER TEXT_P SEARCH TEMPLATE any_name SET SCHEMA name - | ALTER TEXT_P SEARCH CONFIGURATION any_name SET SCHEMA name - | ALTER SEQUENCE qualified_name SET SCHEMA name - | ALTER SEQUENCE IF_P EXISTS qualified_name SET SCHEMA name - | ALTER VIEW qualified_name SET SCHEMA name - | ALTER VIEW IF_P EXISTS qualified_name SET SCHEMA name - | ALTER MATERIALIZED VIEW qualified_name SET SCHEMA name - | ALTER MATERIALIZED VIEW IF_P EXISTS qualified_name SET SCHEMA name - | ALTER FOREIGN TABLE relation_expr SET SCHEMA name - | ALTER FOREIGN TABLE IF_P EXISTS relation_expr SET SCHEMA name - | ALTER TYPE_P any_name SET SCHEMA name - ; - -alteroperatorstmt - : ALTER OPERATOR operator_with_argtypes SET OPEN_PAREN operator_def_list CLOSE_PAREN - ; - -operator_def_list - : operator_def_elem (COMMA operator_def_elem)* - ; - -operator_def_elem - : collabel EQUAL NONE - | collabel EQUAL operator_def_arg - ; - -operator_def_arg - : func_type - | reserved_keyword - | qual_all_op - | numericonly - | sconst - ; - -altertypestmt - : ALTER TYPE_P any_name SET OPEN_PAREN operator_def_list CLOSE_PAREN - ; - -alterownerstmt - : ALTER AGGREGATE aggregate_with_argtypes OWNER TO rolespec - | ALTER COLLATION any_name OWNER TO rolespec - | ALTER CONVERSION_P any_name OWNER TO rolespec - | ALTER DATABASE name OWNER TO rolespec - | ALTER DOMAIN_P any_name OWNER TO rolespec - | ALTER FUNCTION function_with_argtypes OWNER TO rolespec - | ALTER opt_procedural LANGUAGE name OWNER TO rolespec - | ALTER LARGE_P OBJECT_P numericonly OWNER TO rolespec - | ALTER OPERATOR operator_with_argtypes OWNER TO rolespec - | ALTER OPERATOR CLASS any_name USING name OWNER TO rolespec - | ALTER OPERATOR FAMILY any_name USING name OWNER TO rolespec - | ALTER PROCEDURE function_with_argtypes OWNER TO rolespec - | ALTER ROUTINE function_with_argtypes OWNER TO rolespec - | ALTER SCHEMA name OWNER TO rolespec - | ALTER TYPE_P any_name OWNER TO rolespec - | ALTER TABLESPACE name OWNER TO rolespec - | ALTER STATISTICS any_name OWNER TO rolespec - | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO rolespec - | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO rolespec - | ALTER FOREIGN DATA_P WRAPPER name OWNER TO rolespec - | ALTER SERVER name OWNER TO rolespec - | ALTER EVENT TRIGGER name OWNER TO rolespec - | ALTER PUBLICATION name OWNER TO rolespec - | ALTER SUBSCRIPTION name OWNER TO rolespec - ; - -createpublicationstmt - : CREATE PUBLICATION name opt_publication_for_tables opt_definition - ; - -opt_publication_for_tables - : publication_for_tables - | - ; - -publication_for_tables - : FOR TABLE relation_expr_list - | FOR ALL TABLES - ; - -alterpublicationstmt - : ALTER PUBLICATION name SET definition - | ALTER PUBLICATION name ADD_P TABLE relation_expr_list - | ALTER PUBLICATION name SET TABLE relation_expr_list - | ALTER PUBLICATION name DROP TABLE relation_expr_list - ; - -createsubscriptionstmt - : CREATE SUBSCRIPTION name CONNECTION sconst PUBLICATION publication_name_list opt_definition - ; - -publication_name_list - : publication_name_item (COMMA publication_name_item)* - ; - -publication_name_item - : collabel - ; - -altersubscriptionstmt - : ALTER SUBSCRIPTION name SET definition - | ALTER SUBSCRIPTION name CONNECTION sconst - | ALTER SUBSCRIPTION name REFRESH PUBLICATION opt_definition - | ALTER SUBSCRIPTION name SET PUBLICATION publication_name_list opt_definition - | ALTER SUBSCRIPTION name ENABLE_P - | ALTER SUBSCRIPTION name DISABLE_P - ; - -dropsubscriptionstmt - : DROP SUBSCRIPTION name opt_drop_behavior - | DROP SUBSCRIPTION IF_P EXISTS name opt_drop_behavior - ; - -rulestmt - : CREATE opt_or_replace RULE name AS ON event TO qualified_name where_clause DO opt_instead ruleactionlist - ; - -ruleactionlist - : NOTHING - | ruleactionstmt - | OPEN_PAREN ruleactionmulti CLOSE_PAREN - ; - -ruleactionmulti - : ruleactionstmtOrEmpty (SEMI ruleactionstmtOrEmpty)* - ; - -ruleactionstmt - : selectstmt - | insertstmt - | updatestmt - | deletestmt - | notifystmt - ; - -ruleactionstmtOrEmpty - : ruleactionstmt - | - ; - -event - : SELECT - | UPDATE - | DELETE_P - | INSERT - ; - -opt_instead - : INSTEAD - | ALSO - | - ; - -notifystmt - : NOTIFY colid notify_payload - ; - -notify_payload - : COMMA sconst - | - ; - -listenstmt - : LISTEN colid - ; - -unlistenstmt - : UNLISTEN colid - | UNLISTEN STAR - ; - -transactionstmt - : ABORT_P opt_transaction opt_transaction_chain - | BEGIN_P opt_transaction transaction_mode_list_or_empty - | START TRANSACTION transaction_mode_list_or_empty - | COMMIT opt_transaction opt_transaction_chain - | END_P opt_transaction opt_transaction_chain - | ROLLBACK opt_transaction opt_transaction_chain - | SAVEPOINT colid - | RELEASE SAVEPOINT colid - | RELEASE colid - | ROLLBACK opt_transaction TO SAVEPOINT colid - | ROLLBACK opt_transaction TO colid - | PREPARE TRANSACTION sconst - | COMMIT PREPARED sconst - | ROLLBACK PREPARED sconst - ; - -opt_transaction - : WORK - | TRANSACTION - | - ; - -transaction_mode_item - : ISOLATION LEVEL iso_level - | READ ONLY - | READ WRITE - | DEFERRABLE - | NOT DEFERRABLE - ; - -transaction_mode_list - : transaction_mode_item (COMMA? transaction_mode_item)* - ; - -transaction_mode_list_or_empty - : transaction_mode_list - | - ; - -opt_transaction_chain - : AND NO? CHAIN - | - ; - -viewstmt - : CREATE (OR REPLACE)? opttemp ( - VIEW qualified_name opt_column_list opt_reloptions - | RECURSIVE VIEW qualified_name OPEN_PAREN columnlist CLOSE_PAREN opt_reloptions - ) AS selectstmt opt_check_option - ; - -opt_check_option - : WITH (CASCADED | LOCAL)? CHECK OPTION - | - ; - -loadstmt - : LOAD file_name - ; - -createdbstmt - : CREATE DATABASE name opt_with createdb_opt_list - ; - -createdb_opt_list - : createdb_opt_items - | - ; - -createdb_opt_items - : createdb_opt_item+ - ; - -createdb_opt_item - : createdb_opt_name opt_equal (signediconst | opt_boolean_or_string | DEFAULT) - ; - -createdb_opt_name - : identifier - | CONNECTION LIMIT - | ENCODING - | LOCATION - | OWNER - | TABLESPACE - | TEMPLATE - ; - -opt_equal - : EQUAL - | - ; - -alterdatabasestmt - : ALTER DATABASE name (WITH createdb_opt_list | createdb_opt_list | SET TABLESPACE name) - ; - -alterdatabasesetstmt - : ALTER DATABASE name setresetclause - ; - -dropdbstmt - : DROP DATABASE (IF_P EXISTS)? name (opt_with OPEN_PAREN drop_option_list CLOSE_PAREN)? - ; - -drop_option_list - : drop_option (COMMA drop_option)* - ; - -drop_option - : FORCE - ; - -altercollationstmt - : ALTER COLLATION any_name REFRESH VERSION_P - ; - -altersystemstmt - : ALTER SYSTEM_P (SET | RESET) generic_set - ; - -createdomainstmt - : CREATE DOMAIN_P any_name opt_as typename colquallist - ; - -alterdomainstmt - : ALTER DOMAIN_P any_name ( - alter_column_default - | DROP NOT NULL_P - | SET NOT NULL_P - | ADD_P tableconstraint - | DROP CONSTRAINT (IF_P EXISTS)? name opt_drop_behavior - | VALIDATE CONSTRAINT name - ) - ; - -opt_as - : AS - | - ; - -altertsdictionarystmt - : ALTER TEXT_P SEARCH DICTIONARY any_name definition - ; - -altertsconfigurationstmt - : ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list any_with any_name_list - | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list any_with any_name_list - | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name any_with any_name - | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name any_with any_name - | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list - | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list - ; - -any_with - : WITH - //TODO - - // | WITH_LA - ; - -createconversionstmt - : CREATE opt_default CONVERSION_P any_name FOR sconst TO sconst FROM any_name - ; - -clusterstmt - : CLUSTER opt_verbose qualified_name cluster_index_specification - | CLUSTER opt_verbose - | CLUSTER opt_verbose name ON qualified_name - ; - -cluster_index_specification - : USING name - | - ; - -vacuumstmt - : VACUUM opt_full opt_freeze opt_verbose opt_analyze opt_vacuum_relation_list - | VACUUM OPEN_PAREN vac_analyze_option_list CLOSE_PAREN opt_vacuum_relation_list - ; - -analyzestmt - : analyze_keyword opt_verbose opt_vacuum_relation_list - | analyze_keyword OPEN_PAREN vac_analyze_option_list CLOSE_PAREN opt_vacuum_relation_list - ; - -vac_analyze_option_list - : vac_analyze_option_elem (COMMA vac_analyze_option_elem)* - ; - -analyze_keyword - : ANALYZE - | ANALYSE - ; - -vac_analyze_option_elem - : vac_analyze_option_name vac_analyze_option_arg - ; - -vac_analyze_option_name - : nonreservedword - | analyze_keyword - ; - -vac_analyze_option_arg - : opt_boolean_or_string - | numericonly - | - ; - -opt_analyze - : analyze_keyword - | - ; - -opt_verbose - : VERBOSE - | - ; - -opt_full - : FULL - | - ; - -opt_freeze - : FREEZE - | - ; - -opt_name_list - : OPEN_PAREN name_list CLOSE_PAREN - | - ; - -vacuum_relation - : qualified_name opt_name_list - ; - -vacuum_relation_list - : vacuum_relation (COMMA vacuum_relation)* - ; - -opt_vacuum_relation_list - : vacuum_relation_list - | - ; - -explainstmt - : EXPLAIN explainablestmt - | EXPLAIN analyze_keyword opt_verbose explainablestmt - | EXPLAIN VERBOSE explainablestmt - | EXPLAIN OPEN_PAREN explain_option_list CLOSE_PAREN explainablestmt - ; - -explainablestmt - : selectstmt - | insertstmt - | updatestmt - | deletestmt - | declarecursorstmt - | createasstmt - | creatematviewstmt - | refreshmatviewstmt - | executestmt - ; - -explain_option_list - : explain_option_elem (COMMA explain_option_elem)* - ; - -explain_option_elem - : explain_option_name explain_option_arg - ; - -explain_option_name - : nonreservedword - | analyze_keyword - ; - -explain_option_arg - : opt_boolean_or_string - | numericonly - | - ; - -preparestmt - : PREPARE name prep_type_clause AS preparablestmt - ; - -prep_type_clause - : OPEN_PAREN type_list CLOSE_PAREN - | - ; - -preparablestmt - : selectstmt - | insertstmt - | updatestmt - | deletestmt - ; - -executestmt - : EXECUTE name execute_param_clause - | CREATE opttemp TABLE create_as_target AS EXECUTE name execute_param_clause opt_with_data - | CREATE opttemp TABLE IF_P NOT EXISTS create_as_target AS EXECUTE name execute_param_clause opt_with_data - ; - -execute_param_clause - : OPEN_PAREN expr_list CLOSE_PAREN - | - ; - -deallocatestmt - : DEALLOCATE name - | DEALLOCATE PREPARE name - | DEALLOCATE ALL - | DEALLOCATE PREPARE ALL - ; - -insertstmt - : opt_with_clause INSERT INTO insert_target insert_rest opt_on_conflict returning_clause - ; - -insert_target - : qualified_name (AS colid)? - ; - -insert_rest - : selectstmt - | OVERRIDING override_kind VALUE_P selectstmt - | OPEN_PAREN insert_column_list CLOSE_PAREN (OVERRIDING override_kind VALUE_P)? selectstmt - | DEFAULT VALUES - ; - -override_kind - : USER - | SYSTEM_P - ; - -insert_column_list - : insert_column_item (COMMA insert_column_item)* - ; - -insert_column_item - : colid opt_indirection - ; - -opt_on_conflict - : ON CONFLICT opt_conf_expr DO (UPDATE SET set_clause_list where_clause | NOTHING) - | - ; - -opt_conf_expr - : OPEN_PAREN index_params CLOSE_PAREN where_clause - | ON CONSTRAINT name - | - ; - -returning_clause - : RETURNING target_list - | - ; - -// https://www.postgresql.org/docs/current/sql-merge.html -mergestmt - : MERGE INTO? qualified_name alias_clause? USING (select_with_parens | qualified_name) alias_clause? ON a_expr ( - merge_insert_clause merge_update_clause? - | merge_update_clause merge_insert_clause? - ) merge_delete_clause? - ; - -merge_insert_clause - : WHEN NOT MATCHED (AND a_expr)? THEN? INSERT (OPEN_PAREN insert_column_list CLOSE_PAREN)? values_clause - ; - -merge_update_clause - : WHEN MATCHED (AND a_expr)? THEN? UPDATE SET set_clause_list - ; - -merge_delete_clause - : WHEN MATCHED THEN? DELETE_P - ; - -deletestmt - : opt_with_clause DELETE_P FROM relation_expr_opt_alias using_clause where_or_current_clause returning_clause - ; - -using_clause - : USING from_list - | - ; - -lockstmt - : LOCK_P opt_table relation_expr_list opt_lock opt_nowait - ; - -opt_lock - : IN_P lock_type MODE - | - ; - -lock_type - : ACCESS (SHARE | EXCLUSIVE) - | ROW (SHARE | EXCLUSIVE) - | SHARE (UPDATE EXCLUSIVE | ROW EXCLUSIVE)? - | EXCLUSIVE - ; - -opt_nowait - : NOWAIT - | - ; - -opt_nowait_or_skip - : NOWAIT - | SKIP_P LOCKED - | - ; - -updatestmt - : opt_with_clause UPDATE relation_expr_opt_alias SET set_clause_list from_clause where_or_current_clause returning_clause - ; - -set_clause_list - : set_clause (COMMA set_clause)* - ; - -set_clause - : set_target EQUAL a_expr - | OPEN_PAREN set_target_list CLOSE_PAREN EQUAL a_expr - ; - -set_target - : colid opt_indirection - ; - -set_target_list - : set_target (COMMA set_target)* - ; - -declarecursorstmt - : DECLARE cursor_name cursor_options CURSOR opt_hold FOR selectstmt - ; - -cursor_name - : name - ; - -cursor_options - : (NO SCROLL | SCROLL | BINARY | INSENSITIVE)* - ; - -opt_hold - : - | WITH HOLD - | WITHOUT HOLD - ; - -/* -TODO: why select_with_parens alternative is needed at all? -i guess it because original byson grammar can choose selectstmt(2)->select_with_parens on only OPEN_PARENT/SELECT kewords at the begining of statement; -(select * from tab); -parse can go through selectstmt( )->select_no_parens(1)->select_clause(2)->select_with_parens(1)->select_no_parens(1)->select_clause(1)->simple_select -instead of selectstmt(1)->select_no_parens(1)->select_clause(2)->select_with_parens(1)->select_no_parens(1)->select_clause(1)->simple_select -all standard tests passed on both variants -*/ - -selectstmt - : select_no_parens - | select_with_parens - ; - -select_with_parens - : OPEN_PAREN select_no_parens CLOSE_PAREN - | OPEN_PAREN select_with_parens CLOSE_PAREN - ; - -select_no_parens - : select_clause opt_sort_clause ( - for_locking_clause opt_select_limit - | select_limit opt_for_locking_clause - )? - | with_clause select_clause opt_sort_clause ( - for_locking_clause opt_select_limit - | select_limit opt_for_locking_clause - )? - ; - -select_clause - : simple_select_intersect ((UNION | EXCEPT) all_or_distinct simple_select_intersect)* - ; - -simple_select_intersect - : simple_select_pramary (INTERSECT all_or_distinct simple_select_pramary)* - ; - -simple_select_pramary - : ( - SELECT (opt_all_clause into_clause opt_target_list | distinct_clause target_list) into_clause from_clause where_clause group_clause - having_clause window_clause - ) - | values_clause - | TABLE relation_expr - | select_with_parens - ; - -with_clause - : WITH RECURSIVE? cte_list - ; - -cte_list - : common_table_expr (COMMA common_table_expr)* - ; - -common_table_expr - : name opt_name_list AS opt_materialized OPEN_PAREN preparablestmt CLOSE_PAREN - ; - -opt_materialized - : MATERIALIZED - | NOT MATERIALIZED - | - ; - -opt_with_clause - : with_clause - | - ; - -into_clause - : INTO (opt_strict opttempTableName | into_target) - | - ; - -opt_strict - : - | STRICT_P - ; - -opttempTableName - : (LOCAL | GLOBAL)? (TEMPORARY | TEMP) opt_table qualified_name - | UNLOGGED opt_table qualified_name - | TABLE qualified_name - | qualified_name - ; - -opt_table - : TABLE - | - ; - -all_or_distinct - : ALL - | DISTINCT - | - ; - -distinct_clause - : DISTINCT (ON OPEN_PAREN expr_list CLOSE_PAREN)? - ; - -opt_all_clause - : ALL - | - ; - -opt_sort_clause - : sort_clause - | - ; - -sort_clause - : ORDER BY sortby_list - ; - -sortby_list - : sortby (COMMA sortby)* - ; - -sortby - : a_expr (USING qual_all_op | opt_asc_desc) opt_nulls_order - ; - -select_limit - : limit_clause offset_clause? - | offset_clause limit_clause? - ; - -opt_select_limit - : select_limit - | - ; - -limit_clause - : LIMIT select_limit_value (COMMA select_offset_value)? - | FETCH first_or_next ( - select_fetch_first_value row_or_rows (ONLY | WITH TIES) - | row_or_rows (ONLY | WITH TIES) - ) - ; - -offset_clause - : OFFSET (select_offset_value | select_fetch_first_value row_or_rows) - ; - -select_limit_value - : a_expr - | ALL - ; - -select_offset_value - : a_expr - ; - -select_fetch_first_value - : c_expr - | PLUS i_or_f_const - | MINUS i_or_f_const - ; - -i_or_f_const - : iconst - | fconst - ; - -row_or_rows - : ROW - | ROWS - ; - -first_or_next - : FIRST_P - | NEXT - ; - -group_clause - : GROUP_P BY group_by_list - | - ; - -group_by_list - : group_by_item (COMMA group_by_item)* - ; - -group_by_item - : empty_grouping_set - | cube_clause - | rollup_clause - | grouping_sets_clause - | a_expr - ; - -empty_grouping_set - : OPEN_PAREN CLOSE_PAREN - ; - -rollup_clause - : ROLLUP OPEN_PAREN expr_list CLOSE_PAREN - ; - -cube_clause - : CUBE OPEN_PAREN expr_list CLOSE_PAREN - ; - -grouping_sets_clause - : GROUPING SETS OPEN_PAREN group_by_list CLOSE_PAREN - ; - -having_clause - : HAVING a_expr - | - ; - -for_locking_clause - : for_locking_items - | FOR READ ONLY - ; - -opt_for_locking_clause - : for_locking_clause - | - ; - -for_locking_items - : for_locking_item+ - ; - -for_locking_item - : for_locking_strength locked_rels_list opt_nowait_or_skip - ; - -for_locking_strength - : FOR ((NO KEY)? UPDATE | KEY? SHARE) - ; - -locked_rels_list - : OF qualified_name_list - | - ; - -values_clause - : VALUES OPEN_PAREN expr_list CLOSE_PAREN (COMMA OPEN_PAREN expr_list CLOSE_PAREN)* - ; - -from_clause - : FROM from_list - | - ; - -from_list - : non_ansi_join - | table_ref (COMMA table_ref)* - ; - -non_ansi_join - : table_ref (COMMA table_ref)+ - ; - -table_ref - : ( - relation_expr opt_alias_clause tablesample_clause? - | func_table func_alias_clause - | xmltable opt_alias_clause - | select_with_parens opt_alias_clause - | LATERAL_P ( - xmltable opt_alias_clause - | func_table func_alias_clause - | select_with_parens opt_alias_clause - ) - | OPEN_PAREN table_ref ( - CROSS JOIN table_ref - | NATURAL join_type? JOIN table_ref - | join_type? JOIN table_ref join_qual - )? CLOSE_PAREN opt_alias_clause - ) ( - CROSS JOIN table_ref - | NATURAL join_type? JOIN table_ref - | join_type? JOIN table_ref join_qual - )* - ; - -alias_clause - : AS? colid (OPEN_PAREN name_list CLOSE_PAREN)? - ; - -opt_alias_clause - : table_alias_clause - | - ; - -table_alias_clause - : AS? table_alias (OPEN_PAREN name_list CLOSE_PAREN)? - ; - -func_alias_clause - : alias_clause - | (AS colid? | colid) OPEN_PAREN tablefuncelementlist CLOSE_PAREN - | - ; - -join_type - : (FULL | LEFT | RIGHT | INNER_P) OUTER_P? - ; - -join_qual - : USING OPEN_PAREN name_list CLOSE_PAREN - | ON a_expr - ; - -relation_expr - : qualified_name STAR? - | ONLY (qualified_name | OPEN_PAREN qualified_name CLOSE_PAREN) - ; - -relation_expr_list - : relation_expr (COMMA relation_expr)* - ; - -relation_expr_opt_alias - : relation_expr (AS? colid)? - ; - -tablesample_clause - : TABLESAMPLE func_name OPEN_PAREN expr_list CLOSE_PAREN opt_repeatable_clause - ; - -opt_repeatable_clause - : REPEATABLE OPEN_PAREN a_expr CLOSE_PAREN - | - ; - -func_table - : func_expr_windowless opt_ordinality - | ROWS FROM OPEN_PAREN rowsfrom_list CLOSE_PAREN opt_ordinality - ; - -rowsfrom_item - : func_expr_windowless opt_col_def_list - ; - -rowsfrom_list - : rowsfrom_item (COMMA rowsfrom_item)* - ; - -opt_col_def_list - : AS OPEN_PAREN tablefuncelementlist CLOSE_PAREN - | - ; - -//TODO WITH_LA was used - -opt_ordinality - : WITH ORDINALITY - | - ; - -where_clause - : WHERE a_expr - | - ; - -where_or_current_clause - : WHERE (CURRENT_P OF cursor_name | a_expr) - | - ; - -opttablefuncelementlist - : tablefuncelementlist - | - ; - -tablefuncelementlist - : tablefuncelement (COMMA tablefuncelement)* - ; - -tablefuncelement - : colid typename opt_collate_clause - ; - -xmltable - : XMLTABLE OPEN_PAREN ( - c_expr xmlexists_argument COLUMNS xmltable_column_list - | XMLNAMESPACES OPEN_PAREN xml_namespace_list CLOSE_PAREN COMMA c_expr xmlexists_argument COLUMNS xmltable_column_list - ) CLOSE_PAREN - ; - -xmltable_column_list - : xmltable_column_el (COMMA xmltable_column_el)* - ; - -xmltable_column_el - : colid (typename xmltable_column_option_list? | FOR ORDINALITY) - ; - -xmltable_column_option_list - : xmltable_column_option_el+ - ; - -xmltable_column_option_el - : DEFAULT a_expr - | identifier a_expr - | NOT NULL_P - | NULL_P - ; - -xml_namespace_list - : xml_namespace_el (COMMA xml_namespace_el)* - ; - -xml_namespace_el - : b_expr AS collabel - | DEFAULT b_expr - ; - -typename - : SETOF? simpletypename (opt_array_bounds | ARRAY (OPEN_BRACKET iconst CLOSE_BRACKET)?) - | qualified_name PERCENT (ROWTYPE | TYPE_P) - ; - -opt_array_bounds - : (OPEN_BRACKET iconst? CLOSE_BRACKET)* - ; - -simpletypename - : generictype - | numeric - | bit - | character - | constdatetime - | constinterval (opt_interval | OPEN_PAREN iconst CLOSE_PAREN) - ; - -consttypename - : numeric - | constbit - | constcharacter - | constdatetime - ; - -generictype - : (builtin_function_name | type_function_name | LEFT | RIGHT) attrs? opt_type_modifiers - ; - -opt_type_modifiers - : OPEN_PAREN expr_list CLOSE_PAREN - | - ; - -numeric - : INT_P - | INTEGER - | SMALLINT - | BIGINT - | REAL - | FLOAT_P opt_float - | DOUBLE_P PRECISION - | DECIMAL_P opt_type_modifiers - | DEC opt_type_modifiers - | NUMERIC opt_type_modifiers - | BOOLEAN_P - ; - -opt_float - : OPEN_PAREN iconst CLOSE_PAREN - | - ; - -//todo: merge alts - -bit - : bitwithlength - | bitwithoutlength - ; - -constbit - : bitwithlength - | bitwithoutlength - ; - -bitwithlength - : BIT opt_varying OPEN_PAREN expr_list CLOSE_PAREN - ; - -bitwithoutlength - : BIT opt_varying - ; - -character - : character_c (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -constcharacter - : character_c (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -character_c - : (CHARACTER | CHAR_P | NCHAR) opt_varying - | VARCHAR - | NATIONAL (CHARACTER | CHAR_P) opt_varying - ; - -opt_varying - : VARYING - | - ; - -constdatetime - : (TIMESTAMP | TIME) (OPEN_PAREN iconst CLOSE_PAREN)? opt_timezone - ; - -constinterval - : INTERVAL - ; - -//TODO with_la was used - -opt_timezone - : WITH TIME ZONE - | WITHOUT TIME ZONE - | - ; - -opt_interval - : YEAR_P - | MONTH_P - | DAY_P - | HOUR_P - | MINUTE_P - | interval_second - | YEAR_P TO MONTH_P - | DAY_P TO (HOUR_P | MINUTE_P | interval_second) - | HOUR_P TO (MINUTE_P | interval_second) - | MINUTE_P TO interval_second - | - ; - -interval_second - : SECOND_P (OPEN_PAREN iconst CLOSE_PAREN)? - ; - -opt_escape - : ESCAPE a_expr - | - ; - -//precendence accroding to Table 4.2. Operator Precedence (highest to lowest) - -//https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-PRECEDENCE - -/* -original version of a_expr, for info - a_expr: c_expr - //:: left PostgreSQL-style typecast - | a_expr TYPECAST typename -- 1 - | a_expr COLLATE any_name -- 2 - | a_expr AT TIME ZONE a_expr-- 3 - //right unary plus, unary minus - | (PLUS| MINUS) a_expr -- 4 - //left exponentiation - | a_expr CARET a_expr -- 5 - //left multiplication, division, modulo - | a_expr (STAR | SLASH | PERCENT) a_expr -- 6 - //left addition, subtraction - | a_expr (PLUS | MINUS) a_expr -- 7 - //left all other native and user-defined operators - | a_expr qual_op a_expr -- 8 - | qual_op a_expr -- 9 - //range containment, set membership, string matching BETWEEN IN LIKE ILIKE SIMILAR - | a_expr NOT? (LIKE|ILIKE|SIMILAR TO|(BETWEEN SYMMETRIC?)) a_expr opt_escape -- 10 - //< > = <= >= <> comparison operators - | a_expr (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr -- 11 - //IS ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS DISTINCT FROM, etc - | a_expr IS NOT? - ( - NULL_P - |TRUE_P - |FALSE_P - |UNKNOWN - |DISTINCT FROM a_expr - |OF OPEN_PAREN type_list CLOSE_PAREN - |DOCUMENT_P - |unicode_normal_form? NORMALIZED - ) -- 12 - | a_expr (ISNULL|NOTNULL) -- 13 - | row OVERLAPS row -- 14 - //NOT right logical negation - | NOT a_expr -- 15 - //AND left logical conjunction - | a_expr AND a_expr -- 16 - //OR left logical disjunction - | a_expr OR a_expr -- 17 - | a_expr (LESS_LESS|GREATER_GREATER) a_expr -- 18 - | a_expr qual_op -- 19 - | a_expr NOT? IN_P in_expr -- 20 - | a_expr subquery_Op sub_type (select_with_parens|OPEN_PAREN a_expr CLOSE_PAREN) -- 21 - | UNIQUE select_with_parens -- 22 - | DEFAULT -- 23 -; -*/ - -a_expr - : a_expr_qual - ; - -/*23*/ - -/*moved to c_expr*/ - -/*22*/ - -/*moved to c_expr*/ - -/*19*/ - -a_expr_qual - : a_expr_lessless qual_op? - ; - -/*18*/ - -a_expr_lessless - : a_expr_or ((LESS_LESS | GREATER_GREATER) a_expr_or)* - ; - -/*17*/ - -a_expr_or - : a_expr_and (OR a_expr_and)* - ; - -/*16*/ - -a_expr_and - : a_expr_between (AND a_expr_between)* - ; - -/*21*/ - -a_expr_between - : a_expr_in (NOT? BETWEEN SYMMETRIC? a_expr_in AND a_expr_in)? - ; - -/*20*/ - -a_expr_in - : a_expr_unary_not (NOT? IN_P in_expr)? - ; - -/*15*/ - -a_expr_unary_not - : NOT? a_expr_isnull - ; - -/*14*/ - -/*moved to c_expr*/ - -/*13*/ - -a_expr_isnull - : a_expr_is_not (ISNULL | NOTNULL)? - ; - -/*12*/ - -a_expr_is_not - : a_expr_compare ( - IS NOT? ( - NULL_P - | TRUE_P - | FALSE_P - | UNKNOWN - | DISTINCT FROM a_expr - | OF OPEN_PAREN type_list CLOSE_PAREN - | DOCUMENT_P - | unicode_normal_form? NORMALIZED - ) - )? - ; - -/*11*/ - -a_expr_compare - : a_expr_like ( - (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) a_expr_like - | subquery_Op sub_type (select_with_parens | OPEN_PAREN a_expr CLOSE_PAREN) /*21*/ - )? - ; - -/*10*/ - -a_expr_like - : a_expr_qual_op (NOT? (LIKE | ILIKE | SIMILAR TO) a_expr_qual_op opt_escape)? - ; - -/* 8*/ - -a_expr_qual_op - : a_expr_unary_qualop (qual_op a_expr_unary_qualop)* - ; - -/* 9*/ - -a_expr_unary_qualop - : qual_op? a_expr_add - ; - -/* 7*/ - -a_expr_add - : a_expr_mul ((MINUS | PLUS) a_expr_mul)* - ; - -/* 6*/ - -a_expr_mul - : a_expr_caret ((STAR | SLASH | PERCENT) a_expr_caret)* - ; - -/* 5*/ - -a_expr_caret - : a_expr_unary_sign (CARET a_expr)? - ; - -/* 4*/ - -a_expr_unary_sign - : (MINUS | PLUS)? a_expr_at_time_zone /* */ - ; - -/* 3*/ - -a_expr_at_time_zone - : a_expr_collate (AT TIME ZONE a_expr)? - ; - -/* 2*/ - -a_expr_collate - : a_expr_typecast (COLLATE any_name)? - ; - -/* 1*/ - -a_expr_typecast - : c_expr (TYPECAST typename)* - ; - -b_expr - : c_expr - | b_expr TYPECAST typename - //right unary plus, unary minus - | (PLUS | MINUS) b_expr - //^ left exponentiation - | b_expr CARET b_expr - //* / % left multiplication, division, modulo - | b_expr (STAR | SLASH | PERCENT) b_expr - //+ - left addition, subtraction - | b_expr (PLUS | MINUS) b_expr - //(any other operator) left all other native and user-defined operators - | b_expr qual_op b_expr - //< > = <= >= <> comparison operators - | b_expr (LT | GT | EQUAL | LESS_EQUALS | GREATER_EQUALS | NOT_EQUALS) b_expr - | qual_op b_expr - | b_expr qual_op - //S ISNULL NOTNULL IS TRUE, IS FALSE, IS NULL, IS DISTINCT FROM, etc - | b_expr IS NOT? (DISTINCT FROM b_expr | OF OPEN_PAREN type_list CLOSE_PAREN | DOCUMENT_P) - ; - -c_expr - : EXISTS select_with_parens # c_expr_exists - | ARRAY (select_with_parens | array_expr) # c_expr_expr - | PARAM opt_indirection # c_expr_expr - | GROUPING OPEN_PAREN expr_list CLOSE_PAREN # c_expr_expr - | /*22*/ UNIQUE select_with_parens # c_expr_expr - | columnref # c_expr_expr - | aexprconst # c_expr_expr - | plsqlvariablename # c_expr_expr - | OPEN_PAREN a_expr_in_parens = a_expr CLOSE_PAREN opt_indirection # c_expr_expr - | case_expr # c_expr_case - | func_expr # c_expr_expr - | select_with_parens indirection? # c_expr_expr - | explicit_row # c_expr_expr - | implicit_row # c_expr_expr - | row OVERLAPS row /* 14*/ # c_expr_expr - ; - -plsqlvariablename - : PLSQLVARIABLENAME - ; - -func_application - : func_name OPEN_PAREN ( - func_arg_list (COMMA VARIADIC func_arg_expr)? opt_sort_clause - | VARIADIC func_arg_expr opt_sort_clause - | (ALL | DISTINCT) func_arg_list opt_sort_clause - | STAR - | - ) CLOSE_PAREN - ; - -func_expr - : func_application within_group_clause filter_clause over_clause - | func_expr_common_subexpr - ; - -func_expr_windowless - : func_application - | func_expr_common_subexpr - ; - -func_expr_common_subexpr - : COLLATION FOR OPEN_PAREN a_expr CLOSE_PAREN - | CURRENT_DATE - | CURRENT_TIME (OPEN_PAREN iconst CLOSE_PAREN)? - | CURRENT_TIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? - | LOCALTIME (OPEN_PAREN iconst CLOSE_PAREN)? - | LOCALTIMESTAMP (OPEN_PAREN iconst CLOSE_PAREN)? - | CURRENT_ROLE - | CURRENT_USER - | SESSION_USER - | USER - | CURRENT_CATALOG - | CURRENT_SCHEMA - | CAST OPEN_PAREN a_expr AS typename CLOSE_PAREN - | EXTRACT OPEN_PAREN extract_list CLOSE_PAREN - | NORMALIZE OPEN_PAREN a_expr (COMMA unicode_normal_form)? CLOSE_PAREN - | OVERLAY OPEN_PAREN overlay_list CLOSE_PAREN - | POSITION OPEN_PAREN position_list CLOSE_PAREN - | SUBSTRING OPEN_PAREN substr_list CLOSE_PAREN - | TREAT OPEN_PAREN a_expr AS typename CLOSE_PAREN - | TRIM OPEN_PAREN (BOTH | LEADING | TRAILING)? trim_list CLOSE_PAREN - | NULLIF OPEN_PAREN a_expr COMMA a_expr CLOSE_PAREN - | COALESCE OPEN_PAREN expr_list CLOSE_PAREN - | GREATEST OPEN_PAREN expr_list CLOSE_PAREN - | LEAST OPEN_PAREN expr_list CLOSE_PAREN - | XMLCONCAT OPEN_PAREN expr_list CLOSE_PAREN - | XMLELEMENT OPEN_PAREN NAME_P collabel (COMMA (xml_attributes | expr_list))? CLOSE_PAREN - | XMLEXISTS OPEN_PAREN c_expr xmlexists_argument CLOSE_PAREN - | XMLFOREST OPEN_PAREN xml_attribute_list CLOSE_PAREN - | XMLPARSE OPEN_PAREN document_or_content a_expr xml_whitespace_option CLOSE_PAREN - | XMLPI OPEN_PAREN NAME_P collabel (COMMA a_expr)? CLOSE_PAREN - | XMLROOT OPEN_PAREN XML_P a_expr COMMA xml_root_version opt_xml_root_standalone CLOSE_PAREN - | XMLSERIALIZE OPEN_PAREN document_or_content a_expr AS simpletypename CLOSE_PAREN - ; - -xml_root_version - : VERSION_P a_expr - | VERSION_P NO VALUE_P - ; - -opt_xml_root_standalone - : COMMA STANDALONE_P YES_P - | COMMA STANDALONE_P NO - | COMMA STANDALONE_P NO VALUE_P - | - ; - -xml_attributes - : XMLATTRIBUTES OPEN_PAREN xml_attribute_list CLOSE_PAREN - ; - -xml_attribute_list - : xml_attribute_el (COMMA xml_attribute_el)* - ; - -xml_attribute_el - : a_expr (AS collabel)? - ; - -document_or_content - : DOCUMENT_P - | CONTENT_P - ; - -xml_whitespace_option - : PRESERVE WHITESPACE_P - | STRIP_P WHITESPACE_P - | - ; - -xmlexists_argument - : PASSING c_expr - | PASSING c_expr xml_passing_mech - | PASSING xml_passing_mech c_expr - | PASSING xml_passing_mech c_expr xml_passing_mech - ; - -xml_passing_mech - : BY (REF | VALUE_P) - ; - -within_group_clause - : WITHIN GROUP_P OPEN_PAREN sort_clause CLOSE_PAREN - | - ; - -filter_clause - : FILTER OPEN_PAREN WHERE a_expr CLOSE_PAREN - | - ; - -window_clause - : WINDOW window_definition_list - | - ; - -window_definition_list - : window_definition (COMMA window_definition)* - ; - -window_definition - : colid AS window_specification - ; - -over_clause - : OVER (window_specification | colid) - | - ; - -window_specification - : OPEN_PAREN opt_existing_window_name opt_partition_clause opt_sort_clause opt_frame_clause CLOSE_PAREN - ; - -opt_existing_window_name - : colid - | - ; - -opt_partition_clause - : PARTITION BY expr_list - | - ; - -opt_frame_clause - : RANGE frame_extent opt_window_exclusion_clause - | ROWS frame_extent opt_window_exclusion_clause - | GROUPS frame_extent opt_window_exclusion_clause - | - ; - -frame_extent - : frame_bound - | BETWEEN frame_bound AND frame_bound - ; - -frame_bound - : UNBOUNDED (PRECEDING | FOLLOWING) - | CURRENT_P ROW - | a_expr (PRECEDING | FOLLOWING) - ; - -opt_window_exclusion_clause - : EXCLUDE (CURRENT_P ROW | GROUP_P | TIES | NO OTHERS) - | - ; - -row - : ROW OPEN_PAREN expr_list? CLOSE_PAREN - | OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN - ; - -explicit_row - : ROW OPEN_PAREN expr_list? CLOSE_PAREN - ; - -/* -TODO: -for some reason v1 -implicit_row: OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN; -works better than v2 -implicit_row: OPEN_PAREN expr_list CLOSE_PAREN; -while looks like they are almost the same, except v2 requieres at least 2 items in list -while v1 allows single item in list -*/ - -implicit_row - : OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN - ; - -sub_type - : ANY - | SOME - | ALL - ; - -all_op - : Operator - | mathop - ; - -mathop - : PLUS - | MINUS - | STAR - | SLASH - | PERCENT - | CARET - | LT - | GT - | EQUAL - | LESS_EQUALS - | GREATER_EQUALS - | NOT_EQUALS - ; - -qual_op - : Operator - | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN - ; - -qual_all_op - : all_op - | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN - ; - -subquery_Op - : all_op - | OPERATOR OPEN_PAREN any_operator CLOSE_PAREN - | LIKE - | NOT LIKE - | ILIKE - | NOT ILIKE - ; - -expr_list - : a_expr (COMMA a_expr)* - ; - -func_arg_list - : func_arg_expr (COMMA func_arg_expr)* - ; - -func_arg_expr - : a_expr - | param_name (COLON_EQUALS | EQUALS_GREATER) a_expr - ; - -type_list - : typename (COMMA typename)* - ; - -array_expr - : OPEN_BRACKET (expr_list | array_expr_list)? CLOSE_BRACKET - ; - -array_expr_list - : array_expr (COMMA array_expr)* - ; - -extract_list - : extract_arg FROM a_expr - | - ; - -extract_arg - : identifier - | YEAR_P - | MONTH_P - | DAY_P - | HOUR_P - | MINUTE_P - | SECOND_P - | sconst - ; - -unicode_normal_form - : NFC - | NFD - | NFKC - | NFKD - ; - -overlay_list - : a_expr PLACING a_expr FROM a_expr (FOR a_expr)? - ; - -position_list - : b_expr IN_P b_expr - | - ; - -substr_list - : a_expr FROM a_expr FOR a_expr - | a_expr FOR a_expr FROM a_expr - | a_expr FROM a_expr - | a_expr FOR a_expr - | a_expr SIMILAR a_expr ESCAPE a_expr - | expr_list - ; - -trim_list - : a_expr FROM expr_list - | FROM expr_list - | expr_list - ; - -in_expr - : select_with_parens # in_expr_select - | OPEN_PAREN expr_list CLOSE_PAREN # in_expr_list - ; - -case_expr - : CASE case_arg when_clause_list case_default END_P - ; - -when_clause_list - : when_clause+ - ; - -when_clause - : WHEN a_expr THEN a_expr - ; - -case_default - : ELSE a_expr - | - ; - -case_arg - : a_expr - | - ; - -columnref - : colid indirection? - ; - -indirection_el - : DOT (attr_name | STAR) - | OPEN_BRACKET (a_expr | opt_slice_bound COLON opt_slice_bound) CLOSE_BRACKET - ; - -opt_slice_bound - : a_expr - | - ; - -indirection - : indirection_el+ - ; - -opt_indirection - : indirection_el* - ; - -opt_target_list - : target_list - | - ; - -target_list - : target_el (COMMA target_el)* - ; - -target_el - : a_expr (AS collabel | identifier |) # target_label - | STAR # target_star - ; - -qualified_name_list - : qualified_name (COMMA qualified_name)* - ; - -qualified_name - : colid indirection? - ; - -name_list - : name (COMMA name)* - ; - -name - : colid - ; - -attr_name - : collabel - ; - -file_name - : sconst - ; - -func_name - : builtin_function_name - | type_function_name - | colid indirection - | LEFT - | RIGHT - ; - -aexprconst - : iconst - | fconst - | sconst - | bconst - | xconst - | func_name (sconst | OPEN_PAREN func_arg_list opt_sort_clause CLOSE_PAREN sconst) - | consttypename sconst - | constinterval (sconst opt_interval | OPEN_PAREN iconst CLOSE_PAREN sconst) - | TRUE_P - | FALSE_P - | NULL_P - ; - -xconst - : HexadecimalStringConstant - ; - -bconst - : BinaryStringConstant - ; - -fconst - : Numeric - ; - -iconst - : Integral - ; - -sconst - : anysconst opt_uescape - ; - -anysconst - : StringConstant - | UnicodeEscapeStringConstant - | BeginDollarStringConstant DollarText* EndDollarStringConstant - | EscapeStringConstant - ; - -opt_uescape - : UESCAPE anysconst - | - ; - -signediconst - : iconst - | PLUS iconst - | MINUS iconst - ; - -roleid - : rolespec - ; - -rolespec - : nonreservedword - | CURRENT_USER - | SESSION_USER - ; - -role_list - : rolespec (COMMA rolespec)* - ; - -colid - : identifier - | unreserved_keyword - | col_name_keyword - | plsql_unreserved_keyword - | LEFT - | RIGHT - ; - -table_alias - : identifier - | unreserved_keyword - | col_name_keyword - | plsql_unreserved_keyword - ; - -type_function_name - : identifier - | unreserved_keyword - | plsql_unreserved_keyword - | type_func_name_keyword - ; - -nonreservedword - : identifier - | unreserved_keyword - | col_name_keyword - | type_func_name_keyword - ; - -collabel - : identifier - | plsql_unreserved_keyword - | unreserved_keyword - | col_name_keyword - | type_func_name_keyword - | reserved_keyword - ; - -identifier - : Identifier opt_uescape - | QuotedIdentifier - | UnicodeQuotedIdentifier - | plsqlvariablename - | plsqlidentifier - | plsql_unreserved_keyword - ; - -plsqlidentifier - : PLSQLIDENTIFIER - ; - -unreserved_keyword - : ABORT_P - | ABSOLUTE_P - | ACCESS - | ACTION - | ADD_P - | ADMIN - | AFTER - | AGGREGATE - | ALSO - | ALTER - | ALWAYS - | ASSERTION - | ASSIGNMENT - | AT - | ATTACH - | ATTRIBUTE - | BACKWARD - | BEFORE - | BEGIN_P - | BY - | CACHE - | CALL - | CALLED - | CASCADE - | CASCADED - | CATALOG - | CHAIN - | CHARACTERISTICS - | CHECKPOINT - | CLASS - | CLOSE - | CLUSTER - | COLUMNS - | COMMENT - | COMMENTS - | COMMIT - | COMMITTED - | CONFIGURATION - | CONFLICT - | CONNECTION - | CONSTRAINTS - | CONTENT_P - | CONTINUE_P - | CONVERSION_P - | COPY - | COST - | CSV - | CUBE - | CURRENT_P - | CURSOR - | CYCLE - | DATA_P - | DATABASE - | DAY_P - | DEALLOCATE - | DECLARE - | DEFAULTS - | DEFERRED - | DEFINER - | DELETE_P - | DELIMITER - | DELIMITERS - | DEPENDS - | DETACH - | DICTIONARY - | DISABLE_P - | DISCARD - | DOCUMENT_P - | DOMAIN_P - | DOUBLE_P - | DROP - | EACH - | ENABLE_P - | ENCODING - | ENCRYPTED - | ENUM_P - | ESCAPE - | EVENT - | EXCLUDE - | EXCLUDING - | EXCLUSIVE - | EXECUTE - | EXPLAIN - | EXPRESSION - | EXTENSION - | EXTERNAL - | FAMILY - | FILTER - | FIRST_P - | FOLLOWING - | FORCE - | FORWARD - | FUNCTION - | FUNCTIONS - | GENERATED - | GLOBAL - | GRANTED - | GROUPS - | HANDLER - | HEADER_P - | HOLD - | HOUR_P - | IDENTITY_P - | IF_P - | IMMEDIATE - | IMMUTABLE - | IMPLICIT_P - | IMPORT_P - | INCLUDE - | INCLUDING - | INCREMENT - | INDEX - | INDEXES - | INHERIT - | INHERITS - | INLINE_P - | INPUT_P - | INSENSITIVE - | INSERT - | INSTEAD - | INVOKER - | ISOLATION - | KEY - | LABEL - | LANGUAGE - | LARGE_P - | LAST_P - | LEAKPROOF - | LEVEL - | LISTEN - | LOAD - | LOCAL - | LOCATION - | LOCK_P - | LOCKED - | LOGGED - | MAPPING - | MATCH - | MATERIALIZED - | MAXVALUE - | METHOD - | MINUTE_P - | MINVALUE - | MODE - | MONTH_P - | MOVE - | NAME_P - | NAMES - | NEW - | NEXT - | NFC - | NFD - | NFKC - | NFKD - | NO - | NORMALIZED - | NOTHING - | NOTIFY - | NOWAIT - | NULLS_P - | OBJECT_P - | OF - | OFF - | OIDS - | OLD - | OPERATOR - | OPTION - | OPTIONS - | ORDINALITY - | OTHERS - | OVER - | OVERRIDING - | OWNED - | OWNER - | PARALLEL - | PARSER - | PARTIAL - | PARTITION - | PASSING - | PASSWORD - | PLANS - | POLICY - | PRECEDING - | PREPARE - | PREPARED - | PRESERVE - | PRIOR - | PRIVILEGES - | PROCEDURAL - | PROCEDURE - | PROCEDURES - | PROGRAM - | PUBLICATION - | QUOTE - | RANGE - | READ - | REASSIGN - | RECHECK - | RECURSIVE - | REF - | REFERENCING - | REFRESH - | REINDEX - | RELATIVE_P - | RELEASE - | RENAME - | REPEATABLE - | REPLICA - | RESET - | RESTART - | RESTRICT - | RETURNS - | REVOKE - | ROLE - | ROLLBACK - | ROLLUP - | ROUTINE - | ROUTINES - | ROWS - | RULE - | SAVEPOINT - | SCHEMA - | SCHEMAS - | SCROLL - | SEARCH - | SECOND_P - | SECURITY - | SEQUENCE - | SEQUENCES - | SERIALIZABLE - | SERVER - | SESSION - | SET - | SETS - | SHARE - | SHOW - | SIMPLE - | SKIP_P - | SNAPSHOT - | SQL_P - | STABLE - | STANDALONE_P - | START - | STATEMENT - | STATISTICS - | STDIN - | STDOUT - | STORAGE - | STORED - | STRICT_P - | STRIP_P - | SUBSCRIPTION - | SUPPORT - | SYSID - | SYSTEM_P - | TABLES - | TABLESPACE - | TEMP - | TEMPLATE - | TEMPORARY - | TEXT_P - | TIES - | TRANSACTION - | TRANSFORM - | TRIGGER - | TRUNCATE - | TRUSTED - | TYPE_P - | TYPES_P - | UESCAPE - | UNBOUNDED - | UNCOMMITTED - | UNENCRYPTED - | UNKNOWN - | UNLISTEN - | UNLOGGED - | UNTIL - | UPDATE - | VACUUM - | VALID - | VALIDATE - | VALIDATOR - | VALUE_P - | VARYING - | VERSION_P - | VIEW - | VIEWS - | VOLATILE - | WHITESPACE_P - | WITHIN - | WITHOUT - | WORK - | WRAPPER - | WRITE - | XML_P - | YEAR_P - | YES_P - | ZONE - ; - -col_name_keyword - : BETWEEN - | BIGINT - | bit - | BOOLEAN_P - | CHAR_P - | character - | COALESCE - | DEC - | DECIMAL_P - | EXISTS - | EXTRACT - | FLOAT_P - | GREATEST - | GROUPING - | INOUT - | INT_P - | INTEGER - | INTERVAL - | LEAST - | NATIONAL - | NCHAR - | NONE - | NORMALIZE - | NULLIF - | numeric - | OUT_P - | OVERLAY - | POSITION - | PRECISION - | REAL - | ROW - | SETOF - | SMALLINT - | SUBSTRING - | TIME - | TIMESTAMP - | TREAT - | TRIM - | VALUES - | VARCHAR - | XMLATTRIBUTES - | XMLCONCAT - | XMLELEMENT - | XMLEXISTS - | XMLFOREST - | XMLNAMESPACES - | XMLPARSE - | XMLPI - | XMLROOT - | XMLSERIALIZE - | XMLTABLE - | builtin_function_name - ; - -type_func_name_keyword - : AUTHORIZATION - | BINARY - | COLLATION - | CONCURRENTLY - | CROSS - | CURRENT_SCHEMA - | FREEZE - | FULL - | ILIKE - | INNER_P - | IS - | ISNULL - | JOIN - | LIKE - | NATURAL - | NOTNULL - | OUTER_P - | OVERLAPS - | SIMILAR - | TABLESAMPLE - | VERBOSE - ; - -reserved_keyword - : ALL - | ANALYSE - | ANALYZE - | AND - | ANY - | ARRAY - | AS - | ASC - | ASYMMETRIC - | BOTH - | CASE - | CAST - | CHECK - | COLLATE - | COLUMN - | CONSTRAINT - | CREATE - | CURRENT_CATALOG - | CURRENT_DATE - | CURRENT_ROLE - | CURRENT_TIME - | CURRENT_TIMESTAMP - | CURRENT_USER - // | DEFAULT - | DEFERRABLE - | DESC - | DISTINCT - | DO - | ELSE - | END_P - | EXCEPT - | FALSE_P - | FETCH - | FOR - | FOREIGN - | FROM - | GRANT - | GROUP_P - | HAVING - | IN_P - | INITIALLY - | INTERSECT - /* -from pl_gram.y, line ~2982 - * Fortunately, INTO is a fully reserved word in the main grammar, so - * at least we need not worry about it appearing as an identifier. -*/ - - // | INTO - | LATERAL_P - | LEADING - | LIMIT - | LOCALTIME - | LOCALTIMESTAMP - | NOT - | NULL_P - | OFFSET - | ON - | ONLY - | OR - | ORDER - | PLACING - | PRIMARY - | REFERENCES - | RETURNING - | SELECT - | SESSION_USER - | SOME - | SYMMETRIC - | TABLE - | THEN - | TO - | TRAILING - | TRUE_P - | UNION - | UNIQUE - | USER - | USING - | VARIADIC - | WHEN - | WHERE - | WINDOW - | WITH - ; - -builtin_function_name - : XMLCOMMENT - | XML_IS_WELL_FORMED - | XML_IS_WELL_FORMED_DOCUMENT - | XML_IS_WELL_FORMED_CONTENT - | XMLAGG - | XPATH - | XPATH_EXISTS - | ABS - | CBRT - | CEIL - | CEILING - | DEGREES - | DIV - | EXP - | FACTORIAL - | FLOOR - | GCD - | LCM - | LN - | LOG - | LOG10 - | MIN_SCALE - | MOD - | PI - | POWER - | RADIANS - | ROUND - | SCALE - | SIGN - | SQRT - | TRIM_SCALE - | TRUNC - | WIDTH_BUCKET - | RANDOM - | SETSEED - | ACOS - | ACOSD - | ACOSH - | ASIN - | ASIND - | ASINH - | ATAN - | ATAND - | ATANH - | ATAN2 - | ATAN2D - | COS - | COSD - | COSH - | COT - | COTD - | SIN - | SIND - | SINH - | TAN - | TAND - | TANH - | BIT_LENGTH - | CHAR_LENGTH - | CHARACTER_LENGTH - | LOWER - | OCTET_LENGTH - | OCTET_LENGTH - | UPPER - | ASCII - | BTRIM - | CHR - | CONCAT - | CONCAT_WS - | FORMAT - | INITCAP - | LENGTH - | LPAD - | LTRIM - | MD5 - | PARSE_IDENT - | PG_CLIENT_ENCODING - | QUOTE_IDENT - | QUOTE_LITERAL - | QUOTE_NULLABLE - | REGEXP_COUNT - | REGEXP_INSTR - | REGEXP_LIKE - | REGEXP_MATCH - | REGEXP_MATCHES - | REGEXP_REPLACE - | REGEXP_SPLIT_TO_ARRAY - | REGEXP_SPLIT_TO_TABLE - | REGEXP_SUBSTR - | REPEAT - | REPLACE - | REVERSE - | RPAD - | RTRIM - | SPLIT_PART - | STARTS_WITH - | STRING_TO_ARRAY - | STRING_TO_TABLE - | STRPOS - | SUBSTR - | TO_ASCII - | TO_HEX - | TRANSLATE - | UNISTR - | AGE - | DATE_BIN - | DATE_PART - | DATE_TRUNC - | ISFINITE - | JUSTIFY_DAYS - | JUSTIFY_HOURS - | JUSTIFY_INTERVAL - | MAKE_DATE - | MAKE_INTERVAL - | MAKE_TIME - | MAKE_TIMESTAMP - | MAKE_TIMESTAMPTZ - | CLOCK_TIMESTAMP - | NOW - | STATEMENT_TIMESTAMP - | TIMEOFDAY - | TRANSACTION_TIMESTAMP - | TO_TIMESTAMP - | JUSTIFY_INTERVAL - | JUSTIFY_INTERVAL - | TO_CHAR - | TO_DATE - | TO_NUMBER - ; - -/************************************************************************************************************************************************************/ -/*PL/SQL GRAMMAR */ - -/*PLSQL grammar */ - -/************************************************************************************************************************************************************/ -pl_function - : comp_options pl_block opt_semi - ; - -comp_options - : comp_option* - ; - -comp_option - : sharp OPTION DUMP - | sharp PRINT_STRICT_PARAMS option_value - | sharp VARIABLE_CONFLICT ERROR - | sharp VARIABLE_CONFLICT USE_VARIABLE - | sharp VARIABLE_CONFLICT USE_COLUMN - ; - -sharp - : Operator - ; - -option_value - : sconst - | reserved_keyword - | plsql_unreserved_keyword - | unreserved_keyword - ; - -opt_semi - : - | SEMI - ; - -// exception_sect means opt_exception_sect in original grammar, don't be confused! - -pl_block - : decl_sect BEGIN_P proc_sect exception_sect END_P opt_label - ; - -decl_sect - : opt_block_label (decl_start decl_stmts?)? - ; - -decl_start - : DECLARE - ; - -decl_stmts - : decl_stmt+ - ; - -label_decl - : LESS_LESS any_identifier GREATER_GREATER - ; - -decl_stmt - : decl_statement - | DECLARE - | label_decl - ; - -decl_statement - : decl_varname ( - ALIAS FOR decl_aliasitem - | decl_const decl_datatype decl_collate decl_notnull decl_defval - | opt_scrollable CURSOR decl_cursor_args decl_is_for decl_cursor_query - ) SEMI - ; - -opt_scrollable - : - | NO SCROLL - | SCROLL - ; - -decl_cursor_query - : selectstmt - ; - -decl_cursor_args - : - | OPEN_PAREN decl_cursor_arglist CLOSE_PAREN - ; - -decl_cursor_arglist - : decl_cursor_arg (COMMA decl_cursor_arg)* - ; - -decl_cursor_arg - : decl_varname decl_datatype - ; - -decl_is_for - : IS - | FOR - ; - -decl_aliasitem - : PARAM - | colid - ; - -decl_varname - : any_identifier - ; - -decl_const - : - | CONSTANT - ; - -decl_datatype - : typename - ; //TODO: $$ = read_datatype(yychar); - -decl_collate - : - | COLLATE any_name - ; - -decl_notnull - : - | NOT NULL_P - ; - -decl_defval - : - | decl_defkey sql_expression - ; - -decl_defkey - : assign_operator - | DEFAULT - ; - -assign_operator - : EQUAL - | COLON_EQUALS - ; - -proc_sect - : proc_stmt* - ; - -proc_stmt - : pl_block SEMI - | stmt_return - | stmt_raise - | stmt_assign - | stmt_if - | stmt_case - | stmt_loop - | stmt_while - | stmt_for - | stmt_foreach_a - | stmt_exit - | stmt_assert - | stmt_execsql - | stmt_dynexecute - | stmt_perform - | stmt_call - | stmt_getdiag - | stmt_open - | stmt_fetch - | stmt_move - | stmt_close - | stmt_null - | stmt_commit - | stmt_rollback - | stmt_set - ; - -stmt_perform - : PERFORM expr_until_semi SEMI - ; - -stmt_call - : CALL any_identifier OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI - | DO any_identifier OPEN_PAREN opt_expr_list CLOSE_PAREN SEMI - ; - -opt_expr_list - : - | expr_list - ; - -stmt_assign - : assign_var assign_operator sql_expression SEMI - ; - -stmt_getdiag - : GET getdiag_area_opt DIAGNOSTICS getdiag_list SEMI - ; - -getdiag_area_opt - : - | CURRENT_P - | STACKED - ; - -getdiag_list - : getdiag_list_item (COMMA getdiag_list_item)* - ; - -getdiag_list_item - : getdiag_target assign_operator getdiag_item - ; - -getdiag_item - : colid - ; - -getdiag_target - : assign_var - ; - -assign_var - : (any_name | PARAM) (OPEN_BRACKET expr_until_rightbracket CLOSE_BRACKET)* - ; - -stmt_if - : IF_P expr_until_then THEN proc_sect stmt_elsifs stmt_else END_P IF_P SEMI - ; - -stmt_elsifs - : (ELSIF a_expr THEN proc_sect)* - ; - -stmt_else - : - | ELSE proc_sect - ; - -stmt_case - : CASE opt_expr_until_when case_when_list opt_case_else END_P CASE SEMI - ; - -opt_expr_until_when - : - | sql_expression - ; - -case_when_list - : case_when+ - ; - -case_when - : WHEN expr_list THEN proc_sect - ; - -opt_case_else - : - | ELSE proc_sect - ; - -stmt_loop - : opt_loop_label loop_body - ; - -stmt_while - : opt_loop_label WHILE expr_until_loop loop_body - ; - -stmt_for - : opt_loop_label FOR for_control loop_body - ; - -//TODO: rewrite using read_sql_expression logic? - -for_control - : for_variable IN_P ( - cursor_name opt_cursor_parameters - | selectstmt - | explainstmt - | EXECUTE a_expr opt_for_using_expression - | opt_reverse a_expr DOT_DOT a_expr opt_by_expression - ) - ; - -opt_for_using_expression - : - | USING expr_list - ; - -opt_cursor_parameters - : - | OPEN_PAREN a_expr (COMMA a_expr)* CLOSE_PAREN - ; - -opt_reverse - : - | REVERSE - ; - -opt_by_expression - : - | BY a_expr - ; - -for_variable - : any_name_list - ; - -stmt_foreach_a - : opt_loop_label FOREACH for_variable foreach_slice IN_P ARRAY a_expr loop_body - ; - -foreach_slice - : - | SLICE iconst - ; - -stmt_exit - : exit_type opt_label opt_exitcond SEMI - ; - -exit_type - : EXIT - | CONTINUE_P - ; - -//todo implement RETURN statement according to initial grammar line 1754 - -stmt_return - : RETURN ( - NEXT sql_expression - | QUERY (EXECUTE a_expr opt_for_using_expression | selectstmt) - | opt_return_result - ) SEMI - ; - -opt_return_result - : - | sql_expression - ; - -//https://www.postgresql.org/docs/current/plpgsql-errors-and-messages.html - -//RAISE [ level ] 'format' [, expression [, ... ]] [ USING option = expression [, ... ] ]; - -//RAISE [ level ] condition_name [ USING option = expression [, ... ] ]; - -//RAISE [ level ] SQLSTATE 'sqlstate' [ USING option = expression [, ... ] ]; - -//RAISE [ level ] USING option = expression [, ... ]; - -//RAISE ; - -stmt_raise - : RAISE opt_stmt_raise_level sconst opt_raise_list opt_raise_using SEMI - | RAISE opt_stmt_raise_level identifier opt_raise_using SEMI - | RAISE opt_stmt_raise_level SQLSTATE sconst opt_raise_using SEMI - | RAISE opt_stmt_raise_level opt_raise_using SEMI - | RAISE - ; - -opt_stmt_raise_level - : - | - | DEBUG - | LOG - | INFO - | NOTICE - | WARNING - | EXCEPTION - ; - -opt_raise_list - : - | (COMMA a_expr)+ - ; - -opt_raise_using - : - | USING opt_raise_using_elem_list - ; - -opt_raise_using_elem - : identifier EQUAL a_expr - ; - -opt_raise_using_elem_list - : opt_raise_using_elem (COMMA opt_raise_using_elem)* - ; - -//todo imnplement - -stmt_assert - : ASSERT sql_expression opt_stmt_assert_message SEMI - ; - -opt_stmt_assert_message - : - | COMMA sql_expression - ; - -loop_body - : LOOP proc_sect END_P LOOP opt_label SEMI - ; - -//TODO: looks like all other statements like INSERT/SELECT/UPDATE/DELETE are handled here; - -//pls take a look at original grammar - -stmt_execsql - : make_execsql_stmt SEMI - /*K_IMPORT - | K_INSERT - | t_word - | t_cword -*/ - ; - -//https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-NORESULT - -//EXECUTE command-string [ INTO [STRICT] target ] [ USING expression [, ... ] ]; - -stmt_dynexecute - : EXECUTE a_expr ( - /*this is silly, but i have to time to find nice way to code */ opt_execute_into opt_execute_using - | opt_execute_using opt_execute_into - | - ) SEMI - ; - -opt_execute_using - : - | USING opt_execute_using_list - ; - -opt_execute_using_list - : a_expr (COMMA a_expr)* - ; - -opt_execute_into - : - | INTO STRICT_P? into_target - ; - -//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING - -//OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR query; - -//OPEN unbound_cursorvar [ [ NO ] SCROLL ] FOR EXECUTE query_string - -// [ USING expression [, ... ] ]; - -//OPEN bound_cursorvar [ ( [ argument_name := ] argument_value [, ...] ) ]; - -stmt_open - : OPEN ( - cursor_variable opt_scroll_option FOR (selectstmt | EXECUTE sql_expression opt_open_using) - | colid (OPEN_PAREN opt_open_bound_list CLOSE_PAREN)? - ) SEMI - ; - -opt_open_bound_list_item - : colid COLON_EQUALS a_expr - | a_expr - ; - -opt_open_bound_list - : opt_open_bound_list_item (COMMA opt_open_bound_list_item)* - ; - -opt_open_using - : - | USING expr_list - ; - -opt_scroll_option - : - | opt_scroll_option_no SCROLL - ; - -opt_scroll_option_no - : - | NO - ; - -//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING - -//FETCH [ direction { FROM | IN } ] cursor INTO target; - -stmt_fetch - : FETCH direction = opt_fetch_direction opt_cursor_from cursor_variable INTO into_target SEMI - ; - -into_target - : expr_list - ; - -opt_cursor_from - : - | FROM - | IN_P - ; - -opt_fetch_direction - : - | - | NEXT - | PRIOR - | FIRST_P - | LAST_P - | ABSOLUTE_P a_expr - | RELATIVE_P a_expr - | a_expr - | ALL - | (FORWARD | BACKWARD) (a_expr | ALL)? - ; - -//https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-OPENING - -//MOVE [ direction { FROM | IN } ] cursor; - -stmt_move - : MOVE opt_fetch_direction cursor_variable SEMI - ; - -stmt_close - : CLOSE cursor_variable SEMI - ; - -stmt_null - : NULL_P SEMI - ; - -stmt_commit - : COMMIT plsql_opt_transaction_chain SEMI - ; - -stmt_rollback - : ROLLBACK plsql_opt_transaction_chain SEMI - ; - -plsql_opt_transaction_chain - : AND NO? CHAIN - | - ; - -stmt_set - : SET any_name TO DEFAULT SEMI - | RESET (any_name | ALL) SEMI - ; - -cursor_variable - : colid - | PARAM - ; - -exception_sect - : - | EXCEPTION proc_exceptions - ; - -proc_exceptions - : proc_exception+ - ; - -proc_exception - : WHEN proc_conditions THEN proc_sect - ; - -proc_conditions - : proc_condition (OR proc_condition)* - ; - -proc_condition - : any_identifier - | SQLSTATE sconst - ; - -//expr_until_semi: - -//; - -//expr_until_rightbracket: - -//; - -//expr_until_loop: - -//; - -opt_block_label - : - | label_decl - ; - -opt_loop_label - : - | label_decl - ; - -opt_label - : - | any_identifier - ; - -opt_exitcond - : WHEN expr_until_semi - | - ; - -any_identifier - : colid - | plsql_unreserved_keyword - ; - -plsql_unreserved_keyword - : ABSOLUTE_P - | ALIAS - | AND - | ARRAY - | ASSERT - | BACKWARD - | CALL - | CHAIN - | CLOSE - | COLLATE - | COLUMN - //| COLUMN_NAME - | COMMIT - | CONSTANT - | CONSTRAINT - //| CONSTRAINT_NAME - | CONTINUE_P - | CURRENT_P - | CURSOR - //| DATATYPE - | DEBUG - | DEFAULT - //| DETAIL - | DIAGNOSTICS - | DO - | DUMP - | ELSIF - //| ERRCODE - | ERROR - | EXCEPTION - | EXIT - | FETCH - | FIRST_P - | FORWARD - | GET - //| HINT - - //| IMPORT - | INFO - | INSERT - | IS - | LAST_P - //| MESSAGE - - //| MESSAGE_TEXT - | MOVE - | NEXT - | NO - | NOTICE - | OPEN - | OPTION - | PERFORM - //| PG_CONTEXT - - //| PG_DATATYPE_NAME - - //| PG_EXCEPTION_CONTEXT - - //| PG_EXCEPTION_DETAIL - - //| PG_EXCEPTION_HINT - | PRINT_STRICT_PARAMS - | PRIOR - | QUERY - | RAISE - | RELATIVE_P - | RESET - | RETURN - //| RETURNED_SQLSTATE - | ROLLBACK - //| ROW_COUNT - | ROWTYPE - | SCHEMA - //| SCHEMA_NAME - | SCROLL - | SET - | SLICE - | SQLSTATE - | STACKED - | TABLE - //| TABLE_NAME - | TYPE_P - | USE_COLUMN - | USE_VARIABLE - | VARIABLE_CONFLICT - | WARNING - | OUTER_P - ; - -sql_expression - : opt_target_list into_clause from_clause where_clause group_clause having_clause window_clause - ; - -expr_until_then - : sql_expression - ; - -expr_until_semi - : sql_expression - ; - -expr_until_rightbracket - : a_expr - ; - -expr_until_loop - : a_expr - ; - -make_execsql_stmt - : stmt opt_returning_clause_into - ; - -opt_returning_clause_into - : INTO opt_strict into_target - | - ; \ No newline at end of file diff --git a/antlr4_postgresql/PostgreSQLParser.interp b/antlr4_postgresql/PostgreSQLParser.interp deleted file mode 100644 index 0a4195b..0000000 --- a/antlr4_postgresql/PostgreSQLParser.interp +++ /dev/null @@ -1,2181 +0,0 @@ -token literal names: -null -'$' -'(' -')' -'[' -']' -',' -';' -':' -'*' -'=' -'.' -'+' -'-' -'/' -'^' -'<' -'>' -'<<' -'>>' -':=' -'<=' -'=>' -'>=' -'..' -'<>' -'::' -'%' -null -null -'ALL' -'ANALYSE' -'ANALYZE' -'AND' -'ANY' -'ARRAY' -'AS' -'ASC' -'ASYMMETRIC' -'BOTH' -'CASE' -'CAST' -'CHECK' -'COLLATE' -'COLUMN' -'CONSTRAINT' -'CREATE' -'CURRENT_CATALOG' -'CURRENT_DATE' -'CURRENT_ROLE' -'CURRENT_TIME' -'CURRENT_TIMESTAMP' -'CURRENT_USER' -'DEFAULT' -'DEFERRABLE' -'DESC' -'DISTINCT' -'DO' -'ELSE' -'EXCEPT' -'FALSE' -'FETCH' -'FOR' -'FOREIGN' -'FROM' -'GRANT' -'GROUP' -'HAVING' -'IN' -'INITIALLY' -'INTERSECT' -'INTO' -'LATERAL' -'LEADING' -'LIMIT' -'LOCALTIME' -'LOCALTIMESTAMP' -'NOT' -'NULL' -'OFFSET' -'ON' -'ONLY' -'OR' -'ORDER' -'PLACING' -'PRIMARY' -'REFERENCES' -'RETURNING' -'SELECT' -'SESSION_USER' -'SOME' -'SYMMETRIC' -'TABLE' -'THEN' -'TO' -'TRAILING' -'TRUE' -'UNION' -'UNIQUE' -'USER' -'USING' -'VARIADIC' -'WHEN' -'WHERE' -'WINDOW' -'WITH' -'AUTHORIZATION' -'BINARY' -'COLLATION' -'CONCURRENTLY' -'CROSS' -'CURRENT_SCHEMA' -'FREEZE' -'FULL' -'ILIKE' -'INNER' -'IS' -'ISNULL' -'JOIN' -'LEFT' -'LIKE' -'NATURAL' -'NOTNULL' -'OUTER' -'OVER' -'OVERLAPS' -'RIGHT' -'SIMILAR' -'VERBOSE' -'ABORT' -'ABSOLUTE' -'ACCESS' -'ACTION' -'ADD' -'ADMIN' -'AFTER' -'AGGREGATE' -'ALSO' -'ALTER' -'ALWAYS' -'ASSERTION' -'ASSIGNMENT' -'AT' -'ATTRIBUTE' -'BACKWARD' -'BEFORE' -'BEGIN' -'BY' -'CACHE' -'CALLED' -'CASCADE' -'CASCADED' -'CATALOG' -'CHAIN' -'CHARACTERISTICS' -'CHECKPOINT' -'CLASS' -'CLOSE' -'CLUSTER' -'COMMENT' -'COMMENTS' -'COMMIT' -'COMMITTED' -'CONFIGURATION' -'CONNECTION' -'CONSTRAINTS' -'CONTENT' -'CONTINUE' -'CONVERSION' -'COPY' -'COST' -'CSV' -'CURSOR' -'CYCLE' -'DATA' -'DATABASE' -'DAY' -'DEALLOCATE' -'DECLARE' -'DEFAULTS' -'DEFERRED' -'DEFINER' -'DELETE' -'DELIMITER' -'DELIMITERS' -'DICTIONARY' -'DISABLE' -'DISCARD' -'DOCUMENT' -'DOMAIN' -'DOUBLE' -'DROP' -'EACH' -'ENABLE' -'ENCODING' -'ENCRYPTED' -'ENUM' -'ESCAPE' -'EVENT' -'EXCLUDE' -'EXCLUDING' -'EXCLUSIVE' -'EXECUTE' -'EXPLAIN' -'EXTENSION' -'EXTERNAL' -'FAMILY' -'FIRST' -'FOLLOWING' -'FORCE' -'FORWARD' -'FUNCTION' -'FUNCTIONS' -'GLOBAL' -'GRANTED' -'HANDLER' -'HEADER' -'HOLD' -'HOUR' -'IDENTITY' -'IF' -'IMMEDIATE' -'IMMUTABLE' -'IMPLICIT' -'INCLUDING' -'INCREMENT' -'INDEX' -'INDEXES' -'INHERIT' -'INHERITS' -'INLINE' -'INSENSITIVE' -'INSERT' -'INSTEAD' -'INVOKER' -'ISOLATION' -'KEY' -'LABEL' -'LANGUAGE' -'LARGE' -'LAST' -'LEAKPROOF' -'LEVEL' -'LISTEN' -'LOAD' -'LOCAL' -'LOCATION' -'LOCK' -'MAPPING' -'MATCH' -'MATCHED' -'MATERIALIZED' -'MAXVALUE' -'MERGE' -'MINUTE' -'MINVALUE' -'MODE' -'MONTH' -'MOVE' -'NAME' -'NAMES' -'NEXT' -'NO' -'NOTHING' -'NOTIFY' -'NOWAIT' -'NULLS' -'OBJECT' -'OF' -'OFF' -'OIDS' -'OPERATOR' -'OPTION' -'OPTIONS' -'OWNED' -'OWNER' -'PARSER' -'PARTIAL' -'PARTITION' -'PASSING' -'PASSWORD' -'PLANS' -'PRECEDING' -'PREPARE' -'PREPARED' -'PRESERVE' -'PRIOR' -'PRIVILEGES' -'PROCEDURAL' -'PROCEDURE' -'PROGRAM' -'QUOTE' -'RANGE' -'READ' -'REASSIGN' -'RECHECK' -'RECURSIVE' -'REF' -'REFRESH' -'REINDEX' -'RELATIVE' -'RELEASE' -'RENAME' -'REPEATABLE' -'REPLACE' -'REPLICA' -'RESET' -'RESTART' -'RESTRICT' -'RETURNS' -'REVOKE' -'ROLE' -'ROLLBACK' -'ROWS' -'RULE' -'SAVEPOINT' -'SCHEMA' -'SCROLL' -'SEARCH' -'SECOND' -'SECURITY' -'SEQUENCE' -'SEQUENCES' -'SERIALIZABLE' -'SERVER' -'SESSION' -'SET' -'SHARE' -'SHOW' -'SIMPLE' -'SNAPSHOT' -'STABLE' -'STANDALONE' -'START' -'STATEMENT' -'STATISTICS' -'STDIN' -'STDOUT' -'STORAGE' -'STRICT' -'STRIP' -'SYSID' -'SYSTEM' -'TABLES' -'TABLESPACE' -'TEMP' -'TEMPLATE' -'TEMPORARY' -'TEXT' -'TRANSACTION' -'TRIGGER' -'TRUNCATE' -'TRUSTED' -'TYPE' -'TYPES' -'UNBOUNDED' -'UNCOMMITTED' -'UNENCRYPTED' -'UNKNOWN' -'UNLISTEN' -'UNLOGGED' -'UNTIL' -'UPDATE' -'VACUUM' -'VALID' -'VALIDATE' -'VALIDATOR' -'VARYING' -'VERSION' -'VIEW' -'VOLATILE' -'WHITESPACE' -'WITHOUT' -'WORK' -'WRAPPER' -'WRITE' -'XML' -'YEAR' -'YES' -'ZONE' -'BETWEEN' -'BIGINT' -'BIT' -'BOOLEAN' -'CHAR' -'CHARACTER' -'COALESCE' -'DEC' -'DECIMAL' -'EXISTS' -'EXTRACT' -'FLOAT' -'GREATEST' -'INOUT' -'INT' -'INTEGER' -'INTERVAL' -'LEAST' -'NATIONAL' -'NCHAR' -'NONE' -'NULLIF' -'NUMERIC' -'OVERLAY' -'POSITION' -'PRECISION' -'REAL' -'ROW' -'SETOF' -'SMALLINT' -'SUBSTRING' -'TIME' -'TIMESTAMP' -'TREAT' -'TRIM' -'VALUES' -'VARCHAR' -'XMLATTRIBUTES' -'XMLCOMMENT' -'XMLAGG' -'XML_IS_WELL_FORMED' -'XML_IS_WELL_FORMED_DOCUMENT' -'XML_IS_WELL_FORMED_CONTENT' -'XPATH' -'XPATH_EXISTS' -'XMLCONCAT' -'XMLELEMENT' -'XMLEXISTS' -'XMLFOREST' -'XMLPARSE' -'XMLPI' -'XMLROOT' -'XMLSERIALIZE' -'CALL' -'CURRENT' -'ATTACH' -'DETACH' -'EXPRESSION' -'GENERATED' -'LOGGED' -'STORED' -'INCLUDE' -'ROUTINE' -'TRANSFORM' -'IMPORT' -'POLICY' -'METHOD' -'REFERENCING' -'NEW' -'OLD' -'VALUE' -'SUBSCRIPTION' -'PUBLICATION' -'OUT' -'END' -'ROUTINES' -'SCHEMAS' -'PROCEDURES' -'INPUT' -'SUPPORT' -'PARALLEL' -'SQL' -'DEPENDS' -'OVERRIDING' -'CONFLICT' -'SKIP' -'LOCKED' -'TIES' -'ROLLUP' -'CUBE' -'GROUPING' -'SETS' -'TABLESAMPLE' -'ORDINALITY' -'XMLTABLE' -'COLUMNS' -'XMLNAMESPACES' -'ROWTYPE' -'NORMALIZED' -'WITHIN' -'FILTER' -'GROUPS' -'OTHERS' -'NFC' -'NFD' -'NFKC' -'NFKD' -'UESCAPE' -'VIEWS' -'NORMALIZE' -'DUMP' -'PRINT_STRICT_PARAMS' -'VARIABLE_CONFLICT' -'ERROR' -'USE_VARIABLE' -'USE_COLUMN' -'ALIAS' -'CONSTANT' -'PERFORM' -'GET' -'DIAGNOSTICS' -'STACKED' -'ELSIF' -'WHILE' -'REVERSE' -'FOREACH' -'SLICE' -'EXIT' -'RETURN' -'QUERY' -'RAISE' -'SQLSTATE' -'DEBUG' -'LOG' -'INFO' -'NOTICE' -'WARNING' -'EXCEPTION' -'ASSERT' -'LOOP' -'OPEN' -'ABS' -'CBRT' -'CEIL' -'CEILING' -'DEGREES' -'DIV' -'EXP' -'FACTORIAL' -'FLOOR' -'GCD' -'LCM' -'LN' -'LOG10' -'MIN_SCALE' -'MOD' -'PI' -'POWER' -'RADIANS' -'ROUND' -'SCALE' -'SIGN' -'SQRT' -'TRIM_SCALE' -'TRUNC' -'WIDTH_BUCKET' -'RANDOM' -'SETSEED' -'ACOS' -'ACOSD' -'ASIN' -'ASIND' -'ATAN' -'ATAND' -'ATAN2' -'ATAN2D' -'COS' -'COSD' -'COT' -'COTD' -'SIN' -'SIND' -'TAN' -'TAND' -'SINH' -'COSH' -'TANH' -'ASINH' -'ACOSH' -'ATANH' -'BIT_LENGTH' -'CHAR_LENGTH' -'CHARACTER_LENGTH' -'LOWER' -'OCTET_LENGTH' -'UPPER' -'ASCII' -'BTRIM' -'CHR' -'CONCAT' -'CONCAT_WS' -'FORMAT' -'INITCAP' -'LENGTH' -'LPAD' -'LTRIM' -'MD5' -'PARSE_IDENT' -'PG_CLIENT_ENCODING' -'QUOTE_IDENT' -'QUOTE_LITERAL' -'QUOTE_NULLABLE' -'REGEXP_COUNT' -'REGEXP_INSTR' -'REGEXP_LIKE' -'REGEXP_MATCH' -'REGEXP_MATCHES' -'REGEXP_REPLACE' -'REGEXP_SPLIT_TO_ARRAY' -'REGEXP_SPLIT_TO_TABLE' -'REGEXP_SUBSTR' -'REPEAT' -'RPAD' -'RTRIM' -'SPLIT_PART' -'STARTS_WITH' -'STRING_TO_ARRAY' -'STRING_TO_TABLE' -'STRPOS' -'SUBSTR' -'TO_ASCII' -'TO_HEX' -'TRANSLATE' -'UNISTR' -'AGE' -'CLOCK_TIMESTAMP' -'DATE_BIN' -'DATE_PART' -'DATE_TRUNC' -'ISFINITE' -'JUSTIFY_DAYS' -'JUSTIFY_HOURS' -'JUSTIFY_INTERVAL' -'MAKE_DATE' -'MAKE_INTERVAL' -'MAKE_TIME' -'MAKE_TIMESTAMP' -'MAKE_TIMESTAMPTZ' -'NOW' -'STATEMENT_TIMESTAMP' -'TIMEOFDAY' -'TRANSACTION_TIMESTAMP' -'TO_TIMESTAMP' -'TO_CHAR' -'TO_DATE' -'TO_NUMBER' -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 -'\'' - -token symbolic names: -null -Dollar -OPEN_PAREN -CLOSE_PAREN -OPEN_BRACKET -CLOSE_BRACKET -COMMA -SEMI -COLON -STAR -EQUAL -DOT -PLUS -MINUS -SLASH -CARET -LT -GT -LESS_LESS -GREATER_GREATER -COLON_EQUALS -LESS_EQUALS -EQUALS_GREATER -GREATER_EQUALS -DOT_DOT -NOT_EQUALS -TYPECAST -PERCENT -PARAM -Operator -ALL -ANALYSE -ANALYZE -AND -ANY -ARRAY -AS -ASC -ASYMMETRIC -BOTH -CASE -CAST -CHECK -COLLATE -COLUMN -CONSTRAINT -CREATE -CURRENT_CATALOG -CURRENT_DATE -CURRENT_ROLE -CURRENT_TIME -CURRENT_TIMESTAMP -CURRENT_USER -DEFAULT -DEFERRABLE -DESC -DISTINCT -DO -ELSE -EXCEPT -FALSE_P -FETCH -FOR -FOREIGN -FROM -GRANT -GROUP_P -HAVING -IN_P -INITIALLY -INTERSECT -INTO -LATERAL_P -LEADING -LIMIT -LOCALTIME -LOCALTIMESTAMP -NOT -NULL_P -OFFSET -ON -ONLY -OR -ORDER -PLACING -PRIMARY -REFERENCES -RETURNING -SELECT -SESSION_USER -SOME -SYMMETRIC -TABLE -THEN -TO -TRAILING -TRUE_P -UNION -UNIQUE -USER -USING -VARIADIC -WHEN -WHERE -WINDOW -WITH -AUTHORIZATION -BINARY -COLLATION -CONCURRENTLY -CROSS -CURRENT_SCHEMA -FREEZE -FULL -ILIKE -INNER_P -IS -ISNULL -JOIN -LEFT -LIKE -NATURAL -NOTNULL -OUTER_P -OVER -OVERLAPS -RIGHT -SIMILAR -VERBOSE -ABORT_P -ABSOLUTE_P -ACCESS -ACTION -ADD_P -ADMIN -AFTER -AGGREGATE -ALSO -ALTER -ALWAYS -ASSERTION -ASSIGNMENT -AT -ATTRIBUTE -BACKWARD -BEFORE -BEGIN_P -BY -CACHE -CALLED -CASCADE -CASCADED -CATALOG -CHAIN -CHARACTERISTICS -CHECKPOINT -CLASS -CLOSE -CLUSTER -COMMENT -COMMENTS -COMMIT -COMMITTED -CONFIGURATION -CONNECTION -CONSTRAINTS -CONTENT_P -CONTINUE_P -CONVERSION_P -COPY -COST -CSV -CURSOR -CYCLE -DATA_P -DATABASE -DAY_P -DEALLOCATE -DECLARE -DEFAULTS -DEFERRED -DEFINER -DELETE_P -DELIMITER -DELIMITERS -DICTIONARY -DISABLE_P -DISCARD -DOCUMENT_P -DOMAIN_P -DOUBLE_P -DROP -EACH -ENABLE_P -ENCODING -ENCRYPTED -ENUM_P -ESCAPE -EVENT -EXCLUDE -EXCLUDING -EXCLUSIVE -EXECUTE -EXPLAIN -EXTENSION -EXTERNAL -FAMILY -FIRST_P -FOLLOWING -FORCE -FORWARD -FUNCTION -FUNCTIONS -GLOBAL -GRANTED -HANDLER -HEADER_P -HOLD -HOUR_P -IDENTITY_P -IF_P -IMMEDIATE -IMMUTABLE -IMPLICIT_P -INCLUDING -INCREMENT -INDEX -INDEXES -INHERIT -INHERITS -INLINE_P -INSENSITIVE -INSERT -INSTEAD -INVOKER -ISOLATION -KEY -LABEL -LANGUAGE -LARGE_P -LAST_P -LEAKPROOF -LEVEL -LISTEN -LOAD -LOCAL -LOCATION -LOCK_P -MAPPING -MATCH -MATCHED -MATERIALIZED -MAXVALUE -MERGE -MINUTE_P -MINVALUE -MODE -MONTH_P -MOVE -NAME_P -NAMES -NEXT -NO -NOTHING -NOTIFY -NOWAIT -NULLS_P -OBJECT_P -OF -OFF -OIDS -OPERATOR -OPTION -OPTIONS -OWNED -OWNER -PARSER -PARTIAL -PARTITION -PASSING -PASSWORD -PLANS -PRECEDING -PREPARE -PREPARED -PRESERVE -PRIOR -PRIVILEGES -PROCEDURAL -PROCEDURE -PROGRAM -QUOTE -RANGE -READ -REASSIGN -RECHECK -RECURSIVE -REF -REFRESH -REINDEX -RELATIVE_P -RELEASE -RENAME -REPEATABLE -REPLACE -REPLICA -RESET -RESTART -RESTRICT -RETURNS -REVOKE -ROLE -ROLLBACK -ROWS -RULE -SAVEPOINT -SCHEMA -SCROLL -SEARCH -SECOND_P -SECURITY -SEQUENCE -SEQUENCES -SERIALIZABLE -SERVER -SESSION -SET -SHARE -SHOW -SIMPLE -SNAPSHOT -STABLE -STANDALONE_P -START -STATEMENT -STATISTICS -STDIN -STDOUT -STORAGE -STRICT_P -STRIP_P -SYSID -SYSTEM_P -TABLES -TABLESPACE -TEMP -TEMPLATE -TEMPORARY -TEXT_P -TRANSACTION -TRIGGER -TRUNCATE -TRUSTED -TYPE_P -TYPES_P -UNBOUNDED -UNCOMMITTED -UNENCRYPTED -UNKNOWN -UNLISTEN -UNLOGGED -UNTIL -UPDATE -VACUUM -VALID -VALIDATE -VALIDATOR -VARYING -VERSION_P -VIEW -VOLATILE -WHITESPACE_P -WITHOUT -WORK -WRAPPER -WRITE -XML_P -YEAR_P -YES_P -ZONE -BETWEEN -BIGINT -BIT -BOOLEAN_P -CHAR_P -CHARACTER -COALESCE -DEC -DECIMAL_P -EXISTS -EXTRACT -FLOAT_P -GREATEST -INOUT -INT_P -INTEGER -INTERVAL -LEAST -NATIONAL -NCHAR -NONE -NULLIF -NUMERIC -OVERLAY -POSITION -PRECISION -REAL -ROW -SETOF -SMALLINT -SUBSTRING -TIME -TIMESTAMP -TREAT -TRIM -VALUES -VARCHAR -XMLATTRIBUTES -XMLCOMMENT -XMLAGG -XML_IS_WELL_FORMED -XML_IS_WELL_FORMED_DOCUMENT -XML_IS_WELL_FORMED_CONTENT -XPATH -XPATH_EXISTS -XMLCONCAT -XMLELEMENT -XMLEXISTS -XMLFOREST -XMLPARSE -XMLPI -XMLROOT -XMLSERIALIZE -CALL -CURRENT_P -ATTACH -DETACH -EXPRESSION -GENERATED -LOGGED -STORED -INCLUDE -ROUTINE -TRANSFORM -IMPORT_P -POLICY -METHOD -REFERENCING -NEW -OLD -VALUE_P -SUBSCRIPTION -PUBLICATION -OUT_P -END_P -ROUTINES -SCHEMAS -PROCEDURES -INPUT_P -SUPPORT -PARALLEL -SQL_P -DEPENDS -OVERRIDING -CONFLICT -SKIP_P -LOCKED -TIES -ROLLUP -CUBE -GROUPING -SETS -TABLESAMPLE -ORDINALITY -XMLTABLE -COLUMNS -XMLNAMESPACES -ROWTYPE -NORMALIZED -WITHIN -FILTER -GROUPS -OTHERS -NFC -NFD -NFKC -NFKD -UESCAPE -VIEWS -NORMALIZE -DUMP -PRINT_STRICT_PARAMS -VARIABLE_CONFLICT -ERROR -USE_VARIABLE -USE_COLUMN -ALIAS -CONSTANT -PERFORM -GET -DIAGNOSTICS -STACKED -ELSIF -WHILE -REVERSE -FOREACH -SLICE -EXIT -RETURN -QUERY -RAISE -SQLSTATE -DEBUG -LOG -INFO -NOTICE -WARNING -EXCEPTION -ASSERT -LOOP -OPEN -ABS -CBRT -CEIL -CEILING -DEGREES -DIV -EXP -FACTORIAL -FLOOR -GCD -LCM -LN -LOG10 -MIN_SCALE -MOD -PI -POWER -RADIANS -ROUND -SCALE -SIGN -SQRT -TRIM_SCALE -TRUNC -WIDTH_BUCKET -RANDOM -SETSEED -ACOS -ACOSD -ASIN -ASIND -ATAN -ATAND -ATAN2 -ATAN2D -COS -COSD -COT -COTD -SIN -SIND -TAN -TAND -SINH -COSH -TANH -ASINH -ACOSH -ATANH -BIT_LENGTH -CHAR_LENGTH -CHARACTER_LENGTH -LOWER -OCTET_LENGTH -UPPER -ASCII -BTRIM -CHR -CONCAT -CONCAT_WS -FORMAT -INITCAP -LENGTH -LPAD -LTRIM -MD5 -PARSE_IDENT -PG_CLIENT_ENCODING -QUOTE_IDENT -QUOTE_LITERAL -QUOTE_NULLABLE -REGEXP_COUNT -REGEXP_INSTR -REGEXP_LIKE -REGEXP_MATCH -REGEXP_MATCHES -REGEXP_REPLACE -REGEXP_SPLIT_TO_ARRAY -REGEXP_SPLIT_TO_TABLE -REGEXP_SUBSTR -REPEAT -RPAD -RTRIM -SPLIT_PART -STARTS_WITH -STRING_TO_ARRAY -STRING_TO_TABLE -STRPOS -SUBSTR -TO_ASCII -TO_HEX -TRANSLATE -UNISTR -AGE -CLOCK_TIMESTAMP -DATE_BIN -DATE_PART -DATE_TRUNC -ISFINITE -JUSTIFY_DAYS -JUSTIFY_HOURS -JUSTIFY_INTERVAL -MAKE_DATE -MAKE_INTERVAL -MAKE_TIME -MAKE_TIMESTAMP -MAKE_TIMESTAMPTZ -NOW -STATEMENT_TIMESTAMP -TIMEOFDAY -TRANSACTION_TIMESTAMP -TO_TIMESTAMP -TO_CHAR -TO_DATE -TO_NUMBER -Identifier -QuotedIdentifier -UnterminatedQuotedIdentifier -InvalidQuotedIdentifier -InvalidUnterminatedQuotedIdentifier -UnicodeQuotedIdentifier -UnterminatedUnicodeQuotedIdentifier -InvalidUnicodeQuotedIdentifier -InvalidUnterminatedUnicodeQuotedIdentifier -StringConstant -UnterminatedStringConstant -UnicodeEscapeStringConstant -UnterminatedUnicodeEscapeStringConstant -BeginDollarStringConstant -BinaryStringConstant -UnterminatedBinaryStringConstant -InvalidBinaryStringConstant -InvalidUnterminatedBinaryStringConstant -HexadecimalStringConstant -UnterminatedHexadecimalStringConstant -InvalidHexadecimalStringConstant -InvalidUnterminatedHexadecimalStringConstant -Integral -NumericFail -Numeric -PLSQLVARIABLENAME -PLSQLIDENTIFIER -Whitespace -Newline -LineComment -BlockComment -UnterminatedBlockComment -MetaCommand -EndMetaCommand -ErrorCharacter -EscapeStringConstant -UnterminatedEscapeStringConstant -InvalidEscapeStringConstant -InvalidUnterminatedEscapeStringConstant -AfterEscapeStringConstantMode_NotContinued -AfterEscapeStringConstantWithNewlineMode_NotContinued -DollarText -EndDollarStringConstant -AfterEscapeStringConstantWithNewlineMode_Continued - -rule names: -root -plsqlroot -stmtblock -stmtmulti -stmt -plsqlconsolecommand -callstmt -createrolestmt -opt_with -optrolelist -alteroptrolelist -alteroptroleelem -createoptroleelem -createuserstmt -alterrolestmt -opt_in_database -alterrolesetstmt -droprolestmt -creategroupstmt -altergroupstmt -add_drop -createschemastmt -optschemaname -optschemaeltlist -schema_stmt -variablesetstmt -set_rest -generic_set -set_rest_more -var_name -var_list -var_value -iso_level -opt_boolean_or_string -zone_value -opt_encoding -nonreservedword_or_sconst -variableresetstmt -reset_rest -generic_reset -setresetclause -functionsetresetclause -variableshowstmt -constraintssetstmt -constraints_set_list -constraints_set_mode -checkpointstmt -discardstmt -altertablestmt -alter_table_cmds -partition_cmd -index_partition_cmd -alter_table_cmd -alter_column_default -opt_drop_behavior -opt_collate_clause -alter_using -replica_identity -reloptions -opt_reloptions -reloption_list -reloption_elem -alter_identity_column_option_list -alter_identity_column_option -partitionboundspec -hash_partbound_elem -hash_partbound -altercompositetypestmt -alter_type_cmds -alter_type_cmd -closeportalstmt -copystmt -copy_from -opt_program -copy_file_name -copy_options -copy_opt_list -copy_opt_item -opt_binary -copy_delimiter -opt_using -copy_generic_opt_list -copy_generic_opt_elem -copy_generic_opt_arg -copy_generic_opt_arg_list -copy_generic_opt_arg_list_item -createstmt -opttemp -opttableelementlist -opttypedtableelementlist -tableelementlist -typedtableelementlist -tableelement -typedtableelement -columnDef -columnOptions -colquallist -colconstraint -colconstraintelem -generated_when -constraintattr -tablelikeclause -tablelikeoptionlist -tablelikeoption -tableconstraint -constraintelem -opt_no_inherit -opt_column_list -columnlist -columnElem -opt_c_include -key_match -exclusionconstraintlist -exclusionconstraintelem -exclusionwhereclause -key_actions -key_update -key_delete -key_action -optinherit -optpartitionspec -partitionspec -part_params -part_elem -table_access_method_clause -optwith -oncommitoption -opttablespace -optconstablespace -existingindex -createstatsstmt -alterstatsstmt -createasstmt -create_as_target -opt_with_data -creatematviewstmt -create_mv_target -optnolog -refreshmatviewstmt -createseqstmt -alterseqstmt -optseqoptlist -optparenthesizedseqoptlist -seqoptlist -seqoptelem -opt_by -numericonly -numericonly_list -createplangstmt -opt_trusted -handler_name -opt_inline_handler -validator_clause -opt_validator -opt_procedural -createtablespacestmt -opttablespaceowner -droptablespacestmt -createextensionstmt -create_extension_opt_list -create_extension_opt_item -alterextensionstmt -alter_extension_opt_list -alter_extension_opt_item -alterextensioncontentsstmt -createfdwstmt -fdw_option -fdw_options -opt_fdw_options -alterfdwstmt -create_generic_options -generic_option_list -alter_generic_options -alter_generic_option_list -alter_generic_option_elem -generic_option_elem -generic_option_name -generic_option_arg -createforeignserverstmt -opt_type -foreign_server_version -opt_foreign_server_version -alterforeignserverstmt -createforeigntablestmt -importforeignschemastmt -import_qualification_type -import_qualification -createusermappingstmt -auth_ident -dropusermappingstmt -alterusermappingstmt -createpolicystmt -alterpolicystmt -rowsecurityoptionalexpr -rowsecurityoptionalwithcheck -rowsecuritydefaulttorole -rowsecurityoptionaltorole -rowsecuritydefaultpermissive -rowsecuritydefaultforcmd -row_security_cmd -createamstmt -am_type -createtrigstmt -triggeractiontime -triggerevents -triggeroneevent -triggerreferencing -triggertransitions -triggertransition -transitionoldornew -transitionrowortable -transitionrelname -triggerforspec -triggerforopteach -triggerfortype -triggerwhen -function_or_procedure -triggerfuncargs -triggerfuncarg -optconstrfromtable -constraintattributespec -constraintattributeElem -createeventtrigstmt -event_trigger_when_list -event_trigger_when_item -event_trigger_value_list -altereventtrigstmt -enable_trigger -createassertionstmt -definestmt -definition -def_list -def_elem -def_arg -old_aggr_definition -old_aggr_list -old_aggr_elem -opt_enum_val_list -enum_val_list -alterenumstmt -opt_if_not_exists -createopclassstmt -opclass_item_list -opclass_item -opt_default -opt_opfamily -opclass_purpose -opt_recheck -createopfamilystmt -alteropfamilystmt -opclass_drop_list -opclass_drop -dropopclassstmt -dropopfamilystmt -dropownedstmt -reassignownedstmt -dropstmt -object_type_any_name -object_type_name -drop_type_name -object_type_name_on_any_name -any_name_list -any_name -attrs -type_name_list -truncatestmt -opt_restart_seqs -commentstmt -comment_text -seclabelstmt -opt_provider -security_label -fetchstmt -fetch_args -from_in -opt_from_in -grantstmt -revokestmt -privileges -privilege_list -privilege -privilege_target -grantee_list -grantee -opt_grant_grant_option -grantrolestmt -revokerolestmt -opt_grant_admin_option -opt_granted_by -alterdefaultprivilegesstmt -defacloptionlist -defacloption -defaclaction -defacl_privilege_target -indexstmt -opt_unique -opt_concurrently -opt_index_name -access_method_clause -index_params -index_elem_options -index_elem -opt_include -index_including_params -opt_collate -opt_class -opt_asc_desc -opt_nulls_order -createfunctionstmt -opt_or_replace -func_args -func_args_list -function_with_argtypes_list -function_with_argtypes -func_args_with_defaults -func_args_with_defaults_list -func_arg -arg_class -param_name -func_return -func_type -func_arg_with_default -aggr_arg -aggr_args -aggr_args_list -aggregate_with_argtypes -aggregate_with_argtypes_list -createfunc_opt_list -common_func_opt_item -createfunc_opt_item -func_as -transform_type_list -opt_definition -table_func_column -table_func_column_list -alterfunctionstmt -alterfunc_opt_list -opt_restrict -removefuncstmt -removeaggrstmt -removeoperstmt -oper_argtypes -any_operator -operator_with_argtypes_list -operator_with_argtypes -dostmt -dostmt_opt_list -dostmt_opt_item -createcaststmt -cast_context -dropcaststmt -opt_if_exists -createtransformstmt -transform_element_list -droptransformstmt -reindexstmt -reindex_target_type -reindex_target_multitable -reindex_option_list -reindex_option_elem -altertblspcstmt -renamestmt -opt_column -opt_set_data -alterobjectdependsstmt -opt_no -alterobjectschemastmt -alteroperatorstmt -operator_def_list -operator_def_elem -operator_def_arg -altertypestmt -alterownerstmt -createpublicationstmt -opt_publication_for_tables -publication_for_tables -alterpublicationstmt -createsubscriptionstmt -publication_name_list -publication_name_item -altersubscriptionstmt -dropsubscriptionstmt -rulestmt -ruleactionlist -ruleactionmulti -ruleactionstmt -ruleactionstmtOrEmpty -event -opt_instead -notifystmt -notify_payload -listenstmt -unlistenstmt -transactionstmt -opt_transaction -transaction_mode_item -transaction_mode_list -transaction_mode_list_or_empty -opt_transaction_chain -viewstmt -opt_check_option -loadstmt -createdbstmt -createdb_opt_list -createdb_opt_items -createdb_opt_item -createdb_opt_name -opt_equal -alterdatabasestmt -alterdatabasesetstmt -dropdbstmt -drop_option_list -drop_option -altercollationstmt -altersystemstmt -createdomainstmt -alterdomainstmt -opt_as -altertsdictionarystmt -altertsconfigurationstmt -any_with -createconversionstmt -clusterstmt -cluster_index_specification -vacuumstmt -analyzestmt -vac_analyze_option_list -analyze_keyword -vac_analyze_option_elem -vac_analyze_option_name -vac_analyze_option_arg -opt_analyze -opt_verbose -opt_full -opt_freeze -opt_name_list -vacuum_relation -vacuum_relation_list -opt_vacuum_relation_list -explainstmt -explainablestmt -explain_option_list -explain_option_elem -explain_option_name -explain_option_arg -preparestmt -prep_type_clause -preparablestmt -executestmt -execute_param_clause -deallocatestmt -insertstmt -insert_target -insert_rest -override_kind -insert_column_list -insert_column_item -opt_on_conflict -opt_conf_expr -returning_clause -mergestmt -merge_insert_clause -merge_update_clause -merge_delete_clause -deletestmt -using_clause -lockstmt -opt_lock -lock_type -opt_nowait -opt_nowait_or_skip -updatestmt -set_clause_list -set_clause -set_target -set_target_list -declarecursorstmt -cursor_name -cursor_options -opt_hold -selectstmt -select_with_parens -select_no_parens -select_clause -simple_select_intersect -simple_select_pramary -with_clause -cte_list -common_table_expr -opt_materialized -opt_with_clause -into_clause -opt_strict -opttempTableName -opt_table -all_or_distinct -distinct_clause -opt_all_clause -opt_sort_clause -sort_clause -sortby_list -sortby -select_limit -opt_select_limit -limit_clause -offset_clause -select_limit_value -select_offset_value -select_fetch_first_value -i_or_f_const -row_or_rows -first_or_next -group_clause -group_by_list -group_by_item -empty_grouping_set -rollup_clause -cube_clause -grouping_sets_clause -having_clause -for_locking_clause -opt_for_locking_clause -for_locking_items -for_locking_item -for_locking_strength -locked_rels_list -values_clause -from_clause -from_list -non_ansi_join -table_ref -alias_clause -opt_alias_clause -table_alias_clause -func_alias_clause -join_type -join_qual -relation_expr -relation_expr_list -relation_expr_opt_alias -tablesample_clause -opt_repeatable_clause -func_table -rowsfrom_item -rowsfrom_list -opt_col_def_list -opt_ordinality -where_clause -where_or_current_clause -opttablefuncelementlist -tablefuncelementlist -tablefuncelement -xmltable -xmltable_column_list -xmltable_column_el -xmltable_column_option_list -xmltable_column_option_el -xml_namespace_list -xml_namespace_el -typename -opt_array_bounds -simpletypename -consttypename -generictype -opt_type_modifiers -numeric -opt_float -bit -constbit -bitwithlength -bitwithoutlength -character -constcharacter -character_c -opt_varying -constdatetime -constinterval -opt_timezone -opt_interval -interval_second -opt_escape -a_expr -a_expr_qual -a_expr_lessless -a_expr_or -a_expr_and -a_expr_between -a_expr_in -a_expr_unary_not -a_expr_isnull -a_expr_is_not -a_expr_compare -a_expr_like -a_expr_qual_op -a_expr_unary_qualop -a_expr_add -a_expr_mul -a_expr_caret -a_expr_unary_sign -a_expr_at_time_zone -a_expr_collate -a_expr_typecast -b_expr -c_expr -plsqlvariablename -func_application -func_expr -func_expr_windowless -func_expr_common_subexpr -xml_root_version -opt_xml_root_standalone -xml_attributes -xml_attribute_list -xml_attribute_el -document_or_content -xml_whitespace_option -xmlexists_argument -xml_passing_mech -within_group_clause -filter_clause -window_clause -window_definition_list -window_definition -over_clause -window_specification -opt_existing_window_name -opt_partition_clause -opt_frame_clause -frame_extent -frame_bound -opt_window_exclusion_clause -row -explicit_row -implicit_row -sub_type -all_op -mathop -qual_op -qual_all_op -subquery_Op -expr_list -func_arg_list -func_arg_expr -type_list -array_expr -array_expr_list -extract_list -extract_arg -unicode_normal_form -overlay_list -position_list -substr_list -trim_list -in_expr -case_expr -when_clause_list -when_clause -case_default -case_arg -columnref -indirection_el -opt_slice_bound -indirection -opt_indirection -opt_target_list -target_list -target_el -qualified_name_list -qualified_name -name_list -name -attr_name -file_name -func_name -aexprconst -xconst -bconst -fconst -iconst -sconst -anysconst -opt_uescape -signediconst -roleid -rolespec -role_list -colid -table_alias -type_function_name -nonreservedword -collabel -identifier -plsqlidentifier -unreserved_keyword -col_name_keyword -type_func_name_keyword -reserved_keyword -builtin_function_name -pl_function -comp_options -comp_option -sharp -option_value -opt_semi -pl_block -decl_sect -decl_start -decl_stmts -label_decl -decl_stmt -decl_statement -opt_scrollable -decl_cursor_query -decl_cursor_args -decl_cursor_arglist -decl_cursor_arg -decl_is_for -decl_aliasitem -decl_varname -decl_const -decl_datatype -decl_collate -decl_notnull -decl_defval -decl_defkey -assign_operator -proc_sect -proc_stmt -stmt_perform -stmt_call -opt_expr_list -stmt_assign -stmt_getdiag -getdiag_area_opt -getdiag_list -getdiag_list_item -getdiag_item -getdiag_target -assign_var -stmt_if -stmt_elsifs -stmt_else -stmt_case -opt_expr_until_when -case_when_list -case_when -opt_case_else -stmt_loop -stmt_while -stmt_for -for_control -opt_for_using_expression -opt_cursor_parameters -opt_reverse -opt_by_expression -for_variable -stmt_foreach_a -foreach_slice -stmt_exit -exit_type -stmt_return -opt_return_result -stmt_raise -opt_stmt_raise_level -opt_raise_list -opt_raise_using -opt_raise_using_elem -opt_raise_using_elem_list -stmt_assert -opt_stmt_assert_message -loop_body -stmt_execsql -stmt_dynexecute -opt_execute_using -opt_execute_using_list -opt_execute_into -stmt_open -opt_open_bound_list_item -opt_open_bound_list -opt_open_using -opt_scroll_option -opt_scroll_option_no -stmt_fetch -into_target -opt_cursor_from -opt_fetch_direction -stmt_move -stmt_close -stmt_null -stmt_commit -stmt_rollback -plsql_opt_transaction_chain -stmt_set -cursor_variable -exception_sect -proc_exceptions -proc_exception -proc_conditions -proc_condition -opt_block_label -opt_loop_label -opt_label -opt_exitcond -any_identifier -plsql_unreserved_keyword -sql_expression -expr_until_then -expr_until_semi -expr_until_rightbracket -expr_until_loop -make_execsql_stmt -opt_returning_clause_into - - -atn: -[4, 1, 679, 10695, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 2, 574, 7, 574, 2, 575, 7, 575, 2, 576, 7, 576, 2, 577, 7, 577, 2, 578, 7, 578, 2, 579, 7, 579, 2, 580, 7, 580, 2, 581, 7, 581, 2, 582, 7, 582, 2, 583, 7, 583, 2, 584, 7, 584, 2, 585, 7, 585, 2, 586, 7, 586, 2, 587, 7, 587, 2, 588, 7, 588, 2, 589, 7, 589, 2, 590, 7, 590, 2, 591, 7, 591, 2, 592, 7, 592, 2, 593, 7, 593, 2, 594, 7, 594, 2, 595, 7, 595, 2, 596, 7, 596, 2, 597, 7, 597, 2, 598, 7, 598, 2, 599, 7, 599, 2, 600, 7, 600, 2, 601, 7, 601, 2, 602, 7, 602, 2, 603, 7, 603, 2, 604, 7, 604, 2, 605, 7, 605, 2, 606, 7, 606, 2, 607, 7, 607, 2, 608, 7, 608, 2, 609, 7, 609, 2, 610, 7, 610, 2, 611, 7, 611, 2, 612, 7, 612, 2, 613, 7, 613, 2, 614, 7, 614, 2, 615, 7, 615, 2, 616, 7, 616, 2, 617, 7, 617, 2, 618, 7, 618, 2, 619, 7, 619, 2, 620, 7, 620, 2, 621, 7, 621, 2, 622, 7, 622, 2, 623, 7, 623, 2, 624, 7, 624, 2, 625, 7, 625, 2, 626, 7, 626, 2, 627, 7, 627, 2, 628, 7, 628, 2, 629, 7, 629, 2, 630, 7, 630, 2, 631, 7, 631, 2, 632, 7, 632, 2, 633, 7, 633, 2, 634, 7, 634, 2, 635, 7, 635, 2, 636, 7, 636, 2, 637, 7, 637, 2, 638, 7, 638, 2, 639, 7, 639, 2, 640, 7, 640, 2, 641, 7, 641, 2, 642, 7, 642, 2, 643, 7, 643, 2, 644, 7, 644, 2, 645, 7, 645, 2, 646, 7, 646, 2, 647, 7, 647, 2, 648, 7, 648, 2, 649, 7, 649, 2, 650, 7, 650, 2, 651, 7, 651, 2, 652, 7, 652, 2, 653, 7, 653, 2, 654, 7, 654, 2, 655, 7, 655, 2, 656, 7, 656, 2, 657, 7, 657, 2, 658, 7, 658, 2, 659, 7, 659, 2, 660, 7, 660, 2, 661, 7, 661, 2, 662, 7, 662, 2, 663, 7, 663, 2, 664, 7, 664, 2, 665, 7, 665, 2, 666, 7, 666, 2, 667, 7, 667, 2, 668, 7, 668, 2, 669, 7, 669, 2, 670, 7, 670, 2, 671, 7, 671, 2, 672, 7, 672, 2, 673, 7, 673, 2, 674, 7, 674, 2, 675, 7, 675, 2, 676, 7, 676, 2, 677, 7, 677, 2, 678, 7, 678, 2, 679, 7, 679, 2, 680, 7, 680, 2, 681, 7, 681, 2, 682, 7, 682, 2, 683, 7, 683, 2, 684, 7, 684, 2, 685, 7, 685, 2, 686, 7, 686, 2, 687, 7, 687, 2, 688, 7, 688, 2, 689, 7, 689, 2, 690, 7, 690, 2, 691, 7, 691, 2, 692, 7, 692, 2, 693, 7, 693, 2, 694, 7, 694, 2, 695, 7, 695, 2, 696, 7, 696, 2, 697, 7, 697, 2, 698, 7, 698, 2, 699, 7, 699, 2, 700, 7, 700, 2, 701, 7, 701, 2, 702, 7, 702, 2, 703, 7, 703, 2, 704, 7, 704, 2, 705, 7, 705, 2, 706, 7, 706, 2, 707, 7, 707, 2, 708, 7, 708, 2, 709, 7, 709, 2, 710, 7, 710, 2, 711, 7, 711, 2, 712, 7, 712, 2, 713, 7, 713, 2, 714, 7, 714, 2, 715, 7, 715, 2, 716, 7, 716, 2, 717, 7, 717, 2, 718, 7, 718, 2, 719, 7, 719, 2, 720, 7, 720, 2, 721, 7, 721, 2, 722, 7, 722, 2, 723, 7, 723, 2, 724, 7, 724, 2, 725, 7, 725, 2, 726, 7, 726, 2, 727, 7, 727, 2, 728, 7, 728, 2, 729, 7, 729, 2, 730, 7, 730, 2, 731, 7, 731, 2, 732, 7, 732, 2, 733, 7, 733, 2, 734, 7, 734, 2, 735, 7, 735, 2, 736, 7, 736, 2, 737, 7, 737, 2, 738, 7, 738, 2, 739, 7, 739, 2, 740, 7, 740, 2, 741, 7, 741, 2, 742, 7, 742, 2, 743, 7, 743, 2, 744, 7, 744, 2, 745, 7, 745, 2, 746, 7, 746, 2, 747, 7, 747, 2, 748, 7, 748, 2, 749, 7, 749, 2, 750, 7, 750, 2, 751, 7, 751, 2, 752, 7, 752, 2, 753, 7, 753, 2, 754, 7, 754, 2, 755, 7, 755, 2, 756, 7, 756, 2, 757, 7, 757, 2, 758, 7, 758, 2, 759, 7, 759, 2, 760, 7, 760, 2, 761, 7, 761, 2, 762, 7, 762, 2, 763, 7, 763, 2, 764, 7, 764, 2, 765, 7, 765, 2, 766, 7, 766, 2, 767, 7, 767, 2, 768, 7, 768, 2, 769, 7, 769, 2, 770, 7, 770, 2, 771, 7, 771, 2, 772, 7, 772, 2, 773, 7, 773, 2, 774, 7, 774, 2, 775, 7, 775, 2, 776, 7, 776, 2, 777, 7, 777, 2, 778, 7, 778, 2, 779, 7, 779, 2, 780, 7, 780, 2, 781, 7, 781, 2, 782, 7, 782, 2, 783, 7, 783, 2, 784, 7, 784, 2, 785, 7, 785, 2, 786, 7, 786, 2, 787, 7, 787, 2, 788, 7, 788, 2, 789, 7, 789, 2, 790, 7, 790, 2, 791, 7, 791, 2, 792, 7, 792, 2, 793, 7, 793, 2, 794, 7, 794, 2, 795, 7, 795, 2, 796, 7, 796, 2, 797, 7, 797, 2, 798, 7, 798, 2, 799, 7, 799, 2, 800, 7, 800, 2, 801, 7, 801, 2, 802, 7, 802, 2, 803, 7, 803, 2, 804, 7, 804, 2, 805, 7, 805, 2, 806, 7, 806, 2, 807, 7, 807, 2, 808, 7, 808, 2, 809, 7, 809, 2, 810, 7, 810, 2, 811, 7, 811, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 1634, 8, 3, 5, 3, 1636, 8, 3, 10, 3, 12, 3, 1639, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1766, 8, 4, 1, 5, 1, 5, 3, 5, 1770, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 1783, 8, 8, 1, 9, 5, 9, 1786, 8, 9, 10, 9, 12, 9, 1789, 9, 9, 1, 10, 5, 10, 1792, 8, 10, 10, 10, 12, 10, 1795, 9, 10, 1, 11, 1, 11, 1, 11, 3, 11, 1800, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1815, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1827, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1845, 8, 15, 1, 16, 1, 16, 1, 16, 3, 16, 1850, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1860, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1884, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1891, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 1897, 8, 22, 1, 23, 5, 23, 1900, 8, 23, 10, 23, 12, 23, 1903, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1911, 8, 24, 1, 25, 1, 25, 3, 25, 1915, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1927, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1958, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 1963, 8, 29, 10, 29, 12, 29, 1966, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 1971, 8, 30, 10, 30, 12, 30, 1974, 9, 30, 1, 31, 1, 31, 3, 31, 1978, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1985, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1991, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 2008, 8, 34, 1, 35, 1, 35, 1, 35, 3, 35, 2013, 8, 35, 1, 36, 1, 36, 3, 36, 2017, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 2030, 8, 38, 1, 39, 1, 39, 3, 39, 2034, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, 2039, 8, 40, 1, 41, 1, 41, 1, 41, 3, 41, 2044, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 2056, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 2065, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2078, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2083, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2094, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2105, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2110, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2121, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2132, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2141, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2151, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2166, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2178, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 2183, 8, 48, 1, 49, 1, 49, 1, 49, 5, 49, 2188, 8, 49, 10, 49, 12, 49, 2191, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 2201, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2459, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2466, 8, 53, 1, 54, 1, 54, 1, 54, 3, 54, 2471, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 2476, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 2481, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2489, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 3, 59, 2498, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 2503, 8, 60, 10, 60, 12, 60, 2506, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2515, 8, 61, 3, 61, 2517, 8, 61, 1, 62, 4, 62, 2520, 8, 62, 11, 62, 12, 62, 2521, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2528, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2534, 8, 63, 3, 63, 2536, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2564, 8, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 5, 66, 2572, 8, 66, 10, 66, 12, 66, 2575, 9, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 5, 68, 2585, 8, 68, 10, 68, 12, 68, 2588, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2599, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2613, 8, 69, 1, 70, 1, 70, 1, 70, 3, 70, 2618, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2642, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 2648, 8, 73, 1, 74, 1, 74, 1, 74, 3, 74, 2653, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2660, 8, 75, 1, 76, 5, 76, 2663, 8, 76, 10, 76, 12, 76, 2666, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2703, 8, 77, 1, 78, 1, 78, 3, 78, 2707, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 2714, 8, 79, 1, 80, 1, 80, 3, 80, 2718, 8, 80, 1, 81, 1, 81, 1, 81, 5, 81, 2723, 8, 81, 10, 81, 12, 81, 2726, 9, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2739, 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 2744, 8, 84, 10, 84, 12, 84, 2747, 9, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2757, 8, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2790, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2800, 8, 87, 1, 88, 1, 88, 3, 88, 2804, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2811, 8, 89, 1, 90, 1, 90, 1, 90, 5, 90, 2816, 8, 90, 10, 90, 12, 90, 2819, 9, 90, 1, 91, 1, 91, 1, 91, 5, 91, 2824, 8, 91, 10, 91, 12, 91, 2827, 9, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2832, 8, 92, 1, 93, 1, 93, 3, 93, 2836, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 3, 95, 2846, 8, 95, 1, 95, 1, 95, 1, 96, 5, 96, 2851, 8, 96, 10, 96, 12, 96, 2854, 9, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2864, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 2896, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 2904, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2909, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2916, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 5, 102, 2924, 8, 102, 10, 102, 12, 102, 2927, 9, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 2936, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2956, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2971, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2996, 8, 105, 1, 106, 1, 106, 1, 106, 3, 106, 3001, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3008, 8, 107, 1, 108, 1, 108, 1, 108, 5, 108, 3013, 8, 108, 10, 108, 12, 108, 3016, 9, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 3026, 8, 110, 1, 111, 1, 111, 1, 111, 3, 111, 3031, 8, 111, 1, 112, 1, 112, 1, 112, 5, 112, 3036, 8, 112, 10, 112, 12, 112, 3039, 9, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 3049, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 3057, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 3068, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3084, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3092, 8, 119, 1, 120, 1, 120, 3, 120, 3096, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 5, 122, 3108, 8, 122, 10, 122, 12, 122, 3111, 9, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3127, 8, 123, 1, 124, 1, 124, 1, 124, 3, 124, 3132, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 3139, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 3148, 8, 126, 1, 126, 3, 126, 3151, 8, 126, 1, 127, 1, 127, 1, 127, 3, 127, 3156, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3163, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3174, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3187, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3200, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 3218, 8, 134, 1, 134, 3, 134, 3221, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3230, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 3, 137, 3245, 8, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3260, 8, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 3269, 8, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 3, 141, 3276, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 3283, 8, 142, 1, 143, 4, 143, 3286, 8, 143, 11, 143, 12, 143, 3287, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3318, 8, 144, 3, 144, 3320, 8, 144, 1, 145, 1, 145, 3, 145, 3324, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3332, 8, 146, 1, 147, 1, 147, 1, 147, 5, 147, 3337, 8, 147, 10, 147, 12, 147, 3340, 9, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3353, 8, 148, 1, 149, 1, 149, 3, 149, 3357, 8, 149, 1, 150, 1, 150, 3, 150, 3361, 8, 150, 1, 151, 1, 151, 1, 151, 3, 151, 3366, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 3372, 8, 152, 1, 153, 1, 153, 3, 153, 3376, 8, 153, 1, 154, 1, 154, 3, 154, 3380, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 3, 156, 3393, 8, 156, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 3399, 8, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 3, 158, 3408, 8, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 5, 159, 3415, 8, 159, 10, 159, 12, 159, 3418, 9, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 3427, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 5, 162, 3436, 8, 162, 10, 162, 12, 162, 3439, 9, 162, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 3548, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 3566, 8, 166, 1, 167, 4, 167, 3569, 8, 167, 11, 167, 12, 167, 3570, 1, 168, 1, 168, 3, 168, 3575, 8, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 3592, 8, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 3600, 8, 170, 1, 171, 1, 171, 1, 171, 5, 171, 3605, 8, 171, 10, 171, 12, 171, 3608, 9, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 5, 173, 3618, 8, 173, 10, 173, 12, 173, 3621, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 3630, 8, 174, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 3664, 8, 178, 1, 179, 1, 179, 1, 179, 3, 179, 3669, 8, 179, 1, 180, 1, 180, 1, 180, 3, 180, 3674, 8, 180, 1, 181, 1, 181, 3, 181, 3678, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 3686, 8, 182, 3, 182, 3688, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 3746, 8, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 3, 185, 3763, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 3771, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 3794, 8, 187, 1, 188, 1, 188, 3, 188, 3798, 8, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 3818, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 3855, 8, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 3864, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 3869, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 3874, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 3879, 8, 197, 1, 198, 1, 198, 1, 198, 3, 198, 3884, 8, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 3937, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 3943, 8, 203, 1, 204, 1, 204, 1, 204, 5, 204, 3948, 8, 204, 10, 204, 12, 204, 3951, 9, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 3960, 8, 205, 1, 206, 1, 206, 1, 206, 3, 206, 3965, 8, 206, 1, 207, 4, 207, 3968, 8, 207, 11, 207, 12, 207, 3969, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 3988, 8, 212, 1, 213, 1, 213, 3, 213, 3992, 8, 213, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 4002, 8, 215, 1, 216, 1, 216, 1, 217, 1, 217, 3, 217, 4008, 8, 217, 1, 217, 1, 217, 5, 217, 4012, 8, 217, 10, 217, 12, 217, 4015, 9, 217, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 4021, 8, 218, 1, 219, 1, 219, 1, 219, 3, 219, 4026, 8, 219, 1, 220, 5, 220, 4029, 8, 220, 10, 220, 12, 220, 4032, 9, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 4045, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 4073, 8, 222, 1, 223, 1, 223, 1, 223, 5, 223, 4078, 8, 223, 10, 223, 12, 223, 4081, 9, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 5, 225, 4092, 8, 225, 10, 225, 12, 225, 4095, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 4109, 8, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 4226, 8, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 5, 231, 4235, 8, 231, 10, 231, 12, 231, 4238, 9, 231, 1, 232, 1, 232, 1, 232, 3, 232, 4243, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 4251, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 5, 235, 4260, 8, 235, 10, 235, 12, 235, 4263, 9, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 3, 237, 4271, 8, 237, 1, 238, 1, 238, 1, 238, 5, 238, 4276, 8, 238, 10, 238, 12, 238, 4279, 9, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 4318, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 4324, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 5, 242, 4343, 8, 242, 10, 242, 12, 242, 4346, 9, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 4373, 8, 243, 1, 244, 1, 244, 3, 244, 4377, 8, 244, 1, 245, 1, 245, 1, 245, 3, 245, 4382, 8, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 4391, 8, 246, 1, 247, 1, 247, 3, 247, 4395, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 4422, 8, 249, 1, 250, 1, 250, 1, 250, 5, 250, 4427, 8, 250, 10, 250, 12, 250, 4430, 9, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 4444, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 4464, 8, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 4484, 8, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 3, 256, 4577, 8, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 4602, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 4609, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 4625, 8, 259, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 5, 261, 4632, 8, 261, 10, 261, 12, 261, 4635, 9, 261, 1, 262, 1, 262, 3, 262, 4639, 8, 262, 1, 263, 1, 263, 4, 263, 4643, 8, 263, 11, 263, 12, 263, 4644, 1, 264, 1, 264, 1, 264, 5, 264, 4650, 8, 264, 10, 264, 12, 264, 4653, 9, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 4666, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 4815, 8, 267, 1, 268, 1, 268, 3, 268, 4819, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 4912, 8, 269, 1, 270, 1, 270, 1, 270, 3, 270, 4917, 8, 270, 1, 271, 1, 271, 3, 271, 4921, 8, 271, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 4927, 8, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 3, 273, 4995, 8, 273, 1, 274, 1, 274, 1, 275, 1, 275, 3, 275, 5001, 8, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 5030, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 5047, 8, 278, 1, 279, 1, 279, 1, 279, 5, 279, 5052, 8, 279, 10, 279, 12, 279, 5055, 9, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 5066, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 5126, 8, 281, 1, 282, 1, 282, 1, 282, 5, 282, 5131, 8, 282, 10, 282, 12, 282, 5134, 9, 282, 1, 283, 1, 283, 1, 283, 3, 283, 5139, 8, 283, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 5145, 8, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 5171, 8, 286, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 5177, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 5183, 8, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 5, 290, 5192, 8, 290, 10, 290, 12, 290, 5195, 9, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 5206, 8, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 3, 292, 5235, 8, 292, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 5274, 8, 294, 1, 295, 1, 295, 3, 295, 5278, 8, 295, 1, 296, 1, 296, 3, 296, 5282, 8, 296, 1, 297, 1, 297, 3, 297, 5286, 8, 297, 1, 298, 1, 298, 1, 298, 3, 298, 5291, 8, 298, 1, 299, 1, 299, 1, 299, 5, 299, 5296, 8, 299, 10, 299, 12, 299, 5299, 9, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 5312, 8, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 3, 301, 5325, 8, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 5333, 8, 302, 1, 303, 1, 303, 1, 303, 5, 303, 5338, 8, 303, 10, 303, 12, 303, 5341, 9, 303, 1, 304, 1, 304, 1, 304, 3, 304, 5346, 8, 304, 1, 305, 1, 305, 3, 305, 5350, 8, 305, 1, 306, 1, 306, 1, 306, 3, 306, 5355, 8, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 5362, 8, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 5376, 8, 308, 3, 308, 5378, 8, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 3, 309, 5385, 8, 309, 1, 310, 1, 310, 3, 310, 5389, 8, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 5, 311, 5396, 8, 311, 10, 311, 12, 311, 5399, 9, 311, 1, 312, 1, 312, 1, 312, 5, 312, 5404, 8, 312, 10, 312, 12, 312, 5407, 9, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 5415, 8, 313, 3, 313, 5417, 8, 313, 1, 314, 1, 314, 3, 314, 5421, 8, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 5, 315, 5428, 8, 315, 10, 315, 12, 315, 5431, 9, 315, 1, 316, 1, 316, 3, 316, 5435, 8, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 5441, 8, 316, 1, 316, 1, 316, 1, 316, 3, 316, 5446, 8, 316, 1, 317, 1, 317, 3, 317, 5450, 8, 317, 1, 317, 1, 317, 1, 317, 3, 317, 5455, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 5461, 8, 318, 1, 319, 1, 319, 1, 320, 1, 320, 3, 320, 5467, 8, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 5473, 8, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 5479, 8, 320, 1, 321, 1, 321, 1, 321, 3, 321, 5484, 8, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 3, 323, 5499, 8, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 5, 324, 5506, 8, 324, 10, 324, 12, 324, 5509, 9, 324, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 5, 326, 5517, 8, 326, 10, 326, 12, 326, 5520, 9, 326, 1, 327, 4, 327, 5523, 8, 327, 11, 327, 12, 327, 5524, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 5564, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 5574, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, 330, 5581, 8, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 5, 331, 5590, 8, 331, 10, 331, 12, 331, 5593, 9, 331, 1, 332, 1, 332, 1, 332, 3, 332, 5598, 8, 332, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 5, 334, 5606, 8, 334, 10, 334, 12, 334, 5609, 9, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 4, 336, 5618, 8, 336, 11, 336, 12, 336, 5619, 1, 337, 1, 337, 3, 337, 5624, 8, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 5662, 8, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 5676, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 5690, 8, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 5714, 8, 341, 1, 342, 1, 342, 1, 342, 5, 342, 5719, 8, 342, 10, 342, 12, 342, 5722, 9, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 5, 343, 5729, 8, 343, 10, 343, 12, 343, 5732, 9, 343, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 346, 4, 346, 5741, 8, 346, 11, 346, 12, 346, 5742, 1, 347, 1, 347, 1, 347, 3, 347, 5748, 8, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 3, 348, 5784, 8, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 5791, 8, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 3, 351, 5806, 8, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 3, 353, 5853, 8, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 5890, 8, 355, 1, 356, 1, 356, 1, 357, 1, 357, 1, 358, 1, 358, 1, 358, 5, 358, 5899, 8, 358, 10, 358, 12, 358, 5902, 9, 358, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 5918, 8, 360, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 6388, 8, 361, 1, 362, 1, 362, 3, 362, 6392, 8, 362, 1, 363, 1, 363, 1, 363, 3, 363, 6397, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 3, 364, 6456, 8, 364, 1, 365, 1, 365, 3, 365, 6460, 8, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 6679, 8, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 5, 368, 6692, 8, 368, 10, 368, 12, 368, 6695, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 6705, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 3, 370, 6712, 8, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 1, 372, 3, 372, 6905, 8, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 3, 374, 6915, 8, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 6923, 8, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 3, 376, 6952, 8, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 5, 378, 6966, 8, 378, 10, 378, 12, 378, 6969, 9, 378, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 3, 380, 7010, 8, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7024, 8, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7046, 8, 383, 1, 384, 1, 384, 1, 384, 5, 384, 7051, 8, 384, 10, 384, 12, 384, 7054, 9, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7061, 8, 385, 1, 386, 1, 386, 3, 386, 7065, 8, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 3, 388, 7072, 8, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 3, 390, 7081, 8, 390, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 392, 3, 392, 7090, 8, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 3, 393, 7142, 8, 393, 1, 394, 1, 394, 1, 394, 3, 394, 7147, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 3, 395, 7159, 8, 395, 1, 396, 1, 396, 3, 396, 7163, 8, 396, 1, 396, 5, 396, 7166, 8, 396, 10, 396, 12, 396, 7169, 9, 396, 1, 397, 1, 397, 3, 397, 7173, 8, 397, 1, 398, 1, 398, 3, 398, 7177, 8, 398, 1, 398, 1, 398, 3, 398, 7181, 8, 398, 1, 399, 1, 399, 1, 399, 3, 399, 7186, 8, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7202, 8, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 3, 400, 7210, 8, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7215, 8, 400, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 3, 403, 7228, 8, 403, 1, 404, 4, 404, 7231, 8, 404, 11, 404, 12, 404, 7232, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 3, 405, 7240, 8, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 3, 406, 7250, 8, 406, 1, 407, 1, 407, 3, 407, 7254, 8, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 3, 408, 7265, 8, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 7276, 8, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 7284, 8, 410, 1, 411, 1, 411, 1, 411, 5, 411, 7289, 8, 411, 10, 411, 12, 411, 7292, 9, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 3, 416, 7330, 8, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 3, 416, 7338, 8, 416, 1, 417, 1, 417, 3, 417, 7342, 8, 417, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 1, 419, 3, 419, 7423, 8, 419, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 3, 422, 7451, 8, 422, 1, 423, 1, 423, 1, 423, 3, 423, 7456, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 3, 424, 7471, 8, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7483, 8, 425, 1, 426, 1, 426, 1, 426, 5, 426, 7488, 8, 426, 10, 426, 12, 426, 7491, 9, 426, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7500, 8, 429, 1, 430, 1, 430, 1, 430, 3, 430, 7505, 8, 430, 1, 431, 1, 431, 3, 431, 7509, 8, 431, 1, 432, 1, 432, 3, 432, 7513, 8, 432, 1, 433, 1, 433, 3, 433, 7517, 8, 433, 1, 434, 1, 434, 3, 434, 7521, 8, 434, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 7528, 8, 435, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 5, 437, 7536, 8, 437, 10, 437, 12, 437, 7539, 9, 437, 1, 438, 1, 438, 3, 438, 7543, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 3, 439, 7561, 8, 439, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 7572, 8, 440, 1, 441, 1, 441, 1, 441, 5, 441, 7577, 8, 441, 10, 441, 12, 441, 7580, 9, 441, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 3, 443, 7587, 8, 443, 1, 444, 1, 444, 1, 444, 3, 444, 7592, 8, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 3, 446, 7605, 8, 446, 1, 447, 1, 447, 1, 447, 1, 447, 3, 447, 7611, 8, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 7640, 8, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 3, 449, 7647, 8, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 3, 450, 7659, 8, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 3, 452, 7672, 8, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 3, 453, 7687, 8, 453, 1, 453, 1, 453, 1, 453, 1, 453, 3, 453, 7693, 8, 453, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 5, 455, 7700, 8, 455, 10, 455, 12, 455, 7703, 9, 455, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 1, 457, 3, 457, 7718, 8, 457, 1, 457, 3, 457, 7721, 8, 457, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 1, 458, 3, 458, 7732, 8, 458, 1, 459, 1, 459, 1, 459, 3, 459, 7737, 8, 459, 1, 460, 1, 460, 3, 460, 7741, 8, 460, 1, 460, 1, 460, 3, 460, 7745, 8, 460, 1, 460, 1, 460, 1, 460, 3, 460, 7750, 8, 460, 1, 460, 3, 460, 7753, 8, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 7759, 8, 460, 1, 460, 1, 460, 3, 460, 7763, 8, 460, 3, 460, 7765, 8, 460, 1, 460, 3, 460, 7768, 8, 460, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 3, 461, 7775, 8, 461, 1, 461, 3, 461, 7778, 8, 461, 1, 461, 1, 461, 1, 461, 1, 461, 1, 461, 3, 461, 7785, 8, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 3, 462, 7793, 8, 462, 1, 462, 3, 462, 7796, 8, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 3, 463, 7805, 8, 463, 1, 463, 1, 463, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 464, 1, 465, 1, 465, 1, 465, 3, 465, 7820, 8, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 467, 1, 467, 1, 467, 3, 467, 7833, 8, 467, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 1, 468, 3, 468, 7844, 8, 468, 1, 468, 3, 468, 7847, 8, 468, 1, 469, 1, 469, 3, 469, 7851, 8, 469, 1, 470, 1, 470, 1, 470, 1, 470, 3, 470, 7857, 8, 470, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 5, 472, 7871, 8, 472, 10, 472, 12, 472, 7874, 9, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 3, 473, 7886, 8, 473, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 5, 475, 7894, 8, 475, 10, 475, 12, 475, 7897, 9, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 1, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 5, 478, 7914, 8, 478, 10, 478, 12, 478, 7917, 9, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 3, 479, 7924, 8, 479, 1, 480, 1, 480, 3, 480, 7928, 8, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 3, 481, 7938, 8, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 3, 482, 7948, 8, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 3, 482, 7959, 8, 482, 3, 482, 7961, 8, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 5, 483, 7968, 8, 483, 10, 483, 12, 483, 7971, 9, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 5, 484, 7978, 8, 484, 10, 484, 12, 484, 7981, 9, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 3, 485, 7991, 8, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 3, 485, 8004, 8, 485, 1, 486, 1, 486, 3, 486, 8008, 8, 486, 1, 486, 1, 486, 1, 487, 1, 487, 1, 487, 5, 487, 8015, 8, 487, 10, 487, 12, 487, 8018, 9, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 489, 1, 489, 3, 489, 8032, 8, 489, 1, 490, 1, 490, 3, 490, 8036, 8, 490, 1, 491, 1, 491, 1, 491, 1, 491, 1, 491, 3, 491, 8043, 8, 491, 1, 491, 3, 491, 8046, 8, 491, 1, 492, 1, 492, 3, 492, 8050, 8, 492, 1, 493, 3, 493, 8053, 8, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 3, 493, 8066, 8, 493, 1, 494, 1, 494, 3, 494, 8070, 8, 494, 1, 495, 1, 495, 1, 495, 3, 495, 8075, 8, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 3, 496, 8083, 8, 496, 1, 497, 1, 497, 3, 497, 8087, 8, 497, 1, 498, 1, 498, 3, 498, 8091, 8, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 5, 500, 8100, 8, 500, 10, 500, 12, 500, 8103, 9, 500, 1, 501, 1, 501, 1, 501, 1, 501, 3, 501, 8109, 8, 501, 1, 501, 1, 501, 1, 502, 1, 502, 3, 502, 8115, 8, 502, 1, 502, 1, 502, 3, 502, 8119, 8, 502, 3, 502, 8121, 8, 502, 1, 503, 1, 503, 3, 503, 8125, 8, 503, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 8131, 8, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 8140, 8, 504, 1, 504, 1, 504, 1, 504, 1, 504, 3, 504, 8146, 8, 504, 3, 504, 8148, 8, 504, 3, 504, 8150, 8, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 505, 3, 505, 8157, 8, 505, 1, 506, 1, 506, 3, 506, 8161, 8, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 1, 508, 3, 508, 8170, 8, 508, 1, 509, 1, 509, 3, 509, 8174, 8, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 512, 1, 512, 1, 512, 1, 512, 3, 512, 8184, 8, 512, 1, 513, 1, 513, 1, 513, 5, 513, 8189, 8, 513, 10, 513, 12, 513, 8192, 9, 513, 1, 514, 1, 514, 1, 514, 1, 514, 1, 514, 3, 514, 8199, 8, 514, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 519, 1, 519, 1, 519, 3, 519, 8223, 8, 519, 1, 520, 1, 520, 1, 520, 1, 520, 3, 520, 8229, 8, 520, 1, 521, 1, 521, 3, 521, 8233, 8, 521, 1, 522, 4, 522, 8236, 8, 522, 11, 522, 12, 522, 8237, 1, 523, 1, 523, 1, 523, 1, 523, 1, 524, 1, 524, 1, 524, 3, 524, 8247, 8, 524, 1, 524, 1, 524, 3, 524, 8251, 8, 524, 1, 524, 3, 524, 8254, 8, 524, 1, 525, 1, 525, 1, 525, 3, 525, 8259, 8, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 5, 526, 8270, 8, 526, 10, 526, 12, 526, 8273, 9, 526, 1, 527, 1, 527, 1, 527, 3, 527, 8278, 8, 527, 1, 528, 1, 528, 1, 528, 1, 528, 5, 528, 8284, 8, 528, 10, 528, 12, 528, 8287, 9, 528, 3, 528, 8289, 8, 528, 1, 529, 1, 529, 1, 529, 4, 529, 8294, 8, 529, 11, 529, 12, 529, 8295, 1, 530, 1, 530, 1, 530, 3, 530, 8301, 8, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8322, 8, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8331, 8, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8336, 8, 530, 1, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8342, 8, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8347, 8, 530, 1, 530, 1, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8354, 8, 530, 1, 530, 1, 530, 1, 530, 3, 530, 8359, 8, 530, 1, 530, 1, 530, 1, 530, 1, 530, 5, 530, 8365, 8, 530, 10, 530, 12, 530, 8368, 9, 530, 1, 531, 3, 531, 8371, 8, 531, 1, 531, 1, 531, 1, 531, 1, 531, 1, 531, 3, 531, 8378, 8, 531, 1, 532, 1, 532, 3, 532, 8382, 8, 532, 1, 533, 3, 533, 8385, 8, 533, 1, 533, 1, 533, 1, 533, 1, 533, 1, 533, 3, 533, 8392, 8, 533, 1, 534, 1, 534, 1, 534, 3, 534, 8397, 8, 534, 1, 534, 3, 534, 8400, 8, 534, 1, 534, 1, 534, 1, 534, 1, 534, 1, 534, 3, 534, 8407, 8, 534, 1, 535, 1, 535, 3, 535, 8411, 8, 535, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 1, 536, 3, 536, 8420, 8, 536, 1, 537, 1, 537, 3, 537, 8424, 8, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 1, 537, 3, 537, 8432, 8, 537, 3, 537, 8434, 8, 537, 1, 538, 1, 538, 1, 538, 5, 538, 8439, 8, 538, 10, 538, 12, 538, 8442, 9, 538, 1, 539, 1, 539, 3, 539, 8446, 8, 539, 1, 539, 3, 539, 8449, 8, 539, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 540, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 1, 541, 3, 541, 8464, 8, 541, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 1, 542, 3, 542, 8476, 8, 542, 1, 543, 1, 543, 1, 543, 1, 544, 1, 544, 1, 544, 5, 544, 8484, 8, 544, 10, 544, 12, 544, 8487, 9, 544, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 1, 545, 3, 545, 8495, 8, 545, 1, 546, 1, 546, 1, 546, 3, 546, 8500, 8, 546, 1, 547, 1, 547, 1, 547, 3, 547, 8505, 8, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 3, 548, 8512, 8, 548, 1, 548, 3, 548, 8515, 8, 548, 1, 549, 1, 549, 3, 549, 8519, 8, 549, 1, 550, 1, 550, 1, 550, 5, 550, 8524, 8, 550, 10, 550, 12, 550, 8527, 9, 550, 1, 551, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 1, 552, 3, 552, 8550, 8, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 553, 5, 553, 8557, 8, 553, 10, 553, 12, 553, 8560, 9, 553, 1, 554, 1, 554, 1, 554, 3, 554, 8565, 8, 554, 1, 554, 1, 554, 3, 554, 8569, 8, 554, 1, 555, 4, 555, 8572, 8, 555, 11, 555, 12, 555, 8573, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 1, 556, 3, 556, 8584, 8, 556, 1, 557, 1, 557, 1, 557, 5, 557, 8589, 8, 557, 10, 557, 12, 557, 8592, 9, 557, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 1, 558, 3, 558, 8600, 8, 558, 1, 559, 3, 559, 8603, 8, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 1, 559, 3, 559, 8612, 8, 559, 3, 559, 8614, 8, 559, 1, 559, 1, 559, 1, 559, 1, 559, 3, 559, 8620, 8, 559, 1, 560, 1, 560, 3, 560, 8624, 8, 560, 1, 560, 5, 560, 8627, 8, 560, 10, 560, 12, 560, 8630, 9, 560, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 1, 561, 3, 561, 8643, 8, 561, 3, 561, 8645, 8, 561, 1, 562, 1, 562, 1, 562, 1, 562, 3, 562, 8651, 8, 562, 1, 563, 1, 563, 1, 563, 1, 563, 3, 563, 8657, 8, 563, 1, 563, 3, 563, 8660, 8, 563, 1, 563, 1, 563, 1, 564, 1, 564, 1, 564, 1, 564, 1, 564, 3, 564, 8669, 8, 564, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 1, 565, 3, 565, 8687, 8, 565, 1, 566, 1, 566, 1, 566, 1, 566, 1, 566, 3, 566, 8694, 8, 566, 1, 567, 1, 567, 3, 567, 8698, 8, 567, 1, 568, 1, 568, 3, 568, 8702, 8, 568, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 569, 1, 570, 1, 570, 1, 570, 1, 571, 1, 571, 1, 571, 1, 571, 1, 571, 3, 571, 8718, 8, 571, 1, 572, 1, 572, 1, 572, 1, 572, 1, 572, 3, 572, 8725, 8, 572, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 1, 573, 3, 573, 8733, 8, 573, 1, 574, 1, 574, 3, 574, 8737, 8, 574, 1, 575, 1, 575, 1, 575, 1, 575, 1, 575, 3, 575, 8744, 8, 575, 1, 575, 1, 575, 1, 576, 1, 576, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 1, 577, 3, 577, 8757, 8, 577, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 1, 578, 3, 578, 8773, 8, 578, 1, 578, 1, 578, 1, 578, 1, 578, 3, 578, 8779, 8, 578, 1, 578, 1, 578, 1, 578, 1, 578, 3, 578, 8785, 8, 578, 1, 579, 1, 579, 1, 579, 1, 579, 1, 579, 3, 579, 8792, 8, 579, 1, 580, 1, 580, 1, 580, 3, 580, 8797, 8, 580, 1, 581, 1, 581, 1, 582, 1, 582, 3, 582, 8803, 8, 582, 1, 583, 1, 583, 1, 583, 5, 583, 8808, 8, 583, 10, 583, 12, 583, 8811, 9, 583, 1, 584, 1, 584, 1, 584, 5, 584, 8816, 8, 584, 10, 584, 12, 584, 8819, 9, 584, 1, 585, 1, 585, 1, 585, 5, 585, 8824, 8, 585, 10, 585, 12, 585, 8827, 9, 585, 1, 586, 1, 586, 3, 586, 8831, 8, 586, 1, 586, 1, 586, 3, 586, 8835, 8, 586, 1, 586, 1, 586, 1, 586, 1, 586, 3, 586, 8841, 8, 586, 1, 587, 1, 587, 3, 587, 8845, 8, 587, 1, 587, 1, 587, 3, 587, 8849, 8, 587, 1, 588, 3, 588, 8852, 8, 588, 1, 588, 1, 588, 1, 589, 1, 589, 3, 589, 8858, 8, 589, 1, 590, 1, 590, 1, 590, 3, 590, 8863, 8, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 1, 590, 3, 590, 8879, 8, 590, 1, 590, 3, 590, 8882, 8, 590, 3, 590, 8884, 8, 590, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 1, 591, 3, 591, 8896, 8, 591, 3, 591, 8898, 8, 591, 1, 592, 1, 592, 3, 592, 8902, 8, 592, 1, 592, 1, 592, 1, 592, 1, 592, 3, 592, 8908, 8, 592, 1, 592, 1, 592, 1, 592, 3, 592, 8913, 8, 592, 1, 593, 1, 593, 1, 593, 1, 593, 5, 593, 8919, 8, 593, 10, 593, 12, 593, 8922, 9, 593, 1, 594, 3, 594, 8925, 8, 594, 1, 594, 1, 594, 1, 595, 1, 595, 1, 595, 5, 595, 8932, 8, 595, 10, 595, 12, 595, 8935, 9, 595, 1, 596, 1, 596, 1, 596, 5, 596, 8940, 8, 596, 10, 596, 12, 596, 8943, 9, 596, 1, 597, 1, 597, 1, 597, 3, 597, 8948, 8, 597, 1, 598, 3, 598, 8951, 8, 598, 1, 598, 1, 598, 1, 599, 1, 599, 1, 599, 1, 599, 1, 599, 3, 599, 8960, 8, 599, 1, 600, 1, 600, 1, 600, 3, 600, 8965, 8, 600, 1, 601, 1, 601, 1, 601, 5, 601, 8970, 8, 601, 10, 601, 12, 601, 8973, 9, 601, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 3, 602, 8982, 8, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 3, 602, 9008, 8, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 1, 602, 3, 602, 9019, 8, 602, 5, 602, 9021, 8, 602, 10, 602, 12, 602, 9024, 9, 602, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9031, 8, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9054, 8, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 1, 603, 3, 603, 9062, 8, 603, 1, 604, 1, 604, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 3, 605, 9072, 8, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 1, 605, 3, 605, 9086, 8, 605, 1, 605, 1, 605, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 1, 606, 3, 606, 9096, 8, 606, 1, 607, 1, 607, 3, 607, 9100, 8, 607, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9114, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9121, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9128, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9135, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9160, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9189, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9228, 8, 608, 3, 608, 9230, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9258, 8, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 1, 608, 3, 608, 9279, 8, 608, 1, 609, 1, 609, 1, 609, 1, 609, 1, 609, 3, 609, 9286, 8, 609, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 1, 610, 3, 610, 9299, 8, 610, 1, 611, 1, 611, 1, 611, 1, 611, 1, 611, 1, 612, 1, 612, 1, 612, 5, 612, 9309, 8, 612, 10, 612, 12, 612, 9312, 9, 612, 1, 613, 1, 613, 1, 613, 3, 613, 9317, 8, 613, 1, 614, 1, 614, 1, 615, 1, 615, 1, 615, 1, 615, 1, 615, 3, 615, 9326, 8, 615, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 1, 616, 3, 616, 9343, 8, 616, 1, 617, 1, 617, 1, 617, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 1, 618, 3, 618, 9355, 8, 618, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 1, 619, 3, 619, 9364, 8, 619, 1, 620, 1, 620, 1, 620, 3, 620, 9369, 8, 620, 1, 621, 1, 621, 1, 621, 5, 621, 9374, 8, 621, 10, 621, 12, 621, 9377, 9, 621, 1, 622, 1, 622, 1, 622, 1, 622, 1, 623, 1, 623, 1, 623, 3, 623, 9386, 8, 623, 1, 623, 3, 623, 9389, 8, 623, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 624, 1, 625, 1, 625, 3, 625, 9400, 8, 625, 1, 626, 1, 626, 1, 626, 1, 626, 3, 626, 9406, 8, 626, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 1, 627, 3, 627, 9421, 8, 627, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 1, 628, 3, 628, 9429, 8, 628, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 1, 629, 3, 629, 9438, 8, 629, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 1, 630, 3, 630, 9447, 8, 630, 1, 630, 3, 630, 9450, 8, 630, 1, 631, 1, 631, 1, 631, 3, 631, 9455, 8, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 1, 631, 3, 631, 9464, 8, 631, 1, 632, 1, 632, 1, 632, 3, 632, 9469, 8, 632, 1, 632, 1, 632, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 633, 1, 634, 1, 634, 1, 635, 1, 635, 3, 635, 9483, 8, 635, 1, 636, 1, 636, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 1, 637, 3, 637, 9493, 8, 637, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 1, 638, 3, 638, 9501, 8, 638, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 1, 639, 3, 639, 9515, 8, 639, 1, 640, 1, 640, 1, 640, 5, 640, 9520, 8, 640, 10, 640, 12, 640, 9523, 9, 640, 1, 641, 1, 641, 1, 641, 5, 641, 9528, 8, 641, 10, 641, 12, 641, 9531, 9, 641, 1, 642, 1, 642, 1, 642, 1, 642, 1, 642, 3, 642, 9538, 8, 642, 1, 643, 1, 643, 1, 643, 5, 643, 9543, 8, 643, 10, 643, 12, 643, 9546, 9, 643, 1, 644, 1, 644, 1, 644, 3, 644, 9551, 8, 644, 1, 644, 1, 644, 1, 645, 1, 645, 1, 645, 5, 645, 9558, 8, 645, 10, 645, 12, 645, 9561, 9, 645, 1, 646, 1, 646, 1, 646, 1, 646, 1, 646, 3, 646, 9568, 8, 646, 1, 647, 1, 647, 1, 647, 1, 647, 1, 647, 1, 647, 1, 647, 1, 647, 3, 647, 9578, 8, 647, 1, 648, 1, 648, 1, 649, 1, 649, 1, 649, 1, 649, 1, 649, 1, 649, 1, 649, 3, 649, 9589, 8, 649, 1, 650, 1, 650, 1, 650, 1, 650, 1, 650, 3, 650, 9596, 8, 650, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 1, 651, 3, 651, 9625, 8, 651, 1, 652, 1, 652, 1, 652, 1, 652, 1, 652, 1, 652, 1, 652, 3, 652, 9634, 8, 652, 1, 653, 1, 653, 1, 653, 1, 653, 1, 653, 3, 653, 9641, 8, 653, 1, 654, 1, 654, 1, 654, 1, 654, 1, 654, 1, 654, 1, 655, 4, 655, 9650, 8, 655, 11, 655, 12, 655, 9651, 1, 656, 1, 656, 1, 656, 1, 656, 1, 656, 1, 657, 1, 657, 1, 657, 3, 657, 9662, 8, 657, 1, 658, 1, 658, 3, 658, 9666, 8, 658, 1, 659, 1, 659, 3, 659, 9670, 8, 659, 1, 660, 1, 660, 1, 660, 3, 660, 9675, 8, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 1, 660, 3, 660, 9683, 8, 660, 1, 660, 1, 660, 3, 660, 9687, 8, 660, 1, 661, 1, 661, 3, 661, 9691, 8, 661, 1, 662, 4, 662, 9694, 8, 662, 11, 662, 12, 662, 9695, 1, 663, 5, 663, 9699, 8, 663, 10, 663, 12, 663, 9702, 9, 663, 1, 664, 1, 664, 3, 664, 9706, 8, 664, 1, 665, 1, 665, 1, 665, 5, 665, 9711, 8, 665, 10, 665, 12, 665, 9714, 9, 665, 1, 666, 1, 666, 1, 666, 1, 666, 1, 666, 3, 666, 9721, 8, 666, 1, 666, 3, 666, 9724, 8, 666, 1, 667, 1, 667, 1, 667, 5, 667, 9729, 8, 667, 10, 667, 12, 667, 9732, 9, 667, 1, 668, 1, 668, 3, 668, 9736, 8, 668, 1, 669, 1, 669, 1, 669, 5, 669, 9741, 8, 669, 10, 669, 12, 669, 9744, 9, 669, 1, 670, 1, 670, 1, 671, 1, 671, 1, 672, 1, 672, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 1, 673, 3, 673, 9759, 8, 673, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 3, 674, 9774, 8, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 1, 674, 3, 674, 9788, 8, 674, 1, 674, 1, 674, 1, 674, 3, 674, 9793, 8, 674, 1, 675, 1, 675, 1, 676, 1, 676, 1, 677, 1, 677, 1, 678, 1, 678, 1, 679, 1, 679, 1, 679, 1, 680, 1, 680, 1, 680, 1, 680, 5, 680, 9810, 8, 680, 10, 680, 12, 680, 9813, 9, 680, 1, 680, 1, 680, 3, 680, 9817, 8, 680, 1, 681, 1, 681, 1, 681, 3, 681, 9822, 8, 681, 1, 682, 1, 682, 1, 682, 1, 682, 1, 682, 3, 682, 9829, 8, 682, 1, 683, 1, 683, 1, 684, 1, 684, 1, 684, 3, 684, 9836, 8, 684, 1, 685, 1, 685, 1, 685, 5, 685, 9841, 8, 685, 10, 685, 12, 685, 9844, 9, 685, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 1, 686, 3, 686, 9852, 8, 686, 1, 687, 1, 687, 1, 687, 1, 687, 3, 687, 9858, 8, 687, 1, 688, 1, 688, 1, 688, 1, 688, 3, 688, 9864, 8, 688, 1, 689, 1, 689, 1, 689, 1, 689, 3, 689, 9870, 8, 689, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 1, 690, 3, 690, 9878, 8, 690, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 1, 691, 3, 691, 9887, 8, 691, 1, 692, 1, 692, 1, 693, 1, 693, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 1, 694, 3, 694, 9945, 8, 694, 1, 695, 1, 695, 1, 696, 1, 696, 1, 697, 1, 697, 1, 698, 1, 698, 1, 698, 1, 698, 1, 699, 5, 699, 9958, 8, 699, 10, 699, 12, 699, 9961, 9, 699, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 1, 700, 3, 700, 9983, 8, 700, 1, 701, 1, 701, 1, 702, 1, 702, 1, 702, 1, 702, 3, 702, 9991, 8, 702, 1, 703, 1, 703, 3, 703, 9995, 8, 703, 1, 704, 1, 704, 1, 704, 1, 704, 1, 704, 1, 704, 1, 704, 1, 705, 1, 705, 1, 705, 3, 705, 10007, 8, 705, 3, 705, 10009, 8, 705, 1, 706, 1, 706, 1, 707, 4, 707, 10014, 8, 707, 11, 707, 12, 707, 10015, 1, 708, 1, 708, 1, 708, 1, 708, 1, 709, 1, 709, 1, 709, 3, 709, 10025, 8, 709, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 1, 710, 3, 710, 10043, 8, 710, 1, 710, 1, 710, 1, 711, 1, 711, 1, 711, 1, 711, 3, 711, 10051, 8, 711, 1, 712, 1, 712, 1, 713, 1, 713, 1, 713, 1, 713, 1, 713, 3, 713, 10060, 8, 713, 1, 714, 1, 714, 1, 714, 5, 714, 10065, 8, 714, 10, 714, 12, 714, 10068, 9, 714, 1, 715, 1, 715, 1, 715, 1, 716, 1, 716, 1, 717, 1, 717, 3, 717, 10077, 8, 717, 1, 718, 1, 718, 1, 719, 1, 719, 3, 719, 10083, 8, 719, 1, 720, 1, 720, 1, 721, 1, 721, 1, 721, 3, 721, 10090, 8, 721, 1, 722, 1, 722, 1, 722, 3, 722, 10095, 8, 722, 1, 723, 1, 723, 1, 723, 1, 723, 3, 723, 10101, 8, 723, 1, 724, 1, 724, 3, 724, 10105, 8, 724, 1, 725, 1, 725, 1, 726, 5, 726, 10110, 8, 726, 10, 726, 12, 726, 10113, 9, 726, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 1, 727, 3, 727, 10142, 8, 727, 1, 728, 1, 728, 1, 728, 1, 728, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 1, 729, 3, 729, 10162, 8, 729, 1, 730, 1, 730, 3, 730, 10166, 8, 730, 1, 731, 1, 731, 1, 731, 1, 731, 1, 731, 1, 732, 1, 732, 1, 732, 1, 732, 1, 732, 1, 732, 1, 733, 1, 733, 1, 733, 3, 733, 10182, 8, 733, 1, 734, 1, 734, 1, 734, 5, 734, 10187, 8, 734, 10, 734, 12, 734, 10190, 9, 734, 1, 735, 1, 735, 1, 735, 1, 735, 1, 736, 1, 736, 1, 737, 1, 737, 1, 738, 1, 738, 3, 738, 10202, 8, 738, 1, 738, 1, 738, 1, 738, 1, 738, 5, 738, 10208, 8, 738, 10, 738, 12, 738, 10211, 9, 738, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 739, 1, 740, 1, 740, 1, 740, 1, 740, 1, 740, 5, 740, 10228, 8, 740, 10, 740, 12, 740, 10231, 9, 740, 1, 741, 1, 741, 1, 741, 3, 741, 10236, 8, 741, 1, 742, 1, 742, 1, 742, 1, 742, 1, 742, 1, 742, 1, 742, 1, 742, 1, 743, 1, 743, 3, 743, 10248, 8, 743, 1, 744, 4, 744, 10251, 8, 744, 11, 744, 12, 744, 10252, 1, 745, 1, 745, 1, 745, 1, 745, 1, 745, 1, 746, 1, 746, 1, 746, 3, 746, 10263, 8, 746, 1, 747, 1, 747, 1, 747, 1, 748, 1, 748, 1, 748, 1, 748, 1, 748, 1, 749, 1, 749, 1, 749, 1, 749, 1, 749, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 1, 750, 3, 750, 10295, 8, 750, 1, 751, 1, 751, 1, 751, 3, 751, 10300, 8, 751, 1, 752, 1, 752, 1, 752, 1, 752, 1, 752, 5, 752, 10307, 8, 752, 10, 752, 12, 752, 10310, 9, 752, 1, 752, 1, 752, 3, 752, 10314, 8, 752, 1, 753, 1, 753, 3, 753, 10318, 8, 753, 1, 754, 1, 754, 1, 754, 3, 754, 10323, 8, 754, 1, 755, 1, 755, 1, 756, 1, 756, 1, 756, 1, 756, 1, 756, 1, 756, 1, 756, 1, 756, 1, 756, 1, 757, 1, 757, 1, 757, 3, 757, 10339, 8, 757, 1, 758, 1, 758, 1, 758, 1, 758, 1, 758, 1, 759, 1, 759, 1, 760, 1, 760, 1, 760, 1, 760, 1, 760, 1, 760, 1, 760, 1, 760, 1, 760, 3, 760, 10357, 8, 760, 1, 760, 3, 760, 10360, 8, 760, 1, 760, 1, 760, 1, 761, 1, 761, 3, 761, 10366, 8, 761, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 1, 762, 3, 762, 10394, 8, 762, 1, 763, 1, 763, 1, 763, 1, 763, 1, 763, 1, 763, 1, 763, 1, 763, 3, 763, 10404, 8, 763, 1, 764, 1, 764, 1, 764, 4, 764, 10409, 8, 764, 11, 764, 12, 764, 10410, 3, 764, 10413, 8, 764, 1, 765, 1, 765, 1, 765, 3, 765, 10418, 8, 765, 1, 766, 1, 766, 1, 766, 1, 766, 1, 767, 1, 767, 1, 767, 5, 767, 10427, 8, 767, 10, 767, 12, 767, 10430, 9, 767, 1, 768, 1, 768, 1, 768, 1, 768, 1, 768, 1, 769, 1, 769, 1, 769, 3, 769, 10440, 8, 769, 1, 770, 1, 770, 1, 770, 1, 770, 1, 770, 1, 770, 1, 770, 1, 771, 1, 771, 1, 771, 1, 772, 1, 772, 1, 772, 1, 772, 1, 772, 1, 772, 1, 772, 1, 772, 1, 772, 3, 772, 10461, 8, 772, 1, 772, 1, 772, 1, 773, 1, 773, 1, 773, 3, 773, 10468, 8, 773, 1, 774, 1, 774, 1, 774, 5, 774, 10473, 8, 774, 10, 774, 12, 774, 10476, 9, 774, 1, 775, 1, 775, 1, 775, 3, 775, 10481, 8, 775, 1, 775, 3, 775, 10484, 8, 775, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 3, 776, 10495, 8, 776, 1, 776, 1, 776, 1, 776, 1, 776, 1, 776, 3, 776, 10502, 8, 776, 3, 776, 10504, 8, 776, 1, 776, 1, 776, 1, 777, 1, 777, 1, 777, 1, 777, 1, 777, 3, 777, 10513, 8, 777, 1, 778, 1, 778, 1, 778, 5, 778, 10518, 8, 778, 10, 778, 12, 778, 10521, 9, 778, 1, 779, 1, 779, 1, 779, 3, 779, 10526, 8, 779, 1, 780, 1, 780, 1, 780, 1, 780, 3, 780, 10532, 8, 780, 1, 781, 1, 781, 3, 781, 10536, 8, 781, 1, 782, 1, 782, 1, 782, 1, 782, 1, 782, 1, 782, 1, 782, 1, 782, 1, 783, 1, 783, 1, 784, 1, 784, 1, 784, 3, 784, 10551, 8, 784, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 1, 785, 3, 785, 10568, 8, 785, 3, 785, 10570, 8, 785, 1, 786, 1, 786, 1, 786, 1, 786, 1, 786, 1, 787, 1, 787, 1, 787, 1, 787, 1, 788, 1, 788, 1, 788, 1, 789, 1, 789, 1, 789, 1, 789, 1, 790, 1, 790, 1, 790, 1, 790, 1, 791, 1, 791, 3, 791, 10594, 8, 791, 1, 791, 1, 791, 3, 791, 10598, 8, 791, 1, 792, 1, 792, 1, 792, 1, 792, 1, 792, 1, 792, 1, 792, 1, 792, 1, 792, 3, 792, 10609, 8, 792, 1, 792, 3, 792, 10612, 8, 792, 1, 793, 1, 793, 3, 793, 10616, 8, 793, 1, 794, 1, 794, 1, 794, 3, 794, 10621, 8, 794, 1, 795, 4, 795, 10624, 8, 795, 11, 795, 12, 795, 10625, 1, 796, 1, 796, 1, 796, 1, 796, 1, 796, 1, 797, 1, 797, 1, 797, 5, 797, 10636, 8, 797, 10, 797, 12, 797, 10639, 9, 797, 1, 798, 1, 798, 1, 798, 3, 798, 10644, 8, 798, 1, 799, 1, 799, 3, 799, 10648, 8, 799, 1, 800, 1, 800, 3, 800, 10652, 8, 800, 1, 801, 1, 801, 3, 801, 10656, 8, 801, 1, 802, 1, 802, 1, 802, 3, 802, 10661, 8, 802, 1, 803, 1, 803, 3, 803, 10665, 8, 803, 1, 804, 1, 804, 1, 805, 1, 805, 1, 805, 1, 805, 1, 805, 1, 805, 1, 805, 1, 805, 1, 806, 1, 806, 1, 807, 1, 807, 1, 808, 1, 808, 1, 809, 1, 809, 1, 810, 1, 810, 1, 810, 1, 811, 1, 811, 1, 811, 1, 811, 1, 811, 3, 811, 10693, 8, 811, 1, 811, 0, 1, 1204, 812, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172, 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258, 1260, 1262, 1264, 1266, 1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282, 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1384, 1386, 1388, 1390, 1392, 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, 1472, 1474, 1476, 1478, 1480, 1482, 1484, 1486, 1488, 1490, 1492, 1494, 1496, 1498, 1500, 1502, 1504, 1506, 1508, 1510, 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618, 1620, 1622, 0, 69, 2, 0, 195, 195, 357, 357, 2, 0, 66, 66, 311, 311, 2, 0, 99, 99, 311, 311, 3, 0, 66, 66, 99, 99, 311, 311, 2, 0, 133, 133, 191, 191, 2, 0, 245, 245, 325, 325, 2, 0, 10, 10, 94, 94, 2, 0, 162, 162, 356, 356, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 281, 281, 322, 322, 345, 345, 347, 347, 2, 0, 64, 64, 94, 94, 2, 0, 345, 345, 347, 347, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 335, 335, 338, 338, 438, 438, 3, 0, 113, 113, 277, 277, 329, 329, 2, 0, 53, 53, 78, 78, 3, 0, 173, 173, 252, 252, 255, 255, 5, 0, 30, 30, 88, 88, 182, 182, 232, 232, 362, 362, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 407, 407, 2, 0, 334, 334, 407, 407, 2, 0, 211, 211, 289, 289, 3, 0, 314, 314, 350, 350, 445, 445, 2, 0, 64, 64, 68, 68, 5, 0, 212, 212, 322, 322, 343, 343, 354, 354, 455, 456, 2, 0, 10, 10, 53, 53, 3, 0, 211, 211, 289, 289, 442, 442, 5, 0, 92, 92, 175, 175, 226, 226, 316, 316, 342, 342, 3, 0, 175, 175, 316, 316, 342, 342, 3, 0, 109, 109, 128, 128, 344, 344, 4, 0, 88, 88, 182, 182, 232, 232, 362, 362, 2, 0, 151, 151, 245, 245, 2, 0, 306, 306, 326, 326, 1, 0, 31, 32, 2, 0, 99, 99, 342, 342, 2, 0, 201, 201, 327, 327, 2, 0, 59, 59, 97, 97, 2, 0, 213, 213, 245, 245, 2, 0, 313, 313, 407, 407, 2, 0, 207, 207, 261, 261, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 353, 353, 477, 477, 2, 0, 384, 385, 399, 399, 1, 0, 384, 385, 1, 0, 411, 412, 1, 0, 18, 19, 2, 0, 117, 117, 122, 122, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 1, 0, 12, 13, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 30, 30, 56, 56, 3, 0, 39, 39, 73, 73, 95, 95, 2, 0, 166, 166, 188, 188, 2, 0, 297, 297, 450, 450, 2, 0, 208, 208, 282, 282, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 11, 0, 124, 124, 129, 249, 251, 252, 254, 303, 305, 379, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 478, 488, 5, 0, 106, 118, 120, 123, 125, 125, 127, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 5, 0, 304, 304, 418, 424, 504, 504, 513, 513, 521, 635, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 167, 167, 507, 507, 2, 0, 144, 144, 210, 210, 36, 0, 33, 33, 35, 35, 43, 45, 53, 53, 57, 57, 61, 61, 92, 92, 116, 116, 123, 123, 130, 130, 144, 144, 153, 153, 157, 157, 161, 161, 167, 167, 172, 172, 207, 207, 210, 210, 232, 232, 240, 240, 258, 258, 261, 262, 272, 272, 286, 286, 300, 300, 306, 306, 312, 312, 316, 317, 326, 326, 353, 353, 433, 434, 477, 477, 490, 502, 506, 512, 514, 518, 520, 520, 11556, 0, 1624, 1, 0, 0, 0, 2, 1627, 1, 0, 0, 0, 4, 1629, 1, 0, 0, 0, 6, 1637, 1, 0, 0, 0, 8, 1765, 1, 0, 0, 0, 10, 1767, 1, 0, 0, 0, 12, 1771, 1, 0, 0, 0, 14, 1774, 1, 0, 0, 0, 16, 1782, 1, 0, 0, 0, 18, 1787, 1, 0, 0, 0, 20, 1793, 1, 0, 0, 0, 22, 1814, 1, 0, 0, 0, 24, 1826, 1, 0, 0, 0, 26, 1828, 1, 0, 0, 0, 28, 1834, 1, 0, 0, 0, 30, 1844, 1, 0, 0, 0, 32, 1846, 1, 0, 0, 0, 34, 1855, 1, 0, 0, 0, 36, 1863, 1, 0, 0, 0, 38, 1869, 1, 0, 0, 0, 40, 1876, 1, 0, 0, 0, 42, 1878, 1, 0, 0, 0, 44, 1896, 1, 0, 0, 0, 46, 1901, 1, 0, 0, 0, 48, 1910, 1, 0, 0, 0, 50, 1912, 1, 0, 0, 0, 52, 1926, 1, 0, 0, 0, 54, 1928, 1, 0, 0, 0, 56, 1957, 1, 0, 0, 0, 58, 1959, 1, 0, 0, 0, 60, 1967, 1, 0, 0, 0, 62, 1977, 1, 0, 0, 0, 64, 1984, 1, 0, 0, 0, 66, 1990, 1, 0, 0, 0, 68, 2007, 1, 0, 0, 0, 70, 2012, 1, 0, 0, 0, 72, 2016, 1, 0, 0, 0, 74, 2018, 1, 0, 0, 0, 76, 2029, 1, 0, 0, 0, 78, 2033, 1, 0, 0, 0, 80, 2038, 1, 0, 0, 0, 82, 2043, 1, 0, 0, 0, 84, 2045, 1, 0, 0, 0, 86, 2057, 1, 0, 0, 0, 88, 2064, 1, 0, 0, 0, 90, 2066, 1, 0, 0, 0, 92, 2068, 1, 0, 0, 0, 94, 2070, 1, 0, 0, 0, 96, 2182, 1, 0, 0, 0, 98, 2184, 1, 0, 0, 0, 100, 2200, 1, 0, 0, 0, 102, 2202, 1, 0, 0, 0, 104, 2458, 1, 0, 0, 0, 106, 2465, 1, 0, 0, 0, 108, 2470, 1, 0, 0, 0, 110, 2475, 1, 0, 0, 0, 112, 2480, 1, 0, 0, 0, 114, 2488, 1, 0, 0, 0, 116, 2490, 1, 0, 0, 0, 118, 2497, 1, 0, 0, 0, 120, 2499, 1, 0, 0, 0, 122, 2507, 1, 0, 0, 0, 124, 2519, 1, 0, 0, 0, 126, 2535, 1, 0, 0, 0, 128, 2563, 1, 0, 0, 0, 130, 2565, 1, 0, 0, 0, 132, 2568, 1, 0, 0, 0, 134, 2576, 1, 0, 0, 0, 136, 2581, 1, 0, 0, 0, 138, 2612, 1, 0, 0, 0, 140, 2614, 1, 0, 0, 0, 142, 2641, 1, 0, 0, 0, 144, 2643, 1, 0, 0, 0, 146, 2647, 1, 0, 0, 0, 148, 2652, 1, 0, 0, 0, 150, 2659, 1, 0, 0, 0, 152, 2664, 1, 0, 0, 0, 154, 2702, 1, 0, 0, 0, 156, 2706, 1, 0, 0, 0, 158, 2713, 1, 0, 0, 0, 160, 2717, 1, 0, 0, 0, 162, 2719, 1, 0, 0, 0, 164, 2727, 1, 0, 0, 0, 166, 2738, 1, 0, 0, 0, 168, 2740, 1, 0, 0, 0, 170, 2748, 1, 0, 0, 0, 172, 2750, 1, 0, 0, 0, 174, 2799, 1, 0, 0, 0, 176, 2803, 1, 0, 0, 0, 178, 2810, 1, 0, 0, 0, 180, 2812, 1, 0, 0, 0, 182, 2820, 1, 0, 0, 0, 184, 2831, 1, 0, 0, 0, 186, 2835, 1, 0, 0, 0, 188, 2837, 1, 0, 0, 0, 190, 2842, 1, 0, 0, 0, 192, 2852, 1, 0, 0, 0, 194, 2863, 1, 0, 0, 0, 196, 2903, 1, 0, 0, 0, 198, 2908, 1, 0, 0, 0, 200, 2915, 1, 0, 0, 0, 202, 2917, 1, 0, 0, 0, 204, 2925, 1, 0, 0, 0, 206, 2928, 1, 0, 0, 0, 208, 2935, 1, 0, 0, 0, 210, 2995, 1, 0, 0, 0, 212, 3000, 1, 0, 0, 0, 214, 3007, 1, 0, 0, 0, 216, 3009, 1, 0, 0, 0, 218, 3017, 1, 0, 0, 0, 220, 3025, 1, 0, 0, 0, 222, 3030, 1, 0, 0, 0, 224, 3032, 1, 0, 0, 0, 226, 3040, 1, 0, 0, 0, 228, 3056, 1, 0, 0, 0, 230, 3067, 1, 0, 0, 0, 232, 3069, 1, 0, 0, 0, 234, 3073, 1, 0, 0, 0, 236, 3083, 1, 0, 0, 0, 238, 3091, 1, 0, 0, 0, 240, 3095, 1, 0, 0, 0, 242, 3097, 1, 0, 0, 0, 244, 3104, 1, 0, 0, 0, 246, 3126, 1, 0, 0, 0, 248, 3131, 1, 0, 0, 0, 250, 3138, 1, 0, 0, 0, 252, 3150, 1, 0, 0, 0, 254, 3155, 1, 0, 0, 0, 256, 3162, 1, 0, 0, 0, 258, 3164, 1, 0, 0, 0, 260, 3168, 1, 0, 0, 0, 262, 3182, 1, 0, 0, 0, 264, 3193, 1, 0, 0, 0, 266, 3206, 1, 0, 0, 0, 268, 3220, 1, 0, 0, 0, 270, 3222, 1, 0, 0, 0, 272, 3236, 1, 0, 0, 0, 274, 3244, 1, 0, 0, 0, 276, 3246, 1, 0, 0, 0, 278, 3253, 1, 0, 0, 0, 280, 3264, 1, 0, 0, 0, 282, 3275, 1, 0, 0, 0, 284, 3282, 1, 0, 0, 0, 286, 3285, 1, 0, 0, 0, 288, 3319, 1, 0, 0, 0, 290, 3323, 1, 0, 0, 0, 292, 3331, 1, 0, 0, 0, 294, 3333, 1, 0, 0, 0, 296, 3341, 1, 0, 0, 0, 298, 3356, 1, 0, 0, 0, 300, 3358, 1, 0, 0, 0, 302, 3365, 1, 0, 0, 0, 304, 3371, 1, 0, 0, 0, 306, 3375, 1, 0, 0, 0, 308, 3379, 1, 0, 0, 0, 310, 3381, 1, 0, 0, 0, 312, 3392, 1, 0, 0, 0, 314, 3394, 1, 0, 0, 0, 316, 3402, 1, 0, 0, 0, 318, 3416, 1, 0, 0, 0, 320, 3426, 1, 0, 0, 0, 322, 3428, 1, 0, 0, 0, 324, 3437, 1, 0, 0, 0, 326, 3440, 1, 0, 0, 0, 328, 3547, 1, 0, 0, 0, 330, 3549, 1, 0, 0, 0, 332, 3565, 1, 0, 0, 0, 334, 3568, 1, 0, 0, 0, 336, 3574, 1, 0, 0, 0, 338, 3591, 1, 0, 0, 0, 340, 3599, 1, 0, 0, 0, 342, 3601, 1, 0, 0, 0, 344, 3609, 1, 0, 0, 0, 346, 3614, 1, 0, 0, 0, 348, 3629, 1, 0, 0, 0, 350, 3631, 1, 0, 0, 0, 352, 3634, 1, 0, 0, 0, 354, 3636, 1, 0, 0, 0, 356, 3663, 1, 0, 0, 0, 358, 3668, 1, 0, 0, 0, 360, 3670, 1, 0, 0, 0, 362, 3677, 1, 0, 0, 0, 364, 3679, 1, 0, 0, 0, 366, 3745, 1, 0, 0, 0, 368, 3747, 1, 0, 0, 0, 370, 3762, 1, 0, 0, 0, 372, 3770, 1, 0, 0, 0, 374, 3793, 1, 0, 0, 0, 376, 3797, 1, 0, 0, 0, 378, 3817, 1, 0, 0, 0, 380, 3819, 1, 0, 0, 0, 382, 3828, 1, 0, 0, 0, 384, 3839, 1, 0, 0, 0, 386, 3854, 1, 0, 0, 0, 388, 3863, 1, 0, 0, 0, 390, 3868, 1, 0, 0, 0, 392, 3873, 1, 0, 0, 0, 394, 3878, 1, 0, 0, 0, 396, 3883, 1, 0, 0, 0, 398, 3885, 1, 0, 0, 0, 400, 3887, 1, 0, 0, 0, 402, 3896, 1, 0, 0, 0, 404, 3936, 1, 0, 0, 0, 406, 3942, 1, 0, 0, 0, 408, 3944, 1, 0, 0, 0, 410, 3959, 1, 0, 0, 0, 412, 3964, 1, 0, 0, 0, 414, 3967, 1, 0, 0, 0, 416, 3971, 1, 0, 0, 0, 418, 3976, 1, 0, 0, 0, 420, 3978, 1, 0, 0, 0, 422, 3980, 1, 0, 0, 0, 424, 3987, 1, 0, 0, 0, 426, 3991, 1, 0, 0, 0, 428, 3993, 1, 0, 0, 0, 430, 4001, 1, 0, 0, 0, 432, 4003, 1, 0, 0, 0, 434, 4007, 1, 0, 0, 0, 436, 4020, 1, 0, 0, 0, 438, 4025, 1, 0, 0, 0, 440, 4030, 1, 0, 0, 0, 442, 4044, 1, 0, 0, 0, 444, 4072, 1, 0, 0, 0, 446, 4074, 1, 0, 0, 0, 448, 4082, 1, 0, 0, 0, 450, 4088, 1, 0, 0, 0, 452, 4096, 1, 0, 0, 0, 454, 4108, 1, 0, 0, 0, 456, 4110, 1, 0, 0, 0, 458, 4225, 1, 0, 0, 0, 460, 4227, 1, 0, 0, 0, 462, 4231, 1, 0, 0, 0, 464, 4239, 1, 0, 0, 0, 466, 4250, 1, 0, 0, 0, 468, 4252, 1, 0, 0, 0, 470, 4256, 1, 0, 0, 0, 472, 4264, 1, 0, 0, 0, 474, 4270, 1, 0, 0, 0, 476, 4272, 1, 0, 0, 0, 478, 4317, 1, 0, 0, 0, 480, 4323, 1, 0, 0, 0, 482, 4325, 1, 0, 0, 0, 484, 4339, 1, 0, 0, 0, 486, 4372, 1, 0, 0, 0, 488, 4376, 1, 0, 0, 0, 490, 4381, 1, 0, 0, 0, 492, 4390, 1, 0, 0, 0, 494, 4394, 1, 0, 0, 0, 496, 4396, 1, 0, 0, 0, 498, 4421, 1, 0, 0, 0, 500, 4423, 1, 0, 0, 0, 502, 4443, 1, 0, 0, 0, 504, 4463, 1, 0, 0, 0, 506, 4483, 1, 0, 0, 0, 508, 4485, 1, 0, 0, 0, 510, 4491, 1, 0, 0, 0, 512, 4576, 1, 0, 0, 0, 514, 4601, 1, 0, 0, 0, 516, 4608, 1, 0, 0, 0, 518, 4624, 1, 0, 0, 0, 520, 4626, 1, 0, 0, 0, 522, 4628, 1, 0, 0, 0, 524, 4636, 1, 0, 0, 0, 526, 4642, 1, 0, 0, 0, 528, 4646, 1, 0, 0, 0, 530, 4654, 1, 0, 0, 0, 532, 4665, 1, 0, 0, 0, 534, 4814, 1, 0, 0, 0, 536, 4818, 1, 0, 0, 0, 538, 4911, 1, 0, 0, 0, 540, 4916, 1, 0, 0, 0, 542, 4920, 1, 0, 0, 0, 544, 4926, 1, 0, 0, 0, 546, 4994, 1, 0, 0, 0, 548, 4996, 1, 0, 0, 0, 550, 5000, 1, 0, 0, 0, 552, 5002, 1, 0, 0, 0, 554, 5029, 1, 0, 0, 0, 556, 5046, 1, 0, 0, 0, 558, 5048, 1, 0, 0, 0, 560, 5065, 1, 0, 0, 0, 562, 5125, 1, 0, 0, 0, 564, 5127, 1, 0, 0, 0, 566, 5138, 1, 0, 0, 0, 568, 5144, 1, 0, 0, 0, 570, 5146, 1, 0, 0, 0, 572, 5170, 1, 0, 0, 0, 574, 5176, 1, 0, 0, 0, 576, 5182, 1, 0, 0, 0, 578, 5184, 1, 0, 0, 0, 580, 5193, 1, 0, 0, 0, 582, 5205, 1, 0, 0, 0, 584, 5234, 1, 0, 0, 0, 586, 5236, 1, 0, 0, 0, 588, 5273, 1, 0, 0, 0, 590, 5277, 1, 0, 0, 0, 592, 5281, 1, 0, 0, 0, 594, 5285, 1, 0, 0, 0, 596, 5290, 1, 0, 0, 0, 598, 5292, 1, 0, 0, 0, 600, 5311, 1, 0, 0, 0, 602, 5324, 1, 0, 0, 0, 604, 5332, 1, 0, 0, 0, 606, 5334, 1, 0, 0, 0, 608, 5345, 1, 0, 0, 0, 610, 5349, 1, 0, 0, 0, 612, 5354, 1, 0, 0, 0, 614, 5361, 1, 0, 0, 0, 616, 5363, 1, 0, 0, 0, 618, 5384, 1, 0, 0, 0, 620, 5386, 1, 0, 0, 0, 622, 5392, 1, 0, 0, 0, 624, 5400, 1, 0, 0, 0, 626, 5416, 1, 0, 0, 0, 628, 5418, 1, 0, 0, 0, 630, 5424, 1, 0, 0, 0, 632, 5445, 1, 0, 0, 0, 634, 5454, 1, 0, 0, 0, 636, 5460, 1, 0, 0, 0, 638, 5462, 1, 0, 0, 0, 640, 5478, 1, 0, 0, 0, 642, 5480, 1, 0, 0, 0, 644, 5485, 1, 0, 0, 0, 646, 5487, 1, 0, 0, 0, 648, 5502, 1, 0, 0, 0, 650, 5510, 1, 0, 0, 0, 652, 5513, 1, 0, 0, 0, 654, 5522, 1, 0, 0, 0, 656, 5563, 1, 0, 0, 0, 658, 5573, 1, 0, 0, 0, 660, 5580, 1, 0, 0, 0, 662, 5582, 1, 0, 0, 0, 664, 5597, 1, 0, 0, 0, 666, 5599, 1, 0, 0, 0, 668, 5602, 1, 0, 0, 0, 670, 5610, 1, 0, 0, 0, 672, 5617, 1, 0, 0, 0, 674, 5623, 1, 0, 0, 0, 676, 5661, 1, 0, 0, 0, 678, 5675, 1, 0, 0, 0, 680, 5689, 1, 0, 0, 0, 682, 5713, 1, 0, 0, 0, 684, 5720, 1, 0, 0, 0, 686, 5725, 1, 0, 0, 0, 688, 5733, 1, 0, 0, 0, 690, 5736, 1, 0, 0, 0, 692, 5740, 1, 0, 0, 0, 694, 5747, 1, 0, 0, 0, 696, 5783, 1, 0, 0, 0, 698, 5790, 1, 0, 0, 0, 700, 5792, 1, 0, 0, 0, 702, 5805, 1, 0, 0, 0, 704, 5807, 1, 0, 0, 0, 706, 5852, 1, 0, 0, 0, 708, 5854, 1, 0, 0, 0, 710, 5889, 1, 0, 0, 0, 712, 5891, 1, 0, 0, 0, 714, 5893, 1, 0, 0, 0, 716, 5895, 1, 0, 0, 0, 718, 5903, 1, 0, 0, 0, 720, 5917, 1, 0, 0, 0, 722, 6387, 1, 0, 0, 0, 724, 6391, 1, 0, 0, 0, 726, 6396, 1, 0, 0, 0, 728, 6455, 1, 0, 0, 0, 730, 6459, 1, 0, 0, 0, 732, 6678, 1, 0, 0, 0, 734, 6680, 1, 0, 0, 0, 736, 6688, 1, 0, 0, 0, 738, 6704, 1, 0, 0, 0, 740, 6711, 1, 0, 0, 0, 742, 6713, 1, 0, 0, 0, 744, 6904, 1, 0, 0, 0, 746, 6906, 1, 0, 0, 0, 748, 6914, 1, 0, 0, 0, 750, 6922, 1, 0, 0, 0, 752, 6951, 1, 0, 0, 0, 754, 6953, 1, 0, 0, 0, 756, 6962, 1, 0, 0, 0, 758, 6970, 1, 0, 0, 0, 760, 7009, 1, 0, 0, 0, 762, 7023, 1, 0, 0, 0, 764, 7025, 1, 0, 0, 0, 766, 7045, 1, 0, 0, 0, 768, 7047, 1, 0, 0, 0, 770, 7060, 1, 0, 0, 0, 772, 7064, 1, 0, 0, 0, 774, 7066, 1, 0, 0, 0, 776, 7071, 1, 0, 0, 0, 778, 7073, 1, 0, 0, 0, 780, 7080, 1, 0, 0, 0, 782, 7082, 1, 0, 0, 0, 784, 7089, 1, 0, 0, 0, 786, 7141, 1, 0, 0, 0, 788, 7146, 1, 0, 0, 0, 790, 7158, 1, 0, 0, 0, 792, 7160, 1, 0, 0, 0, 794, 7172, 1, 0, 0, 0, 796, 7180, 1, 0, 0, 0, 798, 7182, 1, 0, 0, 0, 800, 7214, 1, 0, 0, 0, 802, 7216, 1, 0, 0, 0, 804, 7219, 1, 0, 0, 0, 806, 7227, 1, 0, 0, 0, 808, 7230, 1, 0, 0, 0, 810, 7234, 1, 0, 0, 0, 812, 7249, 1, 0, 0, 0, 814, 7253, 1, 0, 0, 0, 816, 7255, 1, 0, 0, 0, 818, 7266, 1, 0, 0, 0, 820, 7271, 1, 0, 0, 0, 822, 7285, 1, 0, 0, 0, 824, 7293, 1, 0, 0, 0, 826, 7295, 1, 0, 0, 0, 828, 7301, 1, 0, 0, 0, 830, 7306, 1, 0, 0, 0, 832, 7313, 1, 0, 0, 0, 834, 7341, 1, 0, 0, 0, 836, 7343, 1, 0, 0, 0, 838, 7422, 1, 0, 0, 0, 840, 7424, 1, 0, 0, 0, 842, 7426, 1, 0, 0, 0, 844, 7450, 1, 0, 0, 0, 846, 7455, 1, 0, 0, 0, 848, 7470, 1, 0, 0, 0, 850, 7482, 1, 0, 0, 0, 852, 7484, 1, 0, 0, 0, 854, 7492, 1, 0, 0, 0, 856, 7494, 1, 0, 0, 0, 858, 7499, 1, 0, 0, 0, 860, 7504, 1, 0, 0, 0, 862, 7508, 1, 0, 0, 0, 864, 7512, 1, 0, 0, 0, 866, 7516, 1, 0, 0, 0, 868, 7520, 1, 0, 0, 0, 870, 7527, 1, 0, 0, 0, 872, 7529, 1, 0, 0, 0, 874, 7532, 1, 0, 0, 0, 876, 7542, 1, 0, 0, 0, 878, 7560, 1, 0, 0, 0, 880, 7571, 1, 0, 0, 0, 882, 7573, 1, 0, 0, 0, 884, 7581, 1, 0, 0, 0, 886, 7586, 1, 0, 0, 0, 888, 7591, 1, 0, 0, 0, 890, 7593, 1, 0, 0, 0, 892, 7604, 1, 0, 0, 0, 894, 7610, 1, 0, 0, 0, 896, 7639, 1, 0, 0, 0, 898, 7646, 1, 0, 0, 0, 900, 7658, 1, 0, 0, 0, 902, 7660, 1, 0, 0, 0, 904, 7668, 1, 0, 0, 0, 906, 7692, 1, 0, 0, 0, 908, 7694, 1, 0, 0, 0, 910, 7696, 1, 0, 0, 0, 912, 7704, 1, 0, 0, 0, 914, 7720, 1, 0, 0, 0, 916, 7731, 1, 0, 0, 0, 918, 7736, 1, 0, 0, 0, 920, 7738, 1, 0, 0, 0, 922, 7769, 1, 0, 0, 0, 924, 7788, 1, 0, 0, 0, 926, 7801, 1, 0, 0, 0, 928, 7808, 1, 0, 0, 0, 930, 7819, 1, 0, 0, 0, 932, 7821, 1, 0, 0, 0, 934, 7832, 1, 0, 0, 0, 936, 7846, 1, 0, 0, 0, 938, 7850, 1, 0, 0, 0, 940, 7856, 1, 0, 0, 0, 942, 7858, 1, 0, 0, 0, 944, 7867, 1, 0, 0, 0, 946, 7885, 1, 0, 0, 0, 948, 7887, 1, 0, 0, 0, 950, 7890, 1, 0, 0, 0, 952, 7898, 1, 0, 0, 0, 954, 7906, 1, 0, 0, 0, 956, 7915, 1, 0, 0, 0, 958, 7923, 1, 0, 0, 0, 960, 7927, 1, 0, 0, 0, 962, 7937, 1, 0, 0, 0, 964, 7960, 1, 0, 0, 0, 966, 7962, 1, 0, 0, 0, 968, 7972, 1, 0, 0, 0, 970, 8003, 1, 0, 0, 0, 972, 8005, 1, 0, 0, 0, 974, 8011, 1, 0, 0, 0, 976, 8019, 1, 0, 0, 0, 978, 8031, 1, 0, 0, 0, 980, 8035, 1, 0, 0, 0, 982, 8045, 1, 0, 0, 0, 984, 8049, 1, 0, 0, 0, 986, 8065, 1, 0, 0, 0, 988, 8069, 1, 0, 0, 0, 990, 8074, 1, 0, 0, 0, 992, 8076, 1, 0, 0, 0, 994, 8086, 1, 0, 0, 0, 996, 8090, 1, 0, 0, 0, 998, 8092, 1, 0, 0, 0, 1000, 8096, 1, 0, 0, 0, 1002, 8104, 1, 0, 0, 0, 1004, 8120, 1, 0, 0, 0, 1006, 8124, 1, 0, 0, 0, 1008, 8149, 1, 0, 0, 0, 1010, 8151, 1, 0, 0, 0, 1012, 8160, 1, 0, 0, 0, 1014, 8162, 1, 0, 0, 0, 1016, 8169, 1, 0, 0, 0, 1018, 8173, 1, 0, 0, 0, 1020, 8175, 1, 0, 0, 0, 1022, 8177, 1, 0, 0, 0, 1024, 8183, 1, 0, 0, 0, 1026, 8185, 1, 0, 0, 0, 1028, 8198, 1, 0, 0, 0, 1030, 8200, 1, 0, 0, 0, 1032, 8203, 1, 0, 0, 0, 1034, 8208, 1, 0, 0, 0, 1036, 8213, 1, 0, 0, 0, 1038, 8222, 1, 0, 0, 0, 1040, 8228, 1, 0, 0, 0, 1042, 8232, 1, 0, 0, 0, 1044, 8235, 1, 0, 0, 0, 1046, 8239, 1, 0, 0, 0, 1048, 8243, 1, 0, 0, 0, 1050, 8258, 1, 0, 0, 0, 1052, 8260, 1, 0, 0, 0, 1054, 8277, 1, 0, 0, 0, 1056, 8288, 1, 0, 0, 0, 1058, 8290, 1, 0, 0, 0, 1060, 8346, 1, 0, 0, 0, 1062, 8370, 1, 0, 0, 0, 1064, 8381, 1, 0, 0, 0, 1066, 8384, 1, 0, 0, 0, 1068, 8406, 1, 0, 0, 0, 1070, 8408, 1, 0, 0, 0, 1072, 8419, 1, 0, 0, 0, 1074, 8433, 1, 0, 0, 0, 1076, 8435, 1, 0, 0, 0, 1078, 8443, 1, 0, 0, 0, 1080, 8450, 1, 0, 0, 0, 1082, 8463, 1, 0, 0, 0, 1084, 8475, 1, 0, 0, 0, 1086, 8477, 1, 0, 0, 0, 1088, 8480, 1, 0, 0, 0, 1090, 8494, 1, 0, 0, 0, 1092, 8499, 1, 0, 0, 0, 1094, 8504, 1, 0, 0, 0, 1096, 8514, 1, 0, 0, 0, 1098, 8518, 1, 0, 0, 0, 1100, 8520, 1, 0, 0, 0, 1102, 8528, 1, 0, 0, 0, 1104, 8532, 1, 0, 0, 0, 1106, 8553, 1, 0, 0, 0, 1108, 8561, 1, 0, 0, 0, 1110, 8571, 1, 0, 0, 0, 1112, 8583, 1, 0, 0, 0, 1114, 8585, 1, 0, 0, 0, 1116, 8599, 1, 0, 0, 0, 1118, 8619, 1, 0, 0, 0, 1120, 8628, 1, 0, 0, 0, 1122, 8644, 1, 0, 0, 0, 1124, 8650, 1, 0, 0, 0, 1126, 8656, 1, 0, 0, 0, 1128, 8668, 1, 0, 0, 0, 1130, 8686, 1, 0, 0, 0, 1132, 8693, 1, 0, 0, 0, 1134, 8697, 1, 0, 0, 0, 1136, 8701, 1, 0, 0, 0, 1138, 8703, 1, 0, 0, 0, 1140, 8709, 1, 0, 0, 0, 1142, 8712, 1, 0, 0, 0, 1144, 8719, 1, 0, 0, 0, 1146, 8732, 1, 0, 0, 0, 1148, 8736, 1, 0, 0, 0, 1150, 8738, 1, 0, 0, 0, 1152, 8747, 1, 0, 0, 0, 1154, 8756, 1, 0, 0, 0, 1156, 8784, 1, 0, 0, 0, 1158, 8786, 1, 0, 0, 0, 1160, 8796, 1, 0, 0, 0, 1162, 8798, 1, 0, 0, 0, 1164, 8800, 1, 0, 0, 0, 1166, 8804, 1, 0, 0, 0, 1168, 8812, 1, 0, 0, 0, 1170, 8820, 1, 0, 0, 0, 1172, 8828, 1, 0, 0, 0, 1174, 8842, 1, 0, 0, 0, 1176, 8851, 1, 0, 0, 0, 1178, 8855, 1, 0, 0, 0, 1180, 8859, 1, 0, 0, 0, 1182, 8885, 1, 0, 0, 0, 1184, 8899, 1, 0, 0, 0, 1186, 8914, 1, 0, 0, 0, 1188, 8924, 1, 0, 0, 0, 1190, 8928, 1, 0, 0, 0, 1192, 8936, 1, 0, 0, 0, 1194, 8944, 1, 0, 0, 0, 1196, 8950, 1, 0, 0, 0, 1198, 8954, 1, 0, 0, 0, 1200, 8961, 1, 0, 0, 0, 1202, 8966, 1, 0, 0, 0, 1204, 8981, 1, 0, 0, 0, 1206, 9061, 1, 0, 0, 0, 1208, 9063, 1, 0, 0, 0, 1210, 9065, 1, 0, 0, 0, 1212, 9095, 1, 0, 0, 0, 1214, 9099, 1, 0, 0, 0, 1216, 9278, 1, 0, 0, 0, 1218, 9285, 1, 0, 0, 0, 1220, 9298, 1, 0, 0, 0, 1222, 9300, 1, 0, 0, 0, 1224, 9305, 1, 0, 0, 0, 1226, 9313, 1, 0, 0, 0, 1228, 9318, 1, 0, 0, 0, 1230, 9325, 1, 0, 0, 0, 1232, 9342, 1, 0, 0, 0, 1234, 9344, 1, 0, 0, 0, 1236, 9354, 1, 0, 0, 0, 1238, 9363, 1, 0, 0, 0, 1240, 9368, 1, 0, 0, 0, 1242, 9370, 1, 0, 0, 0, 1244, 9378, 1, 0, 0, 0, 1246, 9388, 1, 0, 0, 0, 1248, 9390, 1, 0, 0, 0, 1250, 9399, 1, 0, 0, 0, 1252, 9405, 1, 0, 0, 0, 1254, 9420, 1, 0, 0, 0, 1256, 9428, 1, 0, 0, 0, 1258, 9437, 1, 0, 0, 0, 1260, 9449, 1, 0, 0, 0, 1262, 9463, 1, 0, 0, 0, 1264, 9465, 1, 0, 0, 0, 1266, 9472, 1, 0, 0, 0, 1268, 9478, 1, 0, 0, 0, 1270, 9482, 1, 0, 0, 0, 1272, 9484, 1, 0, 0, 0, 1274, 9492, 1, 0, 0, 0, 1276, 9500, 1, 0, 0, 0, 1278, 9514, 1, 0, 0, 0, 1280, 9516, 1, 0, 0, 0, 1282, 9524, 1, 0, 0, 0, 1284, 9537, 1, 0, 0, 0, 1286, 9539, 1, 0, 0, 0, 1288, 9547, 1, 0, 0, 0, 1290, 9554, 1, 0, 0, 0, 1292, 9567, 1, 0, 0, 0, 1294, 9577, 1, 0, 0, 0, 1296, 9579, 1, 0, 0, 0, 1298, 9581, 1, 0, 0, 0, 1300, 9595, 1, 0, 0, 0, 1302, 9624, 1, 0, 0, 0, 1304, 9633, 1, 0, 0, 0, 1306, 9640, 1, 0, 0, 0, 1308, 9642, 1, 0, 0, 0, 1310, 9649, 1, 0, 0, 0, 1312, 9653, 1, 0, 0, 0, 1314, 9661, 1, 0, 0, 0, 1316, 9665, 1, 0, 0, 0, 1318, 9667, 1, 0, 0, 0, 1320, 9686, 1, 0, 0, 0, 1322, 9690, 1, 0, 0, 0, 1324, 9693, 1, 0, 0, 0, 1326, 9700, 1, 0, 0, 0, 1328, 9705, 1, 0, 0, 0, 1330, 9707, 1, 0, 0, 0, 1332, 9723, 1, 0, 0, 0, 1334, 9725, 1, 0, 0, 0, 1336, 9733, 1, 0, 0, 0, 1338, 9737, 1, 0, 0, 0, 1340, 9745, 1, 0, 0, 0, 1342, 9747, 1, 0, 0, 0, 1344, 9749, 1, 0, 0, 0, 1346, 9758, 1, 0, 0, 0, 1348, 9792, 1, 0, 0, 0, 1350, 9794, 1, 0, 0, 0, 1352, 9796, 1, 0, 0, 0, 1354, 9798, 1, 0, 0, 0, 1356, 9800, 1, 0, 0, 0, 1358, 9802, 1, 0, 0, 0, 1360, 9816, 1, 0, 0, 0, 1362, 9821, 1, 0, 0, 0, 1364, 9828, 1, 0, 0, 0, 1366, 9830, 1, 0, 0, 0, 1368, 9835, 1, 0, 0, 0, 1370, 9837, 1, 0, 0, 0, 1372, 9851, 1, 0, 0, 0, 1374, 9857, 1, 0, 0, 0, 1376, 9863, 1, 0, 0, 0, 1378, 9869, 1, 0, 0, 0, 1380, 9877, 1, 0, 0, 0, 1382, 9886, 1, 0, 0, 0, 1384, 9888, 1, 0, 0, 0, 1386, 9890, 1, 0, 0, 0, 1388, 9944, 1, 0, 0, 0, 1390, 9946, 1, 0, 0, 0, 1392, 9948, 1, 0, 0, 0, 1394, 9950, 1, 0, 0, 0, 1396, 9952, 1, 0, 0, 0, 1398, 9959, 1, 0, 0, 0, 1400, 9982, 1, 0, 0, 0, 1402, 9984, 1, 0, 0, 0, 1404, 9990, 1, 0, 0, 0, 1406, 9994, 1, 0, 0, 0, 1408, 9996, 1, 0, 0, 0, 1410, 10003, 1, 0, 0, 0, 1412, 10010, 1, 0, 0, 0, 1414, 10013, 1, 0, 0, 0, 1416, 10017, 1, 0, 0, 0, 1418, 10024, 1, 0, 0, 0, 1420, 10026, 1, 0, 0, 0, 1422, 10050, 1, 0, 0, 0, 1424, 10052, 1, 0, 0, 0, 1426, 10059, 1, 0, 0, 0, 1428, 10061, 1, 0, 0, 0, 1430, 10069, 1, 0, 0, 0, 1432, 10072, 1, 0, 0, 0, 1434, 10076, 1, 0, 0, 0, 1436, 10078, 1, 0, 0, 0, 1438, 10082, 1, 0, 0, 0, 1440, 10084, 1, 0, 0, 0, 1442, 10089, 1, 0, 0, 0, 1444, 10094, 1, 0, 0, 0, 1446, 10100, 1, 0, 0, 0, 1448, 10104, 1, 0, 0, 0, 1450, 10106, 1, 0, 0, 0, 1452, 10111, 1, 0, 0, 0, 1454, 10141, 1, 0, 0, 0, 1456, 10143, 1, 0, 0, 0, 1458, 10161, 1, 0, 0, 0, 1460, 10165, 1, 0, 0, 0, 1462, 10167, 1, 0, 0, 0, 1464, 10172, 1, 0, 0, 0, 1466, 10181, 1, 0, 0, 0, 1468, 10183, 1, 0, 0, 0, 1470, 10191, 1, 0, 0, 0, 1472, 10195, 1, 0, 0, 0, 1474, 10197, 1, 0, 0, 0, 1476, 10201, 1, 0, 0, 0, 1478, 10212, 1, 0, 0, 0, 1480, 10229, 1, 0, 0, 0, 1482, 10235, 1, 0, 0, 0, 1484, 10237, 1, 0, 0, 0, 1486, 10247, 1, 0, 0, 0, 1488, 10250, 1, 0, 0, 0, 1490, 10254, 1, 0, 0, 0, 1492, 10262, 1, 0, 0, 0, 1494, 10264, 1, 0, 0, 0, 1496, 10267, 1, 0, 0, 0, 1498, 10272, 1, 0, 0, 0, 1500, 10277, 1, 0, 0, 0, 1502, 10299, 1, 0, 0, 0, 1504, 10313, 1, 0, 0, 0, 1506, 10317, 1, 0, 0, 0, 1508, 10322, 1, 0, 0, 0, 1510, 10324, 1, 0, 0, 0, 1512, 10326, 1, 0, 0, 0, 1514, 10338, 1, 0, 0, 0, 1516, 10340, 1, 0, 0, 0, 1518, 10345, 1, 0, 0, 0, 1520, 10347, 1, 0, 0, 0, 1522, 10365, 1, 0, 0, 0, 1524, 10393, 1, 0, 0, 0, 1526, 10403, 1, 0, 0, 0, 1528, 10412, 1, 0, 0, 0, 1530, 10417, 1, 0, 0, 0, 1532, 10419, 1, 0, 0, 0, 1534, 10423, 1, 0, 0, 0, 1536, 10431, 1, 0, 0, 0, 1538, 10439, 1, 0, 0, 0, 1540, 10441, 1, 0, 0, 0, 1542, 10448, 1, 0, 0, 0, 1544, 10451, 1, 0, 0, 0, 1546, 10467, 1, 0, 0, 0, 1548, 10469, 1, 0, 0, 0, 1550, 10483, 1, 0, 0, 0, 1552, 10485, 1, 0, 0, 0, 1554, 10512, 1, 0, 0, 0, 1556, 10514, 1, 0, 0, 0, 1558, 10525, 1, 0, 0, 0, 1560, 10531, 1, 0, 0, 0, 1562, 10535, 1, 0, 0, 0, 1564, 10537, 1, 0, 0, 0, 1566, 10545, 1, 0, 0, 0, 1568, 10550, 1, 0, 0, 0, 1570, 10569, 1, 0, 0, 0, 1572, 10571, 1, 0, 0, 0, 1574, 10576, 1, 0, 0, 0, 1576, 10580, 1, 0, 0, 0, 1578, 10583, 1, 0, 0, 0, 1580, 10587, 1, 0, 0, 0, 1582, 10597, 1, 0, 0, 0, 1584, 10611, 1, 0, 0, 0, 1586, 10615, 1, 0, 0, 0, 1588, 10620, 1, 0, 0, 0, 1590, 10623, 1, 0, 0, 0, 1592, 10627, 1, 0, 0, 0, 1594, 10632, 1, 0, 0, 0, 1596, 10643, 1, 0, 0, 0, 1598, 10647, 1, 0, 0, 0, 1600, 10651, 1, 0, 0, 0, 1602, 10655, 1, 0, 0, 0, 1604, 10660, 1, 0, 0, 0, 1606, 10664, 1, 0, 0, 0, 1608, 10666, 1, 0, 0, 0, 1610, 10668, 1, 0, 0, 0, 1612, 10676, 1, 0, 0, 0, 1614, 10678, 1, 0, 0, 0, 1616, 10680, 1, 0, 0, 0, 1618, 10682, 1, 0, 0, 0, 1620, 10684, 1, 0, 0, 0, 1622, 10692, 1, 0, 0, 0, 1624, 1625, 3, 4, 2, 0, 1625, 1626, 5, 0, 0, 1, 1626, 1, 1, 0, 0, 0, 1627, 1628, 3, 1396, 698, 0, 1628, 3, 1, 0, 0, 0, 1629, 1630, 3, 6, 3, 0, 1630, 5, 1, 0, 0, 0, 1631, 1633, 3, 8, 4, 0, 1632, 1634, 5, 7, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1631, 1, 0, 0, 0, 1636, 1639, 1, 0, 0, 0, 1637, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 7, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1640, 1766, 3, 452, 226, 0, 1641, 1766, 3, 826, 413, 0, 1642, 1766, 3, 816, 408, 0, 1643, 1766, 3, 818, 409, 0, 1644, 1766, 3, 578, 289, 0, 1645, 1766, 3, 832, 416, 0, 1646, 1766, 3, 478, 239, 0, 1647, 1766, 3, 322, 161, 0, 1648, 1766, 3, 328, 164, 0, 1649, 1766, 3, 338, 169, 0, 1650, 1766, 3, 364, 182, 0, 1651, 1766, 3, 670, 335, 0, 1652, 1766, 3, 38, 19, 0, 1653, 1766, 3, 728, 364, 0, 1654, 1766, 3, 732, 366, 0, 1655, 1766, 3, 744, 372, 0, 1656, 1766, 3, 734, 367, 0, 1657, 1766, 3, 742, 371, 0, 1658, 1766, 3, 384, 192, 0, 1659, 1766, 3, 280, 140, 0, 1660, 1766, 3, 828, 414, 0, 1661, 1766, 3, 96, 48, 0, 1662, 1766, 3, 720, 360, 0, 1663, 1766, 3, 134, 67, 0, 1664, 1766, 3, 752, 376, 0, 1665, 1766, 3, 32, 16, 0, 1666, 1766, 3, 28, 14, 0, 1667, 1766, 3, 760, 380, 0, 1668, 1766, 3, 262, 131, 0, 1669, 1766, 3, 838, 419, 0, 1670, 1766, 3, 836, 418, 0, 1671, 1766, 3, 380, 190, 0, 1672, 1766, 3, 850, 425, 0, 1673, 1766, 3, 12, 6, 0, 1674, 1766, 3, 92, 46, 0, 1675, 1766, 3, 140, 70, 0, 1676, 1766, 3, 844, 422, 0, 1677, 1766, 3, 534, 267, 0, 1678, 1766, 3, 86, 43, 0, 1679, 1766, 3, 142, 71, 0, 1680, 1766, 3, 400, 200, 0, 1681, 1766, 3, 264, 132, 0, 1682, 1766, 3, 456, 228, 0, 1683, 1766, 3, 696, 348, 0, 1684, 1766, 3, 842, 421, 0, 1685, 1766, 3, 830, 415, 0, 1686, 1766, 3, 316, 158, 0, 1687, 1766, 3, 330, 165, 0, 1688, 1766, 3, 356, 178, 0, 1689, 1766, 3, 366, 183, 0, 1690, 1766, 3, 616, 308, 0, 1691, 1766, 3, 36, 18, 0, 1692, 1766, 3, 270, 135, 0, 1693, 1766, 3, 482, 241, 0, 1694, 1766, 3, 496, 248, 0, 1695, 1766, 3, 746, 373, 0, 1696, 1766, 3, 498, 249, 0, 1697, 1766, 3, 382, 191, 0, 1698, 1766, 3, 296, 148, 0, 1699, 1766, 3, 42, 21, 0, 1700, 1766, 3, 278, 139, 0, 1701, 1766, 3, 172, 86, 0, 1702, 1766, 3, 754, 377, 0, 1703, 1766, 3, 260, 130, 0, 1704, 1766, 3, 310, 155, 0, 1705, 1766, 3, 704, 352, 0, 1706, 1766, 3, 404, 202, 0, 1707, 1766, 3, 444, 222, 0, 1708, 1766, 3, 14, 7, 0, 1709, 1766, 3, 26, 13, 0, 1710, 1766, 3, 374, 187, 0, 1711, 1766, 3, 804, 402, 0, 1712, 1766, 3, 900, 450, 0, 1713, 1766, 3, 952, 476, 0, 1714, 1766, 3, 458, 229, 0, 1715, 1766, 3, 928, 464, 0, 1716, 1766, 3, 94, 47, 0, 1717, 1766, 3, 690, 345, 0, 1718, 1766, 3, 700, 350, 0, 1719, 1766, 3, 504, 252, 0, 1720, 1766, 3, 506, 253, 0, 1721, 1766, 3, 508, 254, 0, 1722, 1766, 3, 512, 256, 0, 1723, 1766, 3, 762, 381, 0, 1724, 1766, 3, 314, 157, 0, 1725, 1766, 3, 708, 354, 0, 1726, 1766, 3, 34, 17, 0, 1727, 1766, 3, 378, 189, 0, 1728, 1766, 3, 820, 410, 0, 1729, 1766, 3, 896, 448, 0, 1730, 1766, 3, 878, 439, 0, 1731, 1766, 3, 544, 272, 0, 1732, 1766, 3, 552, 276, 0, 1733, 1766, 3, 570, 285, 0, 1734, 1766, 3, 368, 184, 0, 1735, 1766, 3, 588, 294, 0, 1736, 1766, 3, 902, 451, 0, 1737, 1766, 3, 920, 460, 0, 1738, 1766, 3, 782, 391, 0, 1739, 1766, 3, 276, 138, 0, 1740, 1766, 3, 802, 401, 0, 1741, 1766, 3, 932, 466, 0, 1742, 1766, 3, 778, 389, 0, 1743, 1766, 3, 890, 445, 0, 1744, 1766, 3, 510, 255, 0, 1745, 1766, 3, 710, 355, 0, 1746, 1766, 3, 678, 339, 0, 1747, 1766, 3, 676, 338, 0, 1748, 1766, 3, 680, 340, 0, 1749, 1766, 3, 722, 361, 0, 1750, 1766, 3, 554, 277, 0, 1751, 1766, 3, 572, 286, 0, 1752, 1766, 3, 764, 382, 0, 1753, 1766, 3, 538, 269, 0, 1754, 1766, 3, 960, 480, 0, 1755, 1766, 3, 786, 393, 0, 1756, 1766, 3, 530, 265, 0, 1757, 1766, 3, 784, 392, 0, 1758, 1766, 3, 942, 471, 0, 1759, 1766, 3, 848, 424, 0, 1760, 1766, 3, 74, 37, 0, 1761, 1766, 3, 50, 25, 0, 1762, 1766, 3, 84, 42, 0, 1763, 1766, 3, 798, 399, 0, 1764, 1766, 3, 10, 5, 0, 1765, 1640, 1, 0, 0, 0, 1765, 1641, 1, 0, 0, 0, 1765, 1642, 1, 0, 0, 0, 1765, 1643, 1, 0, 0, 0, 1765, 1644, 1, 0, 0, 0, 1765, 1645, 1, 0, 0, 0, 1765, 1646, 1, 0, 0, 0, 1765, 1647, 1, 0, 0, 0, 1765, 1648, 1, 0, 0, 0, 1765, 1649, 1, 0, 0, 0, 1765, 1650, 1, 0, 0, 0, 1765, 1651, 1, 0, 0, 0, 1765, 1652, 1, 0, 0, 0, 1765, 1653, 1, 0, 0, 0, 1765, 1654, 1, 0, 0, 0, 1765, 1655, 1, 0, 0, 0, 1765, 1656, 1, 0, 0, 0, 1765, 1657, 1, 0, 0, 0, 1765, 1658, 1, 0, 0, 0, 1765, 1659, 1, 0, 0, 0, 1765, 1660, 1, 0, 0, 0, 1765, 1661, 1, 0, 0, 0, 1765, 1662, 1, 0, 0, 0, 1765, 1663, 1, 0, 0, 0, 1765, 1664, 1, 0, 0, 0, 1765, 1665, 1, 0, 0, 0, 1765, 1666, 1, 0, 0, 0, 1765, 1667, 1, 0, 0, 0, 1765, 1668, 1, 0, 0, 0, 1765, 1669, 1, 0, 0, 0, 1765, 1670, 1, 0, 0, 0, 1765, 1671, 1, 0, 0, 0, 1765, 1672, 1, 0, 0, 0, 1765, 1673, 1, 0, 0, 0, 1765, 1674, 1, 0, 0, 0, 1765, 1675, 1, 0, 0, 0, 1765, 1676, 1, 0, 0, 0, 1765, 1677, 1, 0, 0, 0, 1765, 1678, 1, 0, 0, 0, 1765, 1679, 1, 0, 0, 0, 1765, 1680, 1, 0, 0, 0, 1765, 1681, 1, 0, 0, 0, 1765, 1682, 1, 0, 0, 0, 1765, 1683, 1, 0, 0, 0, 1765, 1684, 1, 0, 0, 0, 1765, 1685, 1, 0, 0, 0, 1765, 1686, 1, 0, 0, 0, 1765, 1687, 1, 0, 0, 0, 1765, 1688, 1, 0, 0, 0, 1765, 1689, 1, 0, 0, 0, 1765, 1690, 1, 0, 0, 0, 1765, 1691, 1, 0, 0, 0, 1765, 1692, 1, 0, 0, 0, 1765, 1693, 1, 0, 0, 0, 1765, 1694, 1, 0, 0, 0, 1765, 1695, 1, 0, 0, 0, 1765, 1696, 1, 0, 0, 0, 1765, 1697, 1, 0, 0, 0, 1765, 1698, 1, 0, 0, 0, 1765, 1699, 1, 0, 0, 0, 1765, 1700, 1, 0, 0, 0, 1765, 1701, 1, 0, 0, 0, 1765, 1702, 1, 0, 0, 0, 1765, 1703, 1, 0, 0, 0, 1765, 1704, 1, 0, 0, 0, 1765, 1705, 1, 0, 0, 0, 1765, 1706, 1, 0, 0, 0, 1765, 1707, 1, 0, 0, 0, 1765, 1708, 1, 0, 0, 0, 1765, 1709, 1, 0, 0, 0, 1765, 1710, 1, 0, 0, 0, 1765, 1711, 1, 0, 0, 0, 1765, 1712, 1, 0, 0, 0, 1765, 1713, 1, 0, 0, 0, 1765, 1714, 1, 0, 0, 0, 1765, 1715, 1, 0, 0, 0, 1765, 1716, 1, 0, 0, 0, 1765, 1717, 1, 0, 0, 0, 1765, 1718, 1, 0, 0, 0, 1765, 1719, 1, 0, 0, 0, 1765, 1720, 1, 0, 0, 0, 1765, 1721, 1, 0, 0, 0, 1765, 1722, 1, 0, 0, 0, 1765, 1723, 1, 0, 0, 0, 1765, 1724, 1, 0, 0, 0, 1765, 1725, 1, 0, 0, 0, 1765, 1726, 1, 0, 0, 0, 1765, 1727, 1, 0, 0, 0, 1765, 1728, 1, 0, 0, 0, 1765, 1729, 1, 0, 0, 0, 1765, 1730, 1, 0, 0, 0, 1765, 1731, 1, 0, 0, 0, 1765, 1732, 1, 0, 0, 0, 1765, 1733, 1, 0, 0, 0, 1765, 1734, 1, 0, 0, 0, 1765, 1735, 1, 0, 0, 0, 1765, 1736, 1, 0, 0, 0, 1765, 1737, 1, 0, 0, 0, 1765, 1738, 1, 0, 0, 0, 1765, 1739, 1, 0, 0, 0, 1765, 1740, 1, 0, 0, 0, 1765, 1741, 1, 0, 0, 0, 1765, 1742, 1, 0, 0, 0, 1765, 1743, 1, 0, 0, 0, 1765, 1744, 1, 0, 0, 0, 1765, 1745, 1, 0, 0, 0, 1765, 1746, 1, 0, 0, 0, 1765, 1747, 1, 0, 0, 0, 1765, 1748, 1, 0, 0, 0, 1765, 1749, 1, 0, 0, 0, 1765, 1750, 1, 0, 0, 0, 1765, 1751, 1, 0, 0, 0, 1765, 1752, 1, 0, 0, 0, 1765, 1753, 1, 0, 0, 0, 1765, 1754, 1, 0, 0, 0, 1765, 1755, 1, 0, 0, 0, 1765, 1756, 1, 0, 0, 0, 1765, 1757, 1, 0, 0, 0, 1765, 1758, 1, 0, 0, 0, 1765, 1759, 1, 0, 0, 0, 1765, 1760, 1, 0, 0, 0, 1765, 1761, 1, 0, 0, 0, 1765, 1762, 1, 0, 0, 0, 1765, 1763, 1, 0, 0, 0, 1765, 1764, 1, 0, 0, 0, 1766, 9, 1, 0, 0, 0, 1767, 1769, 5, 668, 0, 0, 1768, 1770, 5, 669, 0, 0, 1769, 1768, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 11, 1, 0, 0, 0, 1771, 1772, 5, 433, 0, 0, 1772, 1773, 3, 1210, 605, 0, 1773, 13, 1, 0, 0, 0, 1774, 1775, 5, 46, 0, 0, 1775, 1776, 5, 311, 0, 0, 1776, 1777, 3, 1366, 683, 0, 1777, 1778, 3, 16, 8, 0, 1778, 1779, 3, 18, 9, 0, 1779, 15, 1, 0, 0, 0, 1780, 1783, 5, 105, 0, 0, 1781, 1783, 1, 0, 0, 0, 1782, 1780, 1, 0, 0, 0, 1782, 1781, 1, 0, 0, 0, 1783, 17, 1, 0, 0, 0, 1784, 1786, 3, 24, 12, 0, 1785, 1784, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 19, 1, 0, 0, 0, 1789, 1787, 1, 0, 0, 0, 1790, 1792, 3, 22, 11, 0, 1791, 1790, 1, 0, 0, 0, 1792, 1795, 1, 0, 0, 0, 1793, 1791, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 21, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1796, 1799, 5, 280, 0, 0, 1797, 1800, 3, 1358, 679, 0, 1798, 1800, 5, 78, 0, 0, 1799, 1797, 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 1815, 1, 0, 0, 0, 1801, 1802, 7, 0, 0, 0, 1802, 1803, 5, 280, 0, 0, 1803, 1815, 3, 1358, 679, 0, 1804, 1815, 5, 228, 0, 0, 1805, 1806, 5, 164, 0, 0, 1806, 1807, 5, 74, 0, 0, 1807, 1815, 3, 1364, 682, 0, 1808, 1809, 5, 364, 0, 0, 1809, 1810, 5, 361, 0, 0, 1810, 1815, 3, 1358, 679, 0, 1811, 1812, 5, 99, 0, 0, 1812, 1815, 3, 1370, 685, 0, 1813, 1815, 3, 1382, 691, 0, 1814, 1796, 1, 0, 0, 0, 1814, 1801, 1, 0, 0, 0, 1814, 1804, 1, 0, 0, 0, 1814, 1805, 1, 0, 0, 0, 1814, 1808, 1, 0, 0, 0, 1814, 1811, 1, 0, 0, 0, 1814, 1813, 1, 0, 0, 0, 1815, 23, 1, 0, 0, 0, 1816, 1827, 3, 22, 11, 0, 1817, 1818, 5, 341, 0, 0, 1818, 1827, 3, 1356, 678, 0, 1819, 1820, 5, 134, 0, 0, 1820, 1827, 3, 1370, 685, 0, 1821, 1822, 5, 311, 0, 0, 1822, 1827, 3, 1370, 685, 0, 1823, 1824, 5, 68, 0, 0, 1824, 1825, 7, 1, 0, 0, 1825, 1827, 3, 1370, 685, 0, 1826, 1816, 1, 0, 0, 0, 1826, 1817, 1, 0, 0, 0, 1826, 1819, 1, 0, 0, 0, 1826, 1821, 1, 0, 0, 0, 1826, 1823, 1, 0, 0, 0, 1827, 25, 1, 0, 0, 0, 1828, 1829, 5, 46, 0, 0, 1829, 1830, 5, 99, 0, 0, 1830, 1831, 3, 1366, 683, 0, 1831, 1832, 3, 16, 8, 0, 1832, 1833, 3, 18, 9, 0, 1833, 27, 1, 0, 0, 0, 1834, 1835, 5, 138, 0, 0, 1835, 1836, 7, 2, 0, 0, 1836, 1837, 3, 1368, 684, 0, 1837, 1838, 3, 16, 8, 0, 1838, 1839, 3, 20, 10, 0, 1839, 29, 1, 0, 0, 0, 1840, 1845, 1, 0, 0, 0, 1841, 1842, 5, 68, 0, 0, 1842, 1843, 5, 175, 0, 0, 1843, 1845, 3, 1340, 670, 0, 1844, 1840, 1, 0, 0, 0, 1844, 1841, 1, 0, 0, 0, 1845, 31, 1, 0, 0, 0, 1846, 1847, 5, 138, 0, 0, 1847, 1849, 7, 2, 0, 0, 1848, 1850, 5, 30, 0, 0, 1849, 1848, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1852, 3, 1368, 684, 0, 1852, 1853, 3, 30, 15, 0, 1853, 1854, 3, 80, 40, 0, 1854, 33, 1, 0, 0, 0, 1855, 1856, 5, 191, 0, 0, 1856, 1859, 7, 3, 0, 0, 1857, 1858, 5, 220, 0, 0, 1858, 1860, 5, 389, 0, 0, 1859, 1857, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1862, 3, 1370, 685, 0, 1862, 35, 1, 0, 0, 0, 1863, 1864, 5, 46, 0, 0, 1864, 1865, 5, 66, 0, 0, 1865, 1866, 3, 1366, 683, 0, 1866, 1867, 3, 16, 8, 0, 1867, 1868, 3, 18, 9, 0, 1868, 37, 1, 0, 0, 0, 1869, 1870, 5, 138, 0, 0, 1870, 1871, 5, 66, 0, 0, 1871, 1872, 3, 1368, 684, 0, 1872, 1873, 3, 40, 20, 0, 1873, 1874, 5, 99, 0, 0, 1874, 1875, 3, 1370, 685, 0, 1875, 39, 1, 0, 0, 0, 1876, 1877, 7, 4, 0, 0, 1877, 41, 1, 0, 0, 0, 1878, 1879, 5, 46, 0, 0, 1879, 1883, 5, 316, 0, 0, 1880, 1881, 5, 220, 0, 0, 1881, 1882, 5, 77, 0, 0, 1882, 1884, 5, 389, 0, 0, 1883, 1880, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1890, 1, 0, 0, 0, 1885, 1886, 3, 44, 22, 0, 1886, 1887, 5, 106, 0, 0, 1887, 1888, 3, 1368, 684, 0, 1888, 1891, 1, 0, 0, 0, 1889, 1891, 3, 1372, 686, 0, 1890, 1885, 1, 0, 0, 0, 1890, 1889, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1893, 3, 46, 23, 0, 1893, 43, 1, 0, 0, 0, 1894, 1897, 3, 1372, 686, 0, 1895, 1897, 1, 0, 0, 0, 1896, 1894, 1, 0, 0, 0, 1896, 1895, 1, 0, 0, 0, 1897, 45, 1, 0, 0, 0, 1898, 1900, 3, 48, 24, 0, 1899, 1898, 1, 0, 0, 0, 1900, 1903, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 47, 1, 0, 0, 0, 1903, 1901, 1, 0, 0, 0, 1904, 1911, 3, 172, 86, 0, 1905, 1911, 3, 588, 294, 0, 1906, 1911, 3, 278, 139, 0, 1907, 1911, 3, 404, 202, 0, 1908, 1911, 3, 552, 276, 0, 1909, 1911, 3, 798, 399, 0, 1910, 1904, 1, 0, 0, 0, 1910, 1905, 1, 0, 0, 0, 1910, 1906, 1, 0, 0, 0, 1910, 1907, 1, 0, 0, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1909, 1, 0, 0, 0, 1911, 49, 1, 0, 0, 0, 1912, 1914, 5, 326, 0, 0, 1913, 1915, 7, 5, 0, 0, 1914, 1913, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1917, 3, 52, 26, 0, 1917, 51, 1, 0, 0, 0, 1918, 1919, 5, 349, 0, 0, 1919, 1927, 3, 792, 396, 0, 1920, 1921, 5, 325, 0, 0, 1921, 1922, 5, 154, 0, 0, 1922, 1923, 5, 36, 0, 0, 1923, 1924, 5, 349, 0, 0, 1924, 1927, 3, 792, 396, 0, 1925, 1927, 3, 56, 28, 0, 1926, 1918, 1, 0, 0, 0, 1926, 1920, 1, 0, 0, 0, 1926, 1925, 1, 0, 0, 0, 1927, 53, 1, 0, 0, 0, 1928, 1929, 3, 58, 29, 0, 1929, 1930, 7, 6, 0, 0, 1930, 1931, 3, 60, 30, 0, 1931, 55, 1, 0, 0, 0, 1932, 1958, 3, 54, 27, 0, 1933, 1934, 3, 58, 29, 0, 1934, 1935, 5, 64, 0, 0, 1935, 1936, 5, 434, 0, 0, 1936, 1958, 1, 0, 0, 0, 1937, 1938, 5, 411, 0, 0, 1938, 1939, 5, 379, 0, 0, 1939, 1958, 3, 68, 34, 0, 1940, 1941, 5, 152, 0, 0, 1941, 1958, 3, 1358, 679, 0, 1942, 1943, 5, 316, 0, 0, 1943, 1958, 3, 1358, 679, 0, 1944, 1945, 5, 260, 0, 0, 1945, 1958, 3, 70, 35, 0, 1946, 1947, 5, 311, 0, 0, 1947, 1958, 3, 72, 36, 0, 1948, 1949, 5, 325, 0, 0, 1949, 1950, 5, 106, 0, 0, 1950, 1958, 3, 72, 36, 0, 1951, 1952, 5, 376, 0, 0, 1952, 1953, 5, 272, 0, 0, 1953, 1958, 3, 1228, 614, 0, 1954, 1955, 5, 349, 0, 0, 1955, 1956, 5, 330, 0, 0, 1956, 1958, 3, 1358, 679, 0, 1957, 1932, 1, 0, 0, 0, 1957, 1933, 1, 0, 0, 0, 1957, 1937, 1, 0, 0, 0, 1957, 1940, 1, 0, 0, 0, 1957, 1942, 1, 0, 0, 0, 1957, 1944, 1, 0, 0, 0, 1957, 1946, 1, 0, 0, 0, 1957, 1948, 1, 0, 0, 0, 1957, 1951, 1, 0, 0, 0, 1957, 1954, 1, 0, 0, 0, 1958, 57, 1, 0, 0, 0, 1959, 1964, 3, 1372, 686, 0, 1960, 1961, 5, 11, 0, 0, 1961, 1963, 3, 1372, 686, 0, 1962, 1960, 1, 0, 0, 0, 1963, 1966, 1, 0, 0, 0, 1964, 1962, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 59, 1, 0, 0, 0, 1966, 1964, 1, 0, 0, 0, 1967, 1972, 3, 62, 31, 0, 1968, 1969, 5, 6, 0, 0, 1969, 1971, 3, 62, 31, 0, 1970, 1968, 1, 0, 0, 0, 1971, 1974, 1, 0, 0, 0, 1972, 1970, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 61, 1, 0, 0, 0, 1974, 1972, 1, 0, 0, 0, 1975, 1978, 3, 66, 33, 0, 1976, 1978, 3, 292, 146, 0, 1977, 1975, 1, 0, 0, 0, 1977, 1976, 1, 0, 0, 0, 1978, 63, 1, 0, 0, 0, 1979, 1980, 5, 293, 0, 0, 1980, 1985, 7, 7, 0, 0, 1981, 1982, 5, 303, 0, 0, 1982, 1985, 5, 293, 0, 0, 1983, 1985, 5, 323, 0, 0, 1984, 1979, 1, 0, 0, 0, 1984, 1981, 1, 0, 0, 0, 1984, 1983, 1, 0, 0, 0, 1985, 65, 1, 0, 0, 0, 1986, 1991, 5, 96, 0, 0, 1987, 1991, 5, 60, 0, 0, 1988, 1991, 5, 80, 0, 0, 1989, 1991, 3, 72, 36, 0, 1990, 1986, 1, 0, 0, 0, 1990, 1987, 1, 0, 0, 0, 1990, 1988, 1, 0, 0, 0, 1990, 1989, 1, 0, 0, 0, 1991, 67, 1, 0, 0, 0, 1992, 2008, 3, 1358, 679, 0, 1993, 2008, 3, 1382, 691, 0, 1994, 1995, 3, 1152, 576, 0, 1995, 1996, 3, 1358, 679, 0, 1996, 1997, 3, 1156, 578, 0, 1997, 2008, 1, 0, 0, 0, 1998, 1999, 3, 1152, 576, 0, 1999, 2000, 5, 2, 0, 0, 2000, 2001, 3, 1356, 678, 0, 2001, 2002, 5, 3, 0, 0, 2002, 2003, 3, 1358, 679, 0, 2003, 2008, 1, 0, 0, 0, 2004, 2008, 3, 292, 146, 0, 2005, 2008, 5, 53, 0, 0, 2006, 2008, 5, 245, 0, 0, 2007, 1992, 1, 0, 0, 0, 2007, 1993, 1, 0, 0, 0, 2007, 1994, 1, 0, 0, 0, 2007, 1998, 1, 0, 0, 0, 2007, 2004, 1, 0, 0, 0, 2007, 2005, 1, 0, 0, 0, 2007, 2006, 1, 0, 0, 0, 2008, 69, 1, 0, 0, 0, 2009, 2013, 3, 1358, 679, 0, 2010, 2013, 5, 53, 0, 0, 2011, 2013, 1, 0, 0, 0, 2012, 2009, 1, 0, 0, 0, 2012, 2010, 1, 0, 0, 0, 2012, 2011, 1, 0, 0, 0, 2013, 71, 1, 0, 0, 0, 2014, 2017, 3, 1378, 689, 0, 2015, 2017, 3, 1358, 679, 0, 2016, 2014, 1, 0, 0, 0, 2016, 2015, 1, 0, 0, 0, 2017, 73, 1, 0, 0, 0, 2018, 2019, 5, 306, 0, 0, 2019, 2020, 3, 76, 38, 0, 2020, 75, 1, 0, 0, 0, 2021, 2030, 3, 78, 39, 0, 2022, 2023, 5, 411, 0, 0, 2023, 2030, 5, 379, 0, 0, 2024, 2025, 5, 349, 0, 0, 2025, 2026, 5, 235, 0, 0, 2026, 2030, 5, 242, 0, 0, 2027, 2028, 5, 325, 0, 0, 2028, 2030, 5, 106, 0, 0, 2029, 2021, 1, 0, 0, 0, 2029, 2022, 1, 0, 0, 0, 2029, 2024, 1, 0, 0, 0, 2029, 2027, 1, 0, 0, 0, 2030, 77, 1, 0, 0, 0, 2031, 2034, 3, 58, 29, 0, 2032, 2034, 5, 30, 0, 0, 2033, 2031, 1, 0, 0, 0, 2033, 2032, 1, 0, 0, 0, 2034, 79, 1, 0, 0, 0, 2035, 2036, 5, 326, 0, 0, 2036, 2039, 3, 52, 26, 0, 2037, 2039, 3, 74, 37, 0, 2038, 2035, 1, 0, 0, 0, 2038, 2037, 1, 0, 0, 0, 2039, 81, 1, 0, 0, 0, 2040, 2041, 5, 326, 0, 0, 2041, 2044, 3, 56, 28, 0, 2042, 2044, 3, 74, 37, 0, 2043, 2040, 1, 0, 0, 0, 2043, 2042, 1, 0, 0, 0, 2044, 83, 1, 0, 0, 0, 2045, 2055, 5, 328, 0, 0, 2046, 2056, 3, 58, 29, 0, 2047, 2048, 5, 411, 0, 0, 2048, 2056, 5, 379, 0, 0, 2049, 2050, 5, 349, 0, 0, 2050, 2051, 5, 235, 0, 0, 2051, 2056, 5, 242, 0, 0, 2052, 2053, 5, 325, 0, 0, 2053, 2056, 5, 106, 0, 0, 2054, 2056, 5, 30, 0, 0, 2055, 2046, 1, 0, 0, 0, 2055, 2047, 1, 0, 0, 0, 2055, 2049, 1, 0, 0, 0, 2055, 2052, 1, 0, 0, 0, 2055, 2054, 1, 0, 0, 0, 2056, 85, 1, 0, 0, 0, 2057, 2058, 5, 326, 0, 0, 2058, 2059, 5, 165, 0, 0, 2059, 2060, 3, 88, 44, 0, 2060, 2061, 3, 90, 45, 0, 2061, 87, 1, 0, 0, 0, 2062, 2065, 5, 30, 0, 0, 2063, 2065, 3, 1334, 667, 0, 2064, 2062, 1, 0, 0, 0, 2064, 2063, 1, 0, 0, 0, 2065, 89, 1, 0, 0, 0, 2066, 2067, 7, 8, 0, 0, 2067, 91, 1, 0, 0, 0, 2068, 2069, 5, 155, 0, 0, 2069, 93, 1, 0, 0, 0, 2070, 2071, 5, 187, 0, 0, 2071, 2072, 7, 9, 0, 0, 2072, 95, 1, 0, 0, 0, 2073, 2074, 5, 138, 0, 0, 2074, 2077, 5, 92, 0, 0, 2075, 2076, 5, 220, 0, 0, 2076, 2078, 5, 389, 0, 0, 2077, 2075, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2082, 3, 1074, 537, 0, 2080, 2083, 3, 98, 49, 0, 2081, 2083, 3, 100, 50, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2081, 1, 0, 0, 0, 2083, 2183, 1, 0, 0, 0, 2084, 2085, 5, 138, 0, 0, 2085, 2086, 5, 92, 0, 0, 2086, 2087, 5, 30, 0, 0, 2087, 2088, 5, 68, 0, 0, 2088, 2089, 5, 344, 0, 0, 2089, 2093, 3, 1340, 670, 0, 2090, 2091, 5, 274, 0, 0, 2091, 2092, 5, 147, 0, 0, 2092, 2094, 3, 1370, 685, 0, 2093, 2090, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 2096, 5, 326, 0, 0, 2096, 2097, 5, 344, 0, 0, 2097, 2098, 3, 1340, 670, 0, 2098, 2099, 3, 938, 469, 0, 2099, 2183, 1, 0, 0, 0, 2100, 2101, 5, 138, 0, 0, 2101, 2104, 5, 226, 0, 0, 2102, 2103, 5, 220, 0, 0, 2103, 2105, 5, 389, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2109, 3, 1336, 668, 0, 2107, 2110, 3, 98, 49, 0, 2108, 2110, 3, 102, 51, 0, 2109, 2107, 1, 0, 0, 0, 2109, 2108, 1, 0, 0, 0, 2110, 2183, 1, 0, 0, 0, 2111, 2112, 5, 138, 0, 0, 2112, 2113, 5, 226, 0, 0, 2113, 2114, 5, 30, 0, 0, 2114, 2115, 5, 68, 0, 0, 2115, 2116, 5, 344, 0, 0, 2116, 2120, 3, 1340, 670, 0, 2117, 2118, 5, 274, 0, 0, 2118, 2119, 5, 147, 0, 0, 2119, 2121, 3, 1370, 685, 0, 2120, 2117, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 5, 326, 0, 0, 2123, 2124, 5, 344, 0, 0, 2124, 2125, 3, 1340, 670, 0, 2125, 2126, 3, 938, 469, 0, 2126, 2183, 1, 0, 0, 0, 2127, 2128, 5, 138, 0, 0, 2128, 2131, 5, 321, 0, 0, 2129, 2130, 5, 220, 0, 0, 2130, 2132, 5, 389, 0, 0, 2131, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2134, 3, 1336, 668, 0, 2134, 2135, 3, 98, 49, 0, 2135, 2183, 1, 0, 0, 0, 2136, 2137, 5, 138, 0, 0, 2137, 2140, 5, 369, 0, 0, 2138, 2139, 5, 220, 0, 0, 2139, 2141, 5, 389, 0, 0, 2140, 2138, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2143, 3, 1336, 668, 0, 2143, 2144, 3, 98, 49, 0, 2144, 2183, 1, 0, 0, 0, 2145, 2146, 5, 138, 0, 0, 2146, 2147, 5, 251, 0, 0, 2147, 2150, 5, 369, 0, 0, 2148, 2149, 5, 220, 0, 0, 2149, 2151, 5, 389, 0, 0, 2150, 2148, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2153, 3, 1336, 668, 0, 2153, 2154, 3, 98, 49, 0, 2154, 2183, 1, 0, 0, 0, 2155, 2156, 5, 138, 0, 0, 2156, 2157, 5, 251, 0, 0, 2157, 2158, 5, 369, 0, 0, 2158, 2159, 5, 30, 0, 0, 2159, 2160, 5, 68, 0, 0, 2160, 2161, 5, 344, 0, 0, 2161, 2165, 3, 1340, 670, 0, 2162, 2163, 5, 274, 0, 0, 2163, 2164, 5, 147, 0, 0, 2164, 2166, 3, 1370, 685, 0, 2165, 2162, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 5, 326, 0, 0, 2168, 2169, 5, 344, 0, 0, 2169, 2170, 3, 1340, 670, 0, 2170, 2171, 3, 938, 469, 0, 2171, 2183, 1, 0, 0, 0, 2172, 2173, 5, 138, 0, 0, 2173, 2174, 5, 63, 0, 0, 2174, 2177, 5, 92, 0, 0, 2175, 2176, 5, 220, 0, 0, 2176, 2178, 5, 389, 0, 0, 2177, 2175, 1, 0, 0, 0, 2177, 2178, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2180, 3, 1074, 537, 0, 2180, 2181, 3, 98, 49, 0, 2181, 2183, 1, 0, 0, 0, 2182, 2073, 1, 0, 0, 0, 2182, 2084, 1, 0, 0, 0, 2182, 2100, 1, 0, 0, 0, 2182, 2111, 1, 0, 0, 0, 2182, 2127, 1, 0, 0, 0, 2182, 2136, 1, 0, 0, 0, 2182, 2145, 1, 0, 0, 0, 2182, 2155, 1, 0, 0, 0, 2182, 2172, 1, 0, 0, 0, 2183, 97, 1, 0, 0, 0, 2184, 2189, 3, 104, 52, 0, 2185, 2186, 5, 6, 0, 0, 2186, 2188, 3, 104, 52, 0, 2187, 2185, 1, 0, 0, 0, 2188, 2191, 1, 0, 0, 0, 2189, 2187, 1, 0, 0, 0, 2189, 2190, 1, 0, 0, 0, 2190, 99, 1, 0, 0, 0, 2191, 2189, 1, 0, 0, 0, 2192, 2193, 5, 435, 0, 0, 2193, 2194, 5, 278, 0, 0, 2194, 2195, 3, 1336, 668, 0, 2195, 2196, 3, 128, 64, 0, 2196, 2201, 1, 0, 0, 0, 2197, 2198, 5, 436, 0, 0, 2198, 2199, 5, 278, 0, 0, 2199, 2201, 3, 1336, 668, 0, 2200, 2192, 1, 0, 0, 0, 2200, 2197, 1, 0, 0, 0, 2201, 101, 1, 0, 0, 0, 2202, 2203, 5, 435, 0, 0, 2203, 2204, 5, 278, 0, 0, 2204, 2205, 3, 1336, 668, 0, 2205, 103, 1, 0, 0, 0, 2206, 2207, 5, 133, 0, 0, 2207, 2459, 3, 188, 94, 0, 2208, 2209, 5, 133, 0, 0, 2209, 2210, 5, 220, 0, 0, 2210, 2211, 5, 77, 0, 0, 2211, 2212, 5, 389, 0, 0, 2212, 2459, 3, 188, 94, 0, 2213, 2214, 5, 133, 0, 0, 2214, 2215, 5, 44, 0, 0, 2215, 2459, 3, 188, 94, 0, 2216, 2217, 5, 133, 0, 0, 2217, 2218, 5, 44, 0, 0, 2218, 2219, 5, 220, 0, 0, 2219, 2220, 5, 77, 0, 0, 2220, 2221, 5, 389, 0, 0, 2221, 2459, 3, 188, 94, 0, 2222, 2223, 5, 138, 0, 0, 2223, 2224, 3, 724, 362, 0, 2224, 2225, 3, 1372, 686, 0, 2225, 2226, 3, 106, 53, 0, 2226, 2459, 1, 0, 0, 0, 2227, 2228, 5, 138, 0, 0, 2228, 2229, 3, 724, 362, 0, 2229, 2230, 3, 1372, 686, 0, 2230, 2231, 5, 191, 0, 0, 2231, 2232, 5, 77, 0, 0, 2232, 2233, 5, 78, 0, 0, 2233, 2459, 1, 0, 0, 0, 2234, 2235, 5, 138, 0, 0, 2235, 2236, 3, 724, 362, 0, 2236, 2237, 3, 1372, 686, 0, 2237, 2238, 5, 326, 0, 0, 2238, 2239, 5, 77, 0, 0, 2239, 2240, 5, 78, 0, 0, 2240, 2459, 1, 0, 0, 0, 2241, 2242, 5, 138, 0, 0, 2242, 2243, 3, 724, 362, 0, 2243, 2244, 3, 1372, 686, 0, 2244, 2245, 5, 191, 0, 0, 2245, 2246, 5, 437, 0, 0, 2246, 2459, 1, 0, 0, 0, 2247, 2248, 5, 138, 0, 0, 2248, 2249, 3, 724, 362, 0, 2249, 2250, 3, 1372, 686, 0, 2250, 2251, 5, 191, 0, 0, 2251, 2252, 5, 437, 0, 0, 2252, 2253, 5, 220, 0, 0, 2253, 2254, 5, 389, 0, 0, 2254, 2459, 1, 0, 0, 0, 2255, 2256, 5, 138, 0, 0, 2256, 2257, 3, 724, 362, 0, 2257, 2258, 3, 1372, 686, 0, 2258, 2259, 5, 326, 0, 0, 2259, 2260, 5, 335, 0, 0, 2260, 2261, 3, 1364, 682, 0, 2261, 2459, 1, 0, 0, 0, 2262, 2263, 5, 138, 0, 0, 2263, 2264, 3, 724, 362, 0, 2264, 2265, 3, 1356, 678, 0, 2265, 2266, 5, 326, 0, 0, 2266, 2267, 5, 335, 0, 0, 2267, 2268, 3, 1364, 682, 0, 2268, 2459, 1, 0, 0, 0, 2269, 2270, 5, 138, 0, 0, 2270, 2271, 3, 724, 362, 0, 2271, 2272, 3, 1372, 686, 0, 2272, 2273, 5, 326, 0, 0, 2273, 2274, 3, 116, 58, 0, 2274, 2459, 1, 0, 0, 0, 2275, 2276, 5, 138, 0, 0, 2276, 2277, 3, 724, 362, 0, 2277, 2278, 3, 1372, 686, 0, 2278, 2279, 5, 306, 0, 0, 2279, 2280, 3, 116, 58, 0, 2280, 2459, 1, 0, 0, 0, 2281, 2282, 5, 138, 0, 0, 2282, 2283, 3, 724, 362, 0, 2283, 2284, 3, 1372, 686, 0, 2284, 2285, 5, 326, 0, 0, 2285, 2286, 5, 338, 0, 0, 2286, 2287, 3, 1372, 686, 0, 2287, 2459, 1, 0, 0, 0, 2288, 2289, 5, 138, 0, 0, 2289, 2290, 3, 724, 362, 0, 2290, 2291, 3, 1372, 686, 0, 2291, 2292, 5, 133, 0, 0, 2292, 2293, 5, 438, 0, 0, 2293, 2294, 3, 198, 99, 0, 2294, 2295, 5, 36, 0, 0, 2295, 2296, 5, 219, 0, 0, 2296, 2297, 3, 284, 142, 0, 2297, 2459, 1, 0, 0, 0, 2298, 2299, 5, 138, 0, 0, 2299, 2300, 3, 724, 362, 0, 2300, 2301, 3, 1372, 686, 0, 2301, 2302, 3, 124, 62, 0, 2302, 2459, 1, 0, 0, 0, 2303, 2304, 5, 138, 0, 0, 2304, 2305, 3, 724, 362, 0, 2305, 2306, 3, 1372, 686, 0, 2306, 2307, 5, 191, 0, 0, 2307, 2308, 5, 219, 0, 0, 2308, 2459, 1, 0, 0, 0, 2309, 2310, 5, 138, 0, 0, 2310, 2311, 3, 724, 362, 0, 2311, 2312, 3, 1372, 686, 0, 2312, 2313, 5, 191, 0, 0, 2313, 2314, 5, 219, 0, 0, 2314, 2315, 5, 220, 0, 0, 2315, 2316, 5, 389, 0, 0, 2316, 2459, 1, 0, 0, 0, 2317, 2318, 5, 191, 0, 0, 2318, 2319, 3, 724, 362, 0, 2319, 2320, 5, 220, 0, 0, 2320, 2321, 5, 389, 0, 0, 2321, 2322, 3, 1372, 686, 0, 2322, 2323, 3, 108, 54, 0, 2323, 2459, 1, 0, 0, 0, 2324, 2325, 5, 191, 0, 0, 2325, 2326, 3, 724, 362, 0, 2326, 2327, 3, 1372, 686, 0, 2327, 2328, 3, 108, 54, 0, 2328, 2459, 1, 0, 0, 0, 2329, 2330, 5, 138, 0, 0, 2330, 2331, 3, 724, 362, 0, 2331, 2332, 3, 1372, 686, 0, 2332, 2333, 3, 726, 363, 0, 2333, 2334, 5, 353, 0, 0, 2334, 2335, 3, 1118, 559, 0, 2335, 2336, 3, 110, 55, 0, 2336, 2337, 3, 112, 56, 0, 2337, 2459, 1, 0, 0, 0, 2338, 2339, 5, 138, 0, 0, 2339, 2340, 3, 724, 362, 0, 2340, 2341, 3, 1372, 686, 0, 2341, 2342, 3, 344, 172, 0, 2342, 2459, 1, 0, 0, 0, 2343, 2344, 5, 133, 0, 0, 2344, 2459, 3, 208, 104, 0, 2345, 2346, 5, 138, 0, 0, 2346, 2347, 5, 45, 0, 0, 2347, 2348, 3, 1340, 670, 0, 2348, 2349, 3, 440, 220, 0, 2349, 2459, 1, 0, 0, 0, 2350, 2351, 5, 365, 0, 0, 2351, 2352, 5, 45, 0, 0, 2352, 2459, 3, 1340, 670, 0, 2353, 2354, 5, 191, 0, 0, 2354, 2355, 5, 45, 0, 0, 2355, 2356, 5, 220, 0, 0, 2356, 2357, 5, 389, 0, 0, 2357, 2358, 3, 1340, 670, 0, 2358, 2359, 3, 108, 54, 0, 2359, 2459, 1, 0, 0, 0, 2360, 2361, 5, 191, 0, 0, 2361, 2362, 5, 45, 0, 0, 2362, 2363, 3, 1340, 670, 0, 2363, 2364, 3, 108, 54, 0, 2364, 2459, 1, 0, 0, 0, 2365, 2366, 5, 326, 0, 0, 2366, 2367, 5, 372, 0, 0, 2367, 2459, 5, 270, 0, 0, 2368, 2369, 5, 158, 0, 0, 2369, 2370, 5, 80, 0, 0, 2370, 2459, 3, 1340, 670, 0, 2371, 2372, 5, 326, 0, 0, 2372, 2373, 5, 372, 0, 0, 2373, 2459, 5, 158, 0, 0, 2374, 2375, 5, 326, 0, 0, 2375, 2459, 5, 439, 0, 0, 2376, 2377, 5, 326, 0, 0, 2377, 2459, 5, 360, 0, 0, 2378, 2379, 5, 193, 0, 0, 2379, 2380, 5, 350, 0, 0, 2380, 2459, 3, 1340, 670, 0, 2381, 2382, 5, 193, 0, 0, 2382, 2383, 5, 139, 0, 0, 2383, 2384, 5, 350, 0, 0, 2384, 2459, 3, 1340, 670, 0, 2385, 2386, 5, 193, 0, 0, 2386, 2387, 5, 305, 0, 0, 2387, 2388, 5, 350, 0, 0, 2388, 2459, 3, 1340, 670, 0, 2389, 2390, 5, 193, 0, 0, 2390, 2391, 5, 350, 0, 0, 2391, 2459, 5, 30, 0, 0, 2392, 2393, 5, 193, 0, 0, 2393, 2394, 5, 350, 0, 0, 2394, 2459, 5, 99, 0, 0, 2395, 2396, 5, 186, 0, 0, 2396, 2397, 5, 350, 0, 0, 2397, 2459, 3, 1340, 670, 0, 2398, 2399, 5, 186, 0, 0, 2399, 2400, 5, 350, 0, 0, 2400, 2459, 5, 30, 0, 0, 2401, 2402, 5, 186, 0, 0, 2402, 2403, 5, 350, 0, 0, 2403, 2459, 5, 99, 0, 0, 2404, 2405, 5, 193, 0, 0, 2405, 2406, 5, 314, 0, 0, 2406, 2459, 3, 1340, 670, 0, 2407, 2408, 5, 193, 0, 0, 2408, 2409, 5, 139, 0, 0, 2409, 2410, 5, 314, 0, 0, 2410, 2459, 3, 1340, 670, 0, 2411, 2412, 5, 193, 0, 0, 2412, 2413, 5, 305, 0, 0, 2413, 2414, 5, 314, 0, 0, 2414, 2459, 3, 1340, 670, 0, 2415, 2416, 5, 186, 0, 0, 2416, 2417, 5, 314, 0, 0, 2417, 2459, 3, 1340, 670, 0, 2418, 2419, 5, 228, 0, 0, 2419, 2459, 3, 1336, 668, 0, 2420, 2421, 5, 262, 0, 0, 2421, 2422, 5, 228, 0, 0, 2422, 2459, 3, 1336, 668, 0, 2423, 2424, 5, 268, 0, 0, 2424, 2459, 3, 524, 262, 0, 2425, 2426, 5, 77, 0, 0, 2426, 2459, 5, 268, 0, 0, 2427, 2428, 5, 275, 0, 0, 2428, 2429, 5, 94, 0, 0, 2429, 2459, 3, 1368, 684, 0, 2430, 2431, 5, 326, 0, 0, 2431, 2432, 5, 344, 0, 0, 2432, 2459, 3, 1340, 670, 0, 2433, 2434, 5, 326, 0, 0, 2434, 2459, 3, 116, 58, 0, 2435, 2436, 5, 306, 0, 0, 2436, 2459, 3, 116, 58, 0, 2437, 2438, 5, 305, 0, 0, 2438, 2439, 5, 219, 0, 0, 2439, 2459, 3, 114, 57, 0, 2440, 2441, 5, 193, 0, 0, 2441, 2442, 5, 407, 0, 0, 2442, 2443, 5, 242, 0, 0, 2443, 2459, 5, 320, 0, 0, 2444, 2445, 5, 186, 0, 0, 2445, 2446, 5, 407, 0, 0, 2446, 2447, 5, 242, 0, 0, 2447, 2459, 5, 320, 0, 0, 2448, 2449, 5, 209, 0, 0, 2449, 2450, 5, 407, 0, 0, 2450, 2451, 5, 242, 0, 0, 2451, 2459, 5, 320, 0, 0, 2452, 2453, 5, 262, 0, 0, 2453, 2454, 5, 209, 0, 0, 2454, 2455, 5, 407, 0, 0, 2455, 2456, 5, 242, 0, 0, 2456, 2459, 5, 320, 0, 0, 2457, 2459, 3, 344, 172, 0, 2458, 2206, 1, 0, 0, 0, 2458, 2208, 1, 0, 0, 0, 2458, 2213, 1, 0, 0, 0, 2458, 2216, 1, 0, 0, 0, 2458, 2222, 1, 0, 0, 0, 2458, 2227, 1, 0, 0, 0, 2458, 2234, 1, 0, 0, 0, 2458, 2241, 1, 0, 0, 0, 2458, 2247, 1, 0, 0, 0, 2458, 2255, 1, 0, 0, 0, 2458, 2262, 1, 0, 0, 0, 2458, 2269, 1, 0, 0, 0, 2458, 2275, 1, 0, 0, 0, 2458, 2281, 1, 0, 0, 0, 2458, 2288, 1, 0, 0, 0, 2458, 2298, 1, 0, 0, 0, 2458, 2303, 1, 0, 0, 0, 2458, 2309, 1, 0, 0, 0, 2458, 2317, 1, 0, 0, 0, 2458, 2324, 1, 0, 0, 0, 2458, 2329, 1, 0, 0, 0, 2458, 2338, 1, 0, 0, 0, 2458, 2343, 1, 0, 0, 0, 2458, 2345, 1, 0, 0, 0, 2458, 2350, 1, 0, 0, 0, 2458, 2353, 1, 0, 0, 0, 2458, 2360, 1, 0, 0, 0, 2458, 2365, 1, 0, 0, 0, 2458, 2368, 1, 0, 0, 0, 2458, 2371, 1, 0, 0, 0, 2458, 2374, 1, 0, 0, 0, 2458, 2376, 1, 0, 0, 0, 2458, 2378, 1, 0, 0, 0, 2458, 2381, 1, 0, 0, 0, 2458, 2385, 1, 0, 0, 0, 2458, 2389, 1, 0, 0, 0, 2458, 2392, 1, 0, 0, 0, 2458, 2395, 1, 0, 0, 0, 2458, 2398, 1, 0, 0, 0, 2458, 2401, 1, 0, 0, 0, 2458, 2404, 1, 0, 0, 0, 2458, 2407, 1, 0, 0, 0, 2458, 2411, 1, 0, 0, 0, 2458, 2415, 1, 0, 0, 0, 2458, 2418, 1, 0, 0, 0, 2458, 2420, 1, 0, 0, 0, 2458, 2423, 1, 0, 0, 0, 2458, 2425, 1, 0, 0, 0, 2458, 2427, 1, 0, 0, 0, 2458, 2430, 1, 0, 0, 0, 2458, 2433, 1, 0, 0, 0, 2458, 2435, 1, 0, 0, 0, 2458, 2437, 1, 0, 0, 0, 2458, 2440, 1, 0, 0, 0, 2458, 2444, 1, 0, 0, 0, 2458, 2448, 1, 0, 0, 0, 2458, 2452, 1, 0, 0, 0, 2458, 2457, 1, 0, 0, 0, 2459, 105, 1, 0, 0, 0, 2460, 2461, 5, 326, 0, 0, 2461, 2462, 5, 53, 0, 0, 2462, 2466, 3, 1162, 581, 0, 2463, 2464, 5, 191, 0, 0, 2464, 2466, 5, 53, 0, 0, 2465, 2460, 1, 0, 0, 0, 2465, 2463, 1, 0, 0, 0, 2466, 107, 1, 0, 0, 0, 2467, 2471, 5, 150, 0, 0, 2468, 2471, 5, 308, 0, 0, 2469, 2471, 1, 0, 0, 0, 2470, 2467, 1, 0, 0, 0, 2470, 2468, 1, 0, 0, 0, 2470, 2469, 1, 0, 0, 0, 2471, 109, 1, 0, 0, 0, 2472, 2473, 5, 43, 0, 0, 2473, 2476, 3, 524, 262, 0, 2474, 2476, 1, 0, 0, 0, 2475, 2472, 1, 0, 0, 0, 2475, 2474, 1, 0, 0, 0, 2476, 111, 1, 0, 0, 0, 2477, 2478, 5, 100, 0, 0, 2478, 2481, 3, 1162, 581, 0, 2479, 2481, 1, 0, 0, 0, 2480, 2477, 1, 0, 0, 0, 2480, 2479, 1, 0, 0, 0, 2481, 113, 1, 0, 0, 0, 2482, 2489, 5, 263, 0, 0, 2483, 2489, 5, 113, 0, 0, 2484, 2489, 5, 53, 0, 0, 2485, 2486, 5, 100, 0, 0, 2486, 2487, 5, 226, 0, 0, 2487, 2489, 3, 1340, 670, 0, 2488, 2482, 1, 0, 0, 0, 2488, 2483, 1, 0, 0, 0, 2488, 2484, 1, 0, 0, 0, 2488, 2485, 1, 0, 0, 0, 2489, 115, 1, 0, 0, 0, 2490, 2491, 5, 2, 0, 0, 2491, 2492, 3, 120, 60, 0, 2492, 2493, 5, 3, 0, 0, 2493, 117, 1, 0, 0, 0, 2494, 2495, 5, 105, 0, 0, 2495, 2498, 3, 116, 58, 0, 2496, 2498, 1, 0, 0, 0, 2497, 2494, 1, 0, 0, 0, 2497, 2496, 1, 0, 0, 0, 2498, 119, 1, 0, 0, 0, 2499, 2504, 3, 122, 61, 0, 2500, 2501, 5, 6, 0, 0, 2501, 2503, 3, 122, 61, 0, 2502, 2500, 1, 0, 0, 0, 2503, 2506, 1, 0, 0, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 121, 1, 0, 0, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2516, 3, 1380, 690, 0, 2508, 2509, 5, 10, 0, 0, 2509, 2517, 3, 466, 233, 0, 2510, 2511, 5, 11, 0, 0, 2511, 2514, 3, 1380, 690, 0, 2512, 2513, 5, 10, 0, 0, 2513, 2515, 3, 466, 233, 0, 2514, 2512, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2508, 1, 0, 0, 0, 2516, 2510, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 123, 1, 0, 0, 0, 2518, 2520, 3, 126, 63, 0, 2519, 2518, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 125, 1, 0, 0, 0, 2523, 2527, 5, 307, 0, 0, 2524, 2525, 3, 16, 8, 0, 2525, 2526, 3, 292, 146, 0, 2526, 2528, 1, 0, 0, 0, 2527, 2524, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2536, 1, 0, 0, 0, 2529, 2533, 5, 326, 0, 0, 2530, 2534, 3, 288, 144, 0, 2531, 2532, 5, 438, 0, 0, 2532, 2534, 3, 198, 99, 0, 2533, 2530, 1, 0, 0, 0, 2533, 2531, 1, 0, 0, 0, 2534, 2536, 1, 0, 0, 0, 2535, 2523, 1, 0, 0, 0, 2535, 2529, 1, 0, 0, 0, 2536, 127, 1, 0, 0, 0, 2537, 2538, 5, 62, 0, 0, 2538, 2539, 5, 415, 0, 0, 2539, 2540, 5, 105, 0, 0, 2540, 2541, 5, 2, 0, 0, 2541, 2542, 3, 132, 66, 0, 2542, 2543, 5, 3, 0, 0, 2543, 2564, 1, 0, 0, 0, 2544, 2545, 5, 62, 0, 0, 2545, 2546, 5, 415, 0, 0, 2546, 2547, 5, 68, 0, 0, 2547, 2548, 5, 2, 0, 0, 2548, 2549, 3, 1280, 640, 0, 2549, 2550, 5, 3, 0, 0, 2550, 2564, 1, 0, 0, 0, 2551, 2552, 5, 62, 0, 0, 2552, 2553, 5, 415, 0, 0, 2553, 2554, 5, 64, 0, 0, 2554, 2555, 5, 2, 0, 0, 2555, 2556, 3, 1280, 640, 0, 2556, 2557, 5, 3, 0, 0, 2557, 2558, 5, 94, 0, 0, 2558, 2559, 5, 2, 0, 0, 2559, 2560, 3, 1280, 640, 0, 2560, 2561, 5, 3, 0, 0, 2561, 2564, 1, 0, 0, 0, 2562, 2564, 5, 53, 0, 0, 2563, 2537, 1, 0, 0, 0, 2563, 2544, 1, 0, 0, 0, 2563, 2551, 1, 0, 0, 0, 2563, 2562, 1, 0, 0, 0, 2564, 129, 1, 0, 0, 0, 2565, 2566, 3, 1378, 689, 0, 2566, 2567, 3, 1356, 678, 0, 2567, 131, 1, 0, 0, 0, 2568, 2573, 3, 130, 65, 0, 2569, 2570, 5, 6, 0, 0, 2570, 2572, 3, 130, 65, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2575, 1, 0, 0, 0, 2573, 2571, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 133, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2576, 2577, 5, 138, 0, 0, 2577, 2578, 5, 353, 0, 0, 2578, 2579, 3, 524, 262, 0, 2579, 2580, 3, 136, 68, 0, 2580, 135, 1, 0, 0, 0, 2581, 2586, 3, 138, 69, 0, 2582, 2583, 5, 6, 0, 0, 2583, 2585, 3, 138, 69, 0, 2584, 2582, 1, 0, 0, 0, 2585, 2588, 1, 0, 0, 0, 2586, 2584, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 137, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2589, 2590, 5, 133, 0, 0, 2590, 2591, 5, 143, 0, 0, 2591, 2592, 3, 1102, 551, 0, 2592, 2593, 3, 108, 54, 0, 2593, 2613, 1, 0, 0, 0, 2594, 2595, 5, 191, 0, 0, 2595, 2598, 5, 143, 0, 0, 2596, 2597, 5, 220, 0, 0, 2597, 2599, 5, 389, 0, 0, 2598, 2596, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 3, 1372, 686, 0, 2601, 2602, 3, 108, 54, 0, 2602, 2613, 1, 0, 0, 0, 2603, 2604, 5, 138, 0, 0, 2604, 2605, 5, 143, 0, 0, 2605, 2606, 3, 1372, 686, 0, 2606, 2607, 3, 726, 363, 0, 2607, 2608, 5, 353, 0, 0, 2608, 2609, 3, 1118, 559, 0, 2609, 2610, 3, 110, 55, 0, 2610, 2611, 3, 108, 54, 0, 2611, 2613, 1, 0, 0, 0, 2612, 2589, 1, 0, 0, 0, 2612, 2594, 1, 0, 0, 0, 2612, 2603, 1, 0, 0, 0, 2613, 139, 1, 0, 0, 0, 2614, 2617, 5, 157, 0, 0, 2615, 2618, 3, 954, 477, 0, 2616, 2618, 5, 30, 0, 0, 2617, 2615, 1, 0, 0, 0, 2617, 2616, 1, 0, 0, 0, 2618, 141, 1, 0, 0, 0, 2619, 2620, 5, 169, 0, 0, 2620, 2621, 3, 156, 78, 0, 2621, 2622, 3, 1336, 668, 0, 2622, 2623, 3, 214, 107, 0, 2623, 2624, 3, 144, 72, 0, 2624, 2625, 3, 146, 73, 0, 2625, 2626, 3, 148, 74, 0, 2626, 2627, 3, 158, 79, 0, 2627, 2628, 3, 16, 8, 0, 2628, 2629, 3, 150, 75, 0, 2629, 2630, 3, 1094, 547, 0, 2630, 2642, 1, 0, 0, 0, 2631, 2632, 5, 169, 0, 0, 2632, 2633, 5, 2, 0, 0, 2633, 2634, 3, 894, 447, 0, 2634, 2635, 5, 3, 0, 0, 2635, 2636, 5, 94, 0, 0, 2636, 2637, 3, 146, 73, 0, 2637, 2638, 3, 148, 74, 0, 2638, 2639, 3, 16, 8, 0, 2639, 2640, 3, 150, 75, 0, 2640, 2642, 1, 0, 0, 0, 2641, 2619, 1, 0, 0, 0, 2641, 2631, 1, 0, 0, 0, 2642, 143, 1, 0, 0, 0, 2643, 2644, 7, 10, 0, 0, 2644, 145, 1, 0, 0, 0, 2645, 2648, 5, 290, 0, 0, 2646, 2648, 1, 0, 0, 0, 2647, 2645, 1, 0, 0, 0, 2647, 2646, 1, 0, 0, 0, 2648, 147, 1, 0, 0, 0, 2649, 2653, 3, 1358, 679, 0, 2650, 2653, 5, 336, 0, 0, 2651, 2653, 5, 337, 0, 0, 2652, 2649, 1, 0, 0, 0, 2652, 2650, 1, 0, 0, 0, 2652, 2651, 1, 0, 0, 0, 2653, 149, 1, 0, 0, 0, 2654, 2660, 3, 152, 76, 0, 2655, 2656, 5, 2, 0, 0, 2656, 2657, 3, 162, 81, 0, 2657, 2658, 5, 3, 0, 0, 2658, 2660, 1, 0, 0, 0, 2659, 2654, 1, 0, 0, 0, 2659, 2655, 1, 0, 0, 0, 2660, 151, 1, 0, 0, 0, 2661, 2663, 3, 154, 77, 0, 2662, 2661, 1, 0, 0, 0, 2663, 2666, 1, 0, 0, 0, 2664, 2662, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 153, 1, 0, 0, 0, 2666, 2664, 1, 0, 0, 0, 2667, 2703, 5, 107, 0, 0, 2668, 2703, 5, 112, 0, 0, 2669, 2670, 5, 183, 0, 0, 2670, 2671, 3, 834, 417, 0, 2671, 2672, 3, 1358, 679, 0, 2672, 2703, 1, 0, 0, 0, 2673, 2674, 5, 78, 0, 0, 2674, 2675, 3, 834, 417, 0, 2675, 2676, 3, 1358, 679, 0, 2676, 2703, 1, 0, 0, 0, 2677, 2703, 5, 171, 0, 0, 2678, 2703, 5, 216, 0, 0, 2679, 2680, 5, 291, 0, 0, 2680, 2681, 3, 834, 417, 0, 2681, 2682, 3, 1358, 679, 0, 2682, 2703, 1, 0, 0, 0, 2683, 2684, 5, 197, 0, 0, 2684, 2685, 3, 834, 417, 0, 2685, 2686, 3, 1358, 679, 0, 2686, 2703, 1, 0, 0, 0, 2687, 2688, 5, 209, 0, 0, 2688, 2689, 5, 291, 0, 0, 2689, 2703, 3, 216, 108, 0, 2690, 2691, 5, 209, 0, 0, 2691, 2692, 5, 291, 0, 0, 2692, 2703, 5, 9, 0, 0, 2693, 2694, 5, 209, 0, 0, 2694, 2695, 5, 77, 0, 0, 2695, 2696, 5, 78, 0, 0, 2696, 2703, 3, 216, 108, 0, 2697, 2698, 5, 209, 0, 0, 2698, 2699, 5, 78, 0, 0, 2699, 2703, 3, 216, 108, 0, 2700, 2701, 5, 194, 0, 0, 2701, 2703, 3, 1358, 679, 0, 2702, 2667, 1, 0, 0, 0, 2702, 2668, 1, 0, 0, 0, 2702, 2669, 1, 0, 0, 0, 2702, 2673, 1, 0, 0, 0, 2702, 2677, 1, 0, 0, 0, 2702, 2678, 1, 0, 0, 0, 2702, 2679, 1, 0, 0, 0, 2702, 2683, 1, 0, 0, 0, 2702, 2687, 1, 0, 0, 0, 2702, 2690, 1, 0, 0, 0, 2702, 2693, 1, 0, 0, 0, 2702, 2697, 1, 0, 0, 0, 2702, 2700, 1, 0, 0, 0, 2703, 155, 1, 0, 0, 0, 2704, 2707, 5, 107, 0, 0, 2705, 2707, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2705, 1, 0, 0, 0, 2707, 157, 1, 0, 0, 0, 2708, 2709, 3, 160, 80, 0, 2709, 2710, 5, 184, 0, 0, 2710, 2711, 3, 1358, 679, 0, 2711, 2714, 1, 0, 0, 0, 2712, 2714, 1, 0, 0, 0, 2713, 2708, 1, 0, 0, 0, 2713, 2712, 1, 0, 0, 0, 2714, 159, 1, 0, 0, 0, 2715, 2718, 5, 100, 0, 0, 2716, 2718, 1, 0, 0, 0, 2717, 2715, 1, 0, 0, 0, 2717, 2716, 1, 0, 0, 0, 2718, 161, 1, 0, 0, 0, 2719, 2724, 3, 164, 82, 0, 2720, 2721, 5, 6, 0, 0, 2721, 2723, 3, 164, 82, 0, 2722, 2720, 1, 0, 0, 0, 2723, 2726, 1, 0, 0, 0, 2724, 2722, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 163, 1, 0, 0, 0, 2726, 2724, 1, 0, 0, 0, 2727, 2728, 3, 1380, 690, 0, 2728, 2729, 3, 166, 83, 0, 2729, 165, 1, 0, 0, 0, 2730, 2739, 3, 66, 33, 0, 2731, 2739, 3, 292, 146, 0, 2732, 2739, 5, 9, 0, 0, 2733, 2734, 5, 2, 0, 0, 2734, 2735, 3, 168, 84, 0, 2735, 2736, 5, 3, 0, 0, 2736, 2739, 1, 0, 0, 0, 2737, 2739, 1, 0, 0, 0, 2738, 2730, 1, 0, 0, 0, 2738, 2731, 1, 0, 0, 0, 2738, 2732, 1, 0, 0, 0, 2738, 2733, 1, 0, 0, 0, 2738, 2737, 1, 0, 0, 0, 2739, 167, 1, 0, 0, 0, 2740, 2745, 3, 170, 85, 0, 2741, 2742, 5, 6, 0, 0, 2742, 2744, 3, 170, 85, 0, 2743, 2741, 1, 0, 0, 0, 2744, 2747, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 169, 1, 0, 0, 0, 2747, 2745, 1, 0, 0, 0, 2748, 2749, 3, 66, 33, 0, 2749, 171, 1, 0, 0, 0, 2750, 2751, 5, 46, 0, 0, 2751, 2752, 3, 174, 87, 0, 2752, 2756, 5, 92, 0, 0, 2753, 2754, 5, 220, 0, 0, 2754, 2755, 5, 77, 0, 0, 2755, 2757, 5, 389, 0, 0, 2756, 2753, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2789, 3, 1336, 668, 0, 2759, 2760, 5, 2, 0, 0, 2760, 2761, 3, 176, 88, 0, 2761, 2762, 5, 3, 0, 0, 2762, 2763, 3, 238, 119, 0, 2763, 2764, 3, 240, 120, 0, 2764, 2765, 3, 248, 124, 0, 2765, 2766, 3, 250, 125, 0, 2766, 2767, 3, 252, 126, 0, 2767, 2768, 3, 254, 127, 0, 2768, 2790, 1, 0, 0, 0, 2769, 2770, 5, 268, 0, 0, 2770, 2771, 3, 524, 262, 0, 2771, 2772, 3, 178, 89, 0, 2772, 2773, 3, 240, 120, 0, 2773, 2774, 3, 248, 124, 0, 2774, 2775, 3, 250, 125, 0, 2775, 2776, 3, 252, 126, 0, 2776, 2777, 3, 254, 127, 0, 2777, 2790, 1, 0, 0, 0, 2778, 2779, 5, 278, 0, 0, 2779, 2780, 5, 268, 0, 0, 2780, 2781, 3, 1336, 668, 0, 2781, 2782, 3, 178, 89, 0, 2782, 2783, 3, 128, 64, 0, 2783, 2784, 3, 240, 120, 0, 2784, 2785, 3, 248, 124, 0, 2785, 2786, 3, 250, 125, 0, 2786, 2787, 3, 252, 126, 0, 2787, 2788, 3, 254, 127, 0, 2788, 2790, 1, 0, 0, 0, 2789, 2759, 1, 0, 0, 0, 2789, 2769, 1, 0, 0, 0, 2789, 2778, 1, 0, 0, 0, 2790, 173, 1, 0, 0, 0, 2791, 2800, 5, 347, 0, 0, 2792, 2800, 5, 345, 0, 0, 2793, 2794, 5, 245, 0, 0, 2794, 2800, 7, 11, 0, 0, 2795, 2796, 5, 213, 0, 0, 2796, 2800, 7, 11, 0, 0, 2797, 2800, 5, 360, 0, 0, 2798, 2800, 1, 0, 0, 0, 2799, 2791, 1, 0, 0, 0, 2799, 2792, 1, 0, 0, 0, 2799, 2793, 1, 0, 0, 0, 2799, 2795, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2798, 1, 0, 0, 0, 2800, 175, 1, 0, 0, 0, 2801, 2804, 3, 180, 90, 0, 2802, 2804, 1, 0, 0, 0, 2803, 2801, 1, 0, 0, 0, 2803, 2802, 1, 0, 0, 0, 2804, 177, 1, 0, 0, 0, 2805, 2806, 5, 2, 0, 0, 2806, 2807, 3, 182, 91, 0, 2807, 2808, 5, 3, 0, 0, 2808, 2811, 1, 0, 0, 0, 2809, 2811, 1, 0, 0, 0, 2810, 2805, 1, 0, 0, 0, 2810, 2809, 1, 0, 0, 0, 2811, 179, 1, 0, 0, 0, 2812, 2817, 3, 184, 92, 0, 2813, 2814, 5, 6, 0, 0, 2814, 2816, 3, 184, 92, 0, 2815, 2813, 1, 0, 0, 0, 2816, 2819, 1, 0, 0, 0, 2817, 2815, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 181, 1, 0, 0, 0, 2819, 2817, 1, 0, 0, 0, 2820, 2825, 3, 186, 93, 0, 2821, 2822, 5, 6, 0, 0, 2822, 2824, 3, 186, 93, 0, 2823, 2821, 1, 0, 0, 0, 2824, 2827, 1, 0, 0, 0, 2825, 2823, 1, 0, 0, 0, 2825, 2826, 1, 0, 0, 0, 2826, 183, 1, 0, 0, 0, 2827, 2825, 1, 0, 0, 0, 2828, 2832, 3, 208, 104, 0, 2829, 2832, 3, 202, 101, 0, 2830, 2832, 3, 188, 94, 0, 2831, 2828, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2831, 2830, 1, 0, 0, 0, 2832, 185, 1, 0, 0, 0, 2833, 2836, 3, 190, 95, 0, 2834, 2836, 3, 208, 104, 0, 2835, 2833, 1, 0, 0, 0, 2835, 2834, 1, 0, 0, 0, 2836, 187, 1, 0, 0, 0, 2837, 2838, 3, 1372, 686, 0, 2838, 2839, 3, 1118, 559, 0, 2839, 2840, 3, 340, 170, 0, 2840, 2841, 3, 192, 96, 0, 2841, 189, 1, 0, 0, 0, 2842, 2845, 3, 1372, 686, 0, 2843, 2844, 5, 105, 0, 0, 2844, 2846, 5, 273, 0, 0, 2845, 2843, 1, 0, 0, 0, 2845, 2846, 1, 0, 0, 0, 2846, 2847, 1, 0, 0, 0, 2847, 2848, 3, 192, 96, 0, 2848, 191, 1, 0, 0, 0, 2849, 2851, 3, 194, 97, 0, 2850, 2849, 1, 0, 0, 0, 2851, 2854, 1, 0, 0, 0, 2852, 2850, 1, 0, 0, 0, 2852, 2853, 1, 0, 0, 0, 2853, 193, 1, 0, 0, 0, 2854, 2852, 1, 0, 0, 0, 2855, 2856, 5, 45, 0, 0, 2856, 2857, 3, 1340, 670, 0, 2857, 2858, 3, 196, 98, 0, 2858, 2864, 1, 0, 0, 0, 2859, 2864, 3, 196, 98, 0, 2860, 2864, 3, 200, 100, 0, 2861, 2862, 5, 43, 0, 0, 2862, 2864, 3, 524, 262, 0, 2863, 2855, 1, 0, 0, 0, 2863, 2859, 1, 0, 0, 0, 2863, 2860, 1, 0, 0, 0, 2863, 2861, 1, 0, 0, 0, 2864, 195, 1, 0, 0, 0, 2865, 2866, 5, 77, 0, 0, 2866, 2904, 5, 78, 0, 0, 2867, 2904, 5, 78, 0, 0, 2868, 2869, 5, 98, 0, 0, 2869, 2870, 3, 664, 332, 0, 2870, 2871, 3, 256, 128, 0, 2871, 2904, 1, 0, 0, 0, 2872, 2873, 5, 85, 0, 0, 2873, 2874, 5, 236, 0, 0, 2874, 2875, 3, 664, 332, 0, 2875, 2876, 3, 256, 128, 0, 2876, 2904, 1, 0, 0, 0, 2877, 2878, 5, 42, 0, 0, 2878, 2879, 5, 2, 0, 0, 2879, 2880, 3, 1162, 581, 0, 2880, 2881, 5, 3, 0, 0, 2881, 2882, 3, 212, 106, 0, 2882, 2904, 1, 0, 0, 0, 2883, 2884, 5, 53, 0, 0, 2884, 2904, 3, 1204, 602, 0, 2885, 2886, 5, 438, 0, 0, 2886, 2887, 3, 198, 99, 0, 2887, 2895, 5, 36, 0, 0, 2888, 2889, 5, 219, 0, 0, 2889, 2896, 3, 284, 142, 0, 2890, 2891, 5, 2, 0, 0, 2891, 2892, 3, 1162, 581, 0, 2892, 2893, 5, 3, 0, 0, 2893, 2894, 5, 440, 0, 0, 2894, 2896, 1, 0, 0, 0, 2895, 2888, 1, 0, 0, 0, 2895, 2890, 1, 0, 0, 0, 2896, 2904, 1, 0, 0, 0, 2897, 2898, 5, 86, 0, 0, 2898, 2899, 3, 1336, 668, 0, 2899, 2900, 3, 214, 107, 0, 2900, 2901, 3, 222, 111, 0, 2901, 2902, 3, 230, 115, 0, 2902, 2904, 1, 0, 0, 0, 2903, 2865, 1, 0, 0, 0, 2903, 2867, 1, 0, 0, 0, 2903, 2868, 1, 0, 0, 0, 2903, 2872, 1, 0, 0, 0, 2903, 2877, 1, 0, 0, 0, 2903, 2883, 1, 0, 0, 0, 2903, 2885, 1, 0, 0, 0, 2903, 2897, 1, 0, 0, 0, 2904, 197, 1, 0, 0, 0, 2905, 2909, 5, 139, 0, 0, 2906, 2907, 5, 147, 0, 0, 2907, 2909, 5, 53, 0, 0, 2908, 2905, 1, 0, 0, 0, 2908, 2906, 1, 0, 0, 0, 2909, 199, 1, 0, 0, 0, 2910, 2916, 5, 54, 0, 0, 2911, 2912, 5, 77, 0, 0, 2912, 2916, 5, 54, 0, 0, 2913, 2914, 5, 69, 0, 0, 2914, 2916, 7, 8, 0, 0, 2915, 2910, 1, 0, 0, 0, 2915, 2911, 1, 0, 0, 0, 2915, 2913, 1, 0, 0, 0, 2916, 201, 1, 0, 0, 0, 2917, 2918, 5, 120, 0, 0, 2918, 2919, 3, 1336, 668, 0, 2919, 2920, 3, 204, 102, 0, 2920, 203, 1, 0, 0, 0, 2921, 2922, 7, 12, 0, 0, 2922, 2924, 3, 206, 103, 0, 2923, 2921, 1, 0, 0, 0, 2924, 2927, 1, 0, 0, 0, 2925, 2923, 1, 0, 0, 0, 2925, 2926, 1, 0, 0, 0, 2926, 205, 1, 0, 0, 0, 2927, 2925, 1, 0, 0, 0, 2928, 2929, 7, 13, 0, 0, 2929, 207, 1, 0, 0, 0, 2930, 2931, 5, 45, 0, 0, 2931, 2932, 3, 1340, 670, 0, 2932, 2933, 3, 210, 105, 0, 2933, 2936, 1, 0, 0, 0, 2934, 2936, 3, 210, 105, 0, 2935, 2930, 1, 0, 0, 0, 2935, 2934, 1, 0, 0, 0, 2936, 209, 1, 0, 0, 0, 2937, 2938, 5, 42, 0, 0, 2938, 2939, 5, 2, 0, 0, 2939, 2940, 3, 1162, 581, 0, 2940, 2941, 5, 3, 0, 0, 2941, 2942, 3, 440, 220, 0, 2942, 2996, 1, 0, 0, 0, 2943, 2955, 5, 98, 0, 0, 2944, 2945, 5, 2, 0, 0, 2945, 2946, 3, 216, 108, 0, 2946, 2947, 5, 3, 0, 0, 2947, 2948, 3, 220, 110, 0, 2948, 2949, 3, 664, 332, 0, 2949, 2950, 3, 256, 128, 0, 2950, 2951, 3, 440, 220, 0, 2951, 2956, 1, 0, 0, 0, 2952, 2953, 3, 258, 129, 0, 2953, 2954, 3, 440, 220, 0, 2954, 2956, 1, 0, 0, 0, 2955, 2944, 1, 0, 0, 0, 2955, 2952, 1, 0, 0, 0, 2956, 2996, 1, 0, 0, 0, 2957, 2958, 5, 85, 0, 0, 2958, 2970, 5, 236, 0, 0, 2959, 2960, 5, 2, 0, 0, 2960, 2961, 3, 216, 108, 0, 2961, 2962, 5, 3, 0, 0, 2962, 2963, 3, 220, 110, 0, 2963, 2964, 3, 664, 332, 0, 2964, 2965, 3, 256, 128, 0, 2965, 2966, 3, 440, 220, 0, 2966, 2971, 1, 0, 0, 0, 2967, 2968, 3, 258, 129, 0, 2968, 2969, 3, 440, 220, 0, 2969, 2971, 1, 0, 0, 0, 2970, 2959, 1, 0, 0, 0, 2970, 2967, 1, 0, 0, 0, 2971, 2996, 1, 0, 0, 0, 2972, 2973, 5, 199, 0, 0, 2973, 2974, 3, 596, 298, 0, 2974, 2975, 5, 2, 0, 0, 2975, 2976, 3, 224, 112, 0, 2976, 2977, 5, 3, 0, 0, 2977, 2978, 3, 220, 110, 0, 2978, 2979, 3, 664, 332, 0, 2979, 2980, 3, 256, 128, 0, 2980, 2981, 3, 228, 114, 0, 2981, 2982, 3, 440, 220, 0, 2982, 2996, 1, 0, 0, 0, 2983, 2984, 5, 63, 0, 0, 2984, 2985, 5, 236, 0, 0, 2985, 2986, 5, 2, 0, 0, 2986, 2987, 3, 216, 108, 0, 2987, 2988, 5, 3, 0, 0, 2988, 2989, 5, 86, 0, 0, 2989, 2990, 3, 1336, 668, 0, 2990, 2991, 3, 214, 107, 0, 2991, 2992, 3, 222, 111, 0, 2992, 2993, 3, 230, 115, 0, 2993, 2994, 3, 440, 220, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2937, 1, 0, 0, 0, 2995, 2943, 1, 0, 0, 0, 2995, 2957, 1, 0, 0, 0, 2995, 2972, 1, 0, 0, 0, 2995, 2983, 1, 0, 0, 0, 2996, 211, 1, 0, 0, 0, 2997, 2998, 5, 262, 0, 0, 2998, 3001, 5, 228, 0, 0, 2999, 3001, 1, 0, 0, 0, 3000, 2997, 1, 0, 0, 0, 3000, 2999, 1, 0, 0, 0, 3001, 213, 1, 0, 0, 0, 3002, 3003, 5, 2, 0, 0, 3003, 3004, 3, 216, 108, 0, 3004, 3005, 5, 3, 0, 0, 3005, 3008, 1, 0, 0, 0, 3006, 3008, 1, 0, 0, 0, 3007, 3002, 1, 0, 0, 0, 3007, 3006, 1, 0, 0, 0, 3008, 215, 1, 0, 0, 0, 3009, 3014, 3, 218, 109, 0, 3010, 3011, 5, 6, 0, 0, 3011, 3013, 3, 218, 109, 0, 3012, 3010, 1, 0, 0, 0, 3013, 3016, 1, 0, 0, 0, 3014, 3012, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 217, 1, 0, 0, 0, 3016, 3014, 1, 0, 0, 0, 3017, 3018, 3, 1372, 686, 0, 3018, 219, 1, 0, 0, 0, 3019, 3020, 5, 441, 0, 0, 3020, 3021, 5, 2, 0, 0, 3021, 3022, 3, 216, 108, 0, 3022, 3023, 5, 3, 0, 0, 3023, 3026, 1, 0, 0, 0, 3024, 3026, 1, 0, 0, 0, 3025, 3019, 1, 0, 0, 0, 3025, 3024, 1, 0, 0, 0, 3026, 221, 1, 0, 0, 0, 3027, 3028, 5, 249, 0, 0, 3028, 3031, 7, 14, 0, 0, 3029, 3031, 1, 0, 0, 0, 3030, 3027, 1, 0, 0, 0, 3030, 3029, 1, 0, 0, 0, 3031, 223, 1, 0, 0, 0, 3032, 3037, 3, 226, 113, 0, 3033, 3034, 5, 6, 0, 0, 3034, 3036, 3, 226, 113, 0, 3035, 3033, 1, 0, 0, 0, 3036, 3039, 1, 0, 0, 0, 3037, 3035, 1, 0, 0, 0, 3037, 3038, 1, 0, 0, 0, 3038, 225, 1, 0, 0, 0, 3039, 3037, 1, 0, 0, 0, 3040, 3041, 3, 602, 301, 0, 3041, 3048, 5, 105, 0, 0, 3042, 3049, 3, 684, 342, 0, 3043, 3044, 5, 271, 0, 0, 3044, 3045, 5, 2, 0, 0, 3045, 3046, 3, 684, 342, 0, 3046, 3047, 5, 3, 0, 0, 3047, 3049, 1, 0, 0, 0, 3048, 3042, 1, 0, 0, 0, 3048, 3043, 1, 0, 0, 0, 3049, 227, 1, 0, 0, 0, 3050, 3051, 5, 103, 0, 0, 3051, 3052, 5, 2, 0, 0, 3052, 3053, 3, 1162, 581, 0, 3053, 3054, 5, 3, 0, 0, 3054, 3057, 1, 0, 0, 0, 3055, 3057, 1, 0, 0, 0, 3056, 3050, 1, 0, 0, 0, 3056, 3055, 1, 0, 0, 0, 3057, 229, 1, 0, 0, 0, 3058, 3068, 3, 232, 116, 0, 3059, 3068, 3, 234, 117, 0, 3060, 3061, 3, 232, 116, 0, 3061, 3062, 3, 234, 117, 0, 3062, 3068, 1, 0, 0, 0, 3063, 3064, 3, 234, 117, 0, 3064, 3065, 3, 232, 116, 0, 3065, 3068, 1, 0, 0, 0, 3066, 3068, 1, 0, 0, 0, 3067, 3058, 1, 0, 0, 0, 3067, 3059, 1, 0, 0, 0, 3067, 3060, 1, 0, 0, 0, 3067, 3063, 1, 0, 0, 0, 3067, 3066, 1, 0, 0, 0, 3068, 231, 1, 0, 0, 0, 3069, 3070, 5, 80, 0, 0, 3070, 3071, 5, 362, 0, 0, 3071, 3072, 3, 236, 118, 0, 3072, 233, 1, 0, 0, 0, 3073, 3074, 5, 80, 0, 0, 3074, 3075, 5, 182, 0, 0, 3075, 3076, 3, 236, 118, 0, 3076, 235, 1, 0, 0, 0, 3077, 3078, 5, 262, 0, 0, 3078, 3084, 5, 132, 0, 0, 3079, 3084, 5, 308, 0, 0, 3080, 3084, 5, 150, 0, 0, 3081, 3082, 5, 326, 0, 0, 3082, 3084, 7, 15, 0, 0, 3083, 3077, 1, 0, 0, 0, 3083, 3079, 1, 0, 0, 0, 3083, 3080, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3084, 237, 1, 0, 0, 0, 3085, 3086, 5, 229, 0, 0, 3086, 3087, 5, 2, 0, 0, 3087, 3088, 3, 1334, 667, 0, 3088, 3089, 5, 3, 0, 0, 3089, 3092, 1, 0, 0, 0, 3090, 3092, 1, 0, 0, 0, 3091, 3085, 1, 0, 0, 0, 3091, 3090, 1, 0, 0, 0, 3092, 239, 1, 0, 0, 0, 3093, 3096, 3, 242, 121, 0, 3094, 3096, 1, 0, 0, 0, 3095, 3093, 1, 0, 0, 0, 3095, 3094, 1, 0, 0, 0, 3096, 241, 1, 0, 0, 0, 3097, 3098, 5, 278, 0, 0, 3098, 3099, 5, 147, 0, 0, 3099, 3100, 3, 1372, 686, 0, 3100, 3101, 5, 2, 0, 0, 3101, 3102, 3, 244, 122, 0, 3102, 3103, 5, 3, 0, 0, 3103, 243, 1, 0, 0, 0, 3104, 3109, 3, 246, 123, 0, 3105, 3106, 5, 6, 0, 0, 3106, 3108, 3, 246, 123, 0, 3107, 3105, 1, 0, 0, 0, 3108, 3111, 1, 0, 0, 0, 3109, 3107, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 245, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3112, 3113, 3, 1372, 686, 0, 3113, 3114, 3, 608, 304, 0, 3114, 3115, 3, 610, 305, 0, 3115, 3127, 1, 0, 0, 0, 3116, 3117, 3, 1214, 607, 0, 3117, 3118, 3, 608, 304, 0, 3118, 3119, 3, 610, 305, 0, 3119, 3127, 1, 0, 0, 0, 3120, 3121, 5, 2, 0, 0, 3121, 3122, 3, 1162, 581, 0, 3122, 3123, 5, 3, 0, 0, 3123, 3124, 3, 608, 304, 0, 3124, 3125, 3, 610, 305, 0, 3125, 3127, 1, 0, 0, 0, 3126, 3112, 1, 0, 0, 0, 3126, 3116, 1, 0, 0, 0, 3126, 3120, 1, 0, 0, 0, 3127, 247, 1, 0, 0, 0, 3128, 3129, 5, 100, 0, 0, 3129, 3132, 3, 1340, 670, 0, 3130, 3132, 1, 0, 0, 0, 3131, 3128, 1, 0, 0, 0, 3131, 3130, 1, 0, 0, 0, 3132, 249, 1, 0, 0, 0, 3133, 3134, 5, 105, 0, 0, 3134, 3139, 3, 116, 58, 0, 3135, 3136, 5, 372, 0, 0, 3136, 3139, 5, 270, 0, 0, 3137, 3139, 1, 0, 0, 0, 3138, 3133, 1, 0, 0, 0, 3138, 3135, 1, 0, 0, 0, 3138, 3137, 1, 0, 0, 0, 3139, 251, 1, 0, 0, 0, 3140, 3141, 5, 80, 0, 0, 3141, 3147, 5, 161, 0, 0, 3142, 3148, 5, 191, 0, 0, 3143, 3144, 5, 182, 0, 0, 3144, 3148, 5, 313, 0, 0, 3145, 3146, 5, 285, 0, 0, 3146, 3148, 5, 313, 0, 0, 3147, 3142, 1, 0, 0, 0, 3147, 3143, 1, 0, 0, 0, 3147, 3145, 1, 0, 0, 0, 3148, 3151, 1, 0, 0, 0, 3149, 3151, 1, 0, 0, 0, 3150, 3140, 1, 0, 0, 0, 3150, 3149, 1, 0, 0, 0, 3151, 253, 1, 0, 0, 0, 3152, 3153, 5, 344, 0, 0, 3153, 3156, 3, 1340, 670, 0, 3154, 3156, 1, 0, 0, 0, 3155, 3152, 1, 0, 0, 0, 3155, 3154, 1, 0, 0, 0, 3156, 255, 1, 0, 0, 0, 3157, 3158, 5, 100, 0, 0, 3158, 3159, 5, 226, 0, 0, 3159, 3160, 5, 344, 0, 0, 3160, 3163, 3, 1340, 670, 0, 3161, 3163, 1, 0, 0, 0, 3162, 3157, 1, 0, 0, 0, 3162, 3161, 1, 0, 0, 0, 3163, 257, 1, 0, 0, 0, 3164, 3165, 5, 100, 0, 0, 3165, 3166, 5, 226, 0, 0, 3166, 3167, 3, 1340, 670, 0, 3167, 259, 1, 0, 0, 0, 3168, 3169, 5, 46, 0, 0, 3169, 3173, 5, 335, 0, 0, 3170, 3171, 5, 220, 0, 0, 3171, 3172, 5, 77, 0, 0, 3172, 3174, 5, 389, 0, 0, 3173, 3170, 1, 0, 0, 0, 3173, 3174, 1, 0, 0, 0, 3174, 3175, 1, 0, 0, 0, 3175, 3176, 3, 524, 262, 0, 3176, 3177, 3, 870, 435, 0, 3177, 3178, 5, 80, 0, 0, 3178, 3179, 3, 1280, 640, 0, 3179, 3180, 5, 64, 0, 0, 3180, 3181, 3, 1056, 528, 0, 3181, 261, 1, 0, 0, 0, 3182, 3183, 5, 138, 0, 0, 3183, 3186, 5, 335, 0, 0, 3184, 3185, 5, 220, 0, 0, 3185, 3187, 5, 389, 0, 0, 3186, 3184, 1, 0, 0, 0, 3186, 3187, 1, 0, 0, 0, 3187, 3188, 1, 0, 0, 0, 3188, 3189, 3, 524, 262, 0, 3189, 3190, 5, 326, 0, 0, 3190, 3191, 5, 335, 0, 0, 3191, 3192, 3, 1364, 682, 0, 3192, 263, 1, 0, 0, 0, 3193, 3194, 5, 46, 0, 0, 3194, 3195, 3, 174, 87, 0, 3195, 3199, 5, 92, 0, 0, 3196, 3197, 5, 220, 0, 0, 3197, 3198, 5, 77, 0, 0, 3198, 3200, 5, 389, 0, 0, 3199, 3196, 1, 0, 0, 0, 3199, 3200, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3202, 3, 266, 133, 0, 3202, 3203, 5, 36, 0, 0, 3203, 3204, 3, 960, 480, 0, 3204, 3205, 3, 268, 134, 0, 3205, 265, 1, 0, 0, 0, 3206, 3207, 3, 1336, 668, 0, 3207, 3208, 3, 214, 107, 0, 3208, 3209, 3, 248, 124, 0, 3209, 3210, 3, 250, 125, 0, 3210, 3211, 3, 252, 126, 0, 3211, 3212, 3, 254, 127, 0, 3212, 267, 1, 0, 0, 0, 3213, 3217, 5, 105, 0, 0, 3214, 3218, 5, 174, 0, 0, 3215, 3216, 5, 262, 0, 0, 3216, 3218, 5, 174, 0, 0, 3217, 3214, 1, 0, 0, 0, 3217, 3215, 1, 0, 0, 0, 3218, 3221, 1, 0, 0, 0, 3219, 3221, 1, 0, 0, 0, 3220, 3213, 1, 0, 0, 0, 3220, 3219, 1, 0, 0, 0, 3221, 269, 1, 0, 0, 0, 3222, 3223, 5, 46, 0, 0, 3223, 3224, 3, 274, 137, 0, 3224, 3225, 5, 251, 0, 0, 3225, 3229, 5, 369, 0, 0, 3226, 3227, 5, 220, 0, 0, 3227, 3228, 5, 77, 0, 0, 3228, 3230, 5, 389, 0, 0, 3229, 3226, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3232, 3, 272, 136, 0, 3232, 3233, 5, 36, 0, 0, 3233, 3234, 3, 960, 480, 0, 3234, 3235, 3, 268, 134, 0, 3235, 271, 1, 0, 0, 0, 3236, 3237, 3, 1336, 668, 0, 3237, 3238, 3, 214, 107, 0, 3238, 3239, 3, 248, 124, 0, 3239, 3240, 3, 118, 59, 0, 3240, 3241, 3, 254, 127, 0, 3241, 273, 1, 0, 0, 0, 3242, 3245, 5, 360, 0, 0, 3243, 3245, 1, 0, 0, 0, 3244, 3242, 1, 0, 0, 0, 3244, 3243, 1, 0, 0, 0, 3245, 275, 1, 0, 0, 0, 3246, 3247, 5, 298, 0, 0, 3247, 3248, 5, 251, 0, 0, 3248, 3249, 5, 369, 0, 0, 3249, 3250, 3, 592, 296, 0, 3250, 3251, 3, 1336, 668, 0, 3251, 3252, 3, 268, 134, 0, 3252, 277, 1, 0, 0, 0, 3253, 3254, 5, 46, 0, 0, 3254, 3255, 3, 174, 87, 0, 3255, 3259, 5, 321, 0, 0, 3256, 3257, 5, 220, 0, 0, 3257, 3258, 5, 77, 0, 0, 3258, 3260, 5, 389, 0, 0, 3259, 3256, 1, 0, 0, 0, 3259, 3260, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3262, 3, 1336, 668, 0, 3262, 3263, 3, 282, 141, 0, 3263, 279, 1, 0, 0, 0, 3264, 3265, 5, 138, 0, 0, 3265, 3268, 5, 321, 0, 0, 3266, 3267, 5, 220, 0, 0, 3267, 3269, 5, 389, 0, 0, 3268, 3266, 1, 0, 0, 0, 3268, 3269, 1, 0, 0, 0, 3269, 3270, 1, 0, 0, 0, 3270, 3271, 3, 1336, 668, 0, 3271, 3272, 3, 286, 143, 0, 3272, 281, 1, 0, 0, 0, 3273, 3276, 3, 286, 143, 0, 3274, 3276, 1, 0, 0, 0, 3275, 3273, 1, 0, 0, 0, 3275, 3274, 1, 0, 0, 0, 3276, 283, 1, 0, 0, 0, 3277, 3278, 5, 2, 0, 0, 3278, 3279, 3, 286, 143, 0, 3279, 3280, 5, 3, 0, 0, 3280, 3283, 1, 0, 0, 0, 3281, 3283, 1, 0, 0, 0, 3282, 3277, 1, 0, 0, 0, 3282, 3281, 1, 0, 0, 0, 3283, 285, 1, 0, 0, 0, 3284, 3286, 3, 288, 144, 0, 3285, 3284, 1, 0, 0, 0, 3286, 3287, 1, 0, 0, 0, 3287, 3285, 1, 0, 0, 0, 3287, 3288, 1, 0, 0, 0, 3288, 287, 1, 0, 0, 0, 3289, 3290, 5, 36, 0, 0, 3290, 3320, 3, 1122, 561, 0, 3291, 3292, 5, 148, 0, 0, 3292, 3320, 3, 292, 146, 0, 3293, 3320, 5, 173, 0, 0, 3294, 3295, 5, 225, 0, 0, 3295, 3296, 3, 290, 145, 0, 3296, 3297, 3, 292, 146, 0, 3297, 3320, 1, 0, 0, 0, 3298, 3299, 5, 252, 0, 0, 3299, 3320, 3, 292, 146, 0, 3300, 3301, 5, 255, 0, 0, 3301, 3320, 3, 292, 146, 0, 3302, 3303, 5, 262, 0, 0, 3303, 3320, 7, 16, 0, 0, 3304, 3305, 5, 274, 0, 0, 3305, 3306, 5, 147, 0, 0, 3306, 3320, 3, 524, 262, 0, 3307, 3308, 5, 321, 0, 0, 3308, 3309, 5, 259, 0, 0, 3309, 3320, 3, 524, 262, 0, 3310, 3311, 5, 333, 0, 0, 3311, 3312, 3, 16, 8, 0, 3312, 3313, 3, 292, 146, 0, 3313, 3320, 1, 0, 0, 0, 3314, 3315, 5, 307, 0, 0, 3315, 3317, 3, 16, 8, 0, 3316, 3318, 3, 292, 146, 0, 3317, 3316, 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 3320, 1, 0, 0, 0, 3319, 3289, 1, 0, 0, 0, 3319, 3291, 1, 0, 0, 0, 3319, 3293, 1, 0, 0, 0, 3319, 3294, 1, 0, 0, 0, 3319, 3298, 1, 0, 0, 0, 3319, 3300, 1, 0, 0, 0, 3319, 3302, 1, 0, 0, 0, 3319, 3304, 1, 0, 0, 0, 3319, 3307, 1, 0, 0, 0, 3319, 3310, 1, 0, 0, 0, 3319, 3314, 1, 0, 0, 0, 3320, 289, 1, 0, 0, 0, 3321, 3324, 5, 147, 0, 0, 3322, 3324, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, 0, 3323, 3322, 1, 0, 0, 0, 3324, 291, 1, 0, 0, 0, 3325, 3332, 3, 1354, 677, 0, 3326, 3327, 5, 12, 0, 0, 3327, 3332, 3, 1354, 677, 0, 3328, 3329, 5, 13, 0, 0, 3329, 3332, 3, 1354, 677, 0, 3330, 3332, 3, 1364, 682, 0, 3331, 3325, 1, 0, 0, 0, 3331, 3326, 1, 0, 0, 0, 3331, 3328, 1, 0, 0, 0, 3331, 3330, 1, 0, 0, 0, 3332, 293, 1, 0, 0, 0, 3333, 3338, 3, 292, 146, 0, 3334, 3335, 5, 6, 0, 0, 3335, 3337, 3, 292, 146, 0, 3336, 3334, 1, 0, 0, 0, 3337, 3340, 1, 0, 0, 0, 3338, 3336, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 295, 1, 0, 0, 0, 3340, 3338, 1, 0, 0, 0, 3341, 3342, 5, 46, 0, 0, 3342, 3343, 3, 618, 309, 0, 3343, 3344, 3, 298, 149, 0, 3344, 3345, 3, 308, 154, 0, 3345, 3346, 5, 238, 0, 0, 3346, 3352, 3, 1340, 670, 0, 3347, 3348, 5, 215, 0, 0, 3348, 3349, 3, 300, 150, 0, 3349, 3350, 3, 302, 151, 0, 3350, 3351, 3, 306, 153, 0, 3351, 3353, 1, 0, 0, 0, 3352, 3347, 1, 0, 0, 0, 3352, 3353, 1, 0, 0, 0, 3353, 297, 1, 0, 0, 0, 3354, 3357, 5, 352, 0, 0, 3355, 3357, 1, 0, 0, 0, 3356, 3354, 1, 0, 0, 0, 3356, 3355, 1, 0, 0, 0, 3357, 299, 1, 0, 0, 0, 3358, 3360, 3, 1340, 670, 0, 3359, 3361, 3, 526, 263, 0, 3360, 3359, 1, 0, 0, 0, 3360, 3361, 1, 0, 0, 0, 3361, 301, 1, 0, 0, 0, 3362, 3363, 5, 230, 0, 0, 3363, 3366, 3, 300, 150, 0, 3364, 3366, 1, 0, 0, 0, 3365, 3362, 1, 0, 0, 0, 3365, 3364, 1, 0, 0, 0, 3366, 303, 1, 0, 0, 0, 3367, 3368, 5, 366, 0, 0, 3368, 3372, 3, 300, 150, 0, 3369, 3370, 5, 262, 0, 0, 3370, 3372, 5, 366, 0, 0, 3371, 3367, 1, 0, 0, 0, 3371, 3369, 1, 0, 0, 0, 3372, 305, 1, 0, 0, 0, 3373, 3376, 3, 304, 152, 0, 3374, 3376, 1, 0, 0, 0, 3375, 3373, 1, 0, 0, 0, 3375, 3374, 1, 0, 0, 0, 3376, 307, 1, 0, 0, 0, 3377, 3380, 5, 288, 0, 0, 3378, 3380, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3378, 1, 0, 0, 0, 3380, 309, 1, 0, 0, 0, 3381, 3382, 5, 46, 0, 0, 3382, 3383, 5, 344, 0, 0, 3383, 3384, 3, 1340, 670, 0, 3384, 3385, 3, 312, 156, 0, 3385, 3386, 5, 246, 0, 0, 3386, 3387, 3, 1358, 679, 0, 3387, 3388, 3, 118, 59, 0, 3388, 311, 1, 0, 0, 0, 3389, 3390, 5, 275, 0, 0, 3390, 3393, 3, 1368, 684, 0, 3391, 3393, 1, 0, 0, 0, 3392, 3389, 1, 0, 0, 0, 3392, 3391, 1, 0, 0, 0, 3393, 313, 1, 0, 0, 0, 3394, 3395, 5, 191, 0, 0, 3395, 3398, 5, 344, 0, 0, 3396, 3397, 5, 220, 0, 0, 3397, 3399, 5, 389, 0, 0, 3398, 3396, 1, 0, 0, 0, 3398, 3399, 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3401, 3, 1340, 670, 0, 3401, 315, 1, 0, 0, 0, 3402, 3403, 5, 46, 0, 0, 3403, 3407, 5, 204, 0, 0, 3404, 3405, 5, 220, 0, 0, 3405, 3406, 5, 77, 0, 0, 3406, 3408, 5, 389, 0, 0, 3407, 3404, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3410, 3, 1340, 670, 0, 3410, 3411, 3, 16, 8, 0, 3411, 3412, 3, 318, 159, 0, 3412, 317, 1, 0, 0, 0, 3413, 3415, 3, 320, 160, 0, 3414, 3413, 1, 0, 0, 0, 3415, 3418, 1, 0, 0, 0, 3416, 3414, 1, 0, 0, 0, 3416, 3417, 1, 0, 0, 0, 3417, 319, 1, 0, 0, 0, 3418, 3416, 1, 0, 0, 0, 3419, 3420, 5, 316, 0, 0, 3420, 3427, 3, 1340, 670, 0, 3421, 3422, 5, 368, 0, 0, 3422, 3427, 3, 72, 36, 0, 3423, 3424, 5, 64, 0, 0, 3424, 3427, 3, 72, 36, 0, 3425, 3427, 5, 150, 0, 0, 3426, 3419, 1, 0, 0, 0, 3426, 3421, 1, 0, 0, 0, 3426, 3423, 1, 0, 0, 0, 3426, 3425, 1, 0, 0, 0, 3427, 321, 1, 0, 0, 0, 3428, 3429, 5, 138, 0, 0, 3429, 3430, 5, 204, 0, 0, 3430, 3431, 3, 1340, 670, 0, 3431, 3432, 5, 362, 0, 0, 3432, 3433, 3, 324, 162, 0, 3433, 323, 1, 0, 0, 0, 3434, 3436, 3, 326, 163, 0, 3435, 3434, 1, 0, 0, 0, 3436, 3439, 1, 0, 0, 0, 3437, 3435, 1, 0, 0, 0, 3437, 3438, 1, 0, 0, 0, 3438, 325, 1, 0, 0, 0, 3439, 3437, 1, 0, 0, 0, 3440, 3441, 5, 94, 0, 0, 3441, 3442, 3, 72, 36, 0, 3442, 327, 1, 0, 0, 0, 3443, 3444, 5, 138, 0, 0, 3444, 3445, 5, 204, 0, 0, 3445, 3446, 3, 1340, 670, 0, 3446, 3447, 3, 40, 20, 0, 3447, 3448, 3, 516, 258, 0, 3448, 3449, 3, 1340, 670, 0, 3449, 3548, 1, 0, 0, 0, 3450, 3451, 5, 138, 0, 0, 3451, 3452, 5, 204, 0, 0, 3452, 3453, 3, 1340, 670, 0, 3453, 3454, 3, 40, 20, 0, 3454, 3455, 3, 514, 257, 0, 3455, 3456, 3, 524, 262, 0, 3456, 3548, 1, 0, 0, 0, 3457, 3458, 5, 138, 0, 0, 3458, 3459, 5, 204, 0, 0, 3459, 3460, 3, 1340, 670, 0, 3460, 3461, 3, 40, 20, 0, 3461, 3462, 5, 136, 0, 0, 3462, 3463, 3, 650, 325, 0, 3463, 3548, 1, 0, 0, 0, 3464, 3465, 5, 138, 0, 0, 3465, 3466, 5, 204, 0, 0, 3466, 3467, 3, 1340, 670, 0, 3467, 3468, 3, 40, 20, 0, 3468, 3469, 5, 41, 0, 0, 3469, 3470, 5, 2, 0, 0, 3470, 3471, 3, 1118, 559, 0, 3471, 3472, 5, 36, 0, 0, 3472, 3473, 3, 1118, 559, 0, 3473, 3474, 5, 3, 0, 0, 3474, 3548, 1, 0, 0, 0, 3475, 3476, 5, 138, 0, 0, 3476, 3477, 5, 204, 0, 0, 3477, 3478, 3, 1340, 670, 0, 3478, 3479, 3, 40, 20, 0, 3479, 3480, 5, 189, 0, 0, 3480, 3481, 3, 1118, 559, 0, 3481, 3548, 1, 0, 0, 0, 3482, 3483, 5, 138, 0, 0, 3483, 3484, 5, 204, 0, 0, 3484, 3485, 3, 1340, 670, 0, 3485, 3486, 3, 40, 20, 0, 3486, 3487, 5, 211, 0, 0, 3487, 3488, 3, 626, 313, 0, 3488, 3548, 1, 0, 0, 0, 3489, 3490, 5, 138, 0, 0, 3490, 3491, 5, 204, 0, 0, 3491, 3492, 3, 1340, 670, 0, 3492, 3493, 3, 40, 20, 0, 3493, 3494, 5, 271, 0, 0, 3494, 3495, 3, 688, 344, 0, 3495, 3548, 1, 0, 0, 0, 3496, 3497, 5, 138, 0, 0, 3497, 3498, 5, 204, 0, 0, 3498, 3499, 3, 1340, 670, 0, 3499, 3500, 3, 40, 20, 0, 3500, 3501, 5, 271, 0, 0, 3501, 3502, 5, 156, 0, 0, 3502, 3503, 3, 524, 262, 0, 3503, 3504, 5, 100, 0, 0, 3504, 3505, 3, 1340, 670, 0, 3505, 3548, 1, 0, 0, 0, 3506, 3507, 5, 138, 0, 0, 3507, 3508, 5, 204, 0, 0, 3508, 3509, 3, 1340, 670, 0, 3509, 3510, 3, 40, 20, 0, 3510, 3511, 5, 271, 0, 0, 3511, 3512, 5, 206, 0, 0, 3512, 3513, 3, 524, 262, 0, 3513, 3514, 5, 100, 0, 0, 3514, 3515, 3, 1340, 670, 0, 3515, 3548, 1, 0, 0, 0, 3516, 3517, 5, 138, 0, 0, 3517, 3518, 5, 204, 0, 0, 3518, 3519, 3, 1340, 670, 0, 3519, 3520, 3, 40, 20, 0, 3520, 3521, 5, 289, 0, 0, 3521, 3522, 3, 626, 313, 0, 3522, 3548, 1, 0, 0, 0, 3523, 3524, 5, 138, 0, 0, 3524, 3525, 5, 204, 0, 0, 3525, 3526, 3, 1340, 670, 0, 3526, 3527, 3, 40, 20, 0, 3527, 3528, 5, 442, 0, 0, 3528, 3529, 3, 626, 313, 0, 3529, 3548, 1, 0, 0, 0, 3530, 3531, 5, 138, 0, 0, 3531, 3532, 5, 204, 0, 0, 3532, 3533, 3, 1340, 670, 0, 3533, 3534, 3, 40, 20, 0, 3534, 3535, 5, 443, 0, 0, 3535, 3536, 5, 62, 0, 0, 3536, 3537, 3, 1118, 559, 0, 3537, 3538, 5, 238, 0, 0, 3538, 3539, 3, 1340, 670, 0, 3539, 3548, 1, 0, 0, 0, 3540, 3541, 5, 138, 0, 0, 3541, 3542, 5, 204, 0, 0, 3542, 3543, 3, 1340, 670, 0, 3543, 3544, 3, 40, 20, 0, 3544, 3545, 5, 353, 0, 0, 3545, 3546, 3, 1118, 559, 0, 3546, 3548, 1, 0, 0, 0, 3547, 3443, 1, 0, 0, 0, 3547, 3450, 1, 0, 0, 0, 3547, 3457, 1, 0, 0, 0, 3547, 3464, 1, 0, 0, 0, 3547, 3475, 1, 0, 0, 0, 3547, 3482, 1, 0, 0, 0, 3547, 3489, 1, 0, 0, 0, 3547, 3496, 1, 0, 0, 0, 3547, 3506, 1, 0, 0, 0, 3547, 3516, 1, 0, 0, 0, 3547, 3523, 1, 0, 0, 0, 3547, 3530, 1, 0, 0, 0, 3547, 3540, 1, 0, 0, 0, 3548, 329, 1, 0, 0, 0, 3549, 3550, 5, 46, 0, 0, 3550, 3551, 5, 63, 0, 0, 3551, 3552, 5, 174, 0, 0, 3552, 3553, 5, 374, 0, 0, 3553, 3554, 3, 1340, 670, 0, 3554, 3555, 3, 336, 168, 0, 3555, 3556, 3, 340, 170, 0, 3556, 331, 1, 0, 0, 0, 3557, 3558, 5, 215, 0, 0, 3558, 3566, 3, 300, 150, 0, 3559, 3560, 5, 262, 0, 0, 3560, 3566, 5, 215, 0, 0, 3561, 3562, 5, 366, 0, 0, 3562, 3566, 3, 300, 150, 0, 3563, 3564, 5, 262, 0, 0, 3564, 3566, 5, 366, 0, 0, 3565, 3557, 1, 0, 0, 0, 3565, 3559, 1, 0, 0, 0, 3565, 3561, 1, 0, 0, 0, 3565, 3563, 1, 0, 0, 0, 3566, 333, 1, 0, 0, 0, 3567, 3569, 3, 332, 166, 0, 3568, 3567, 1, 0, 0, 0, 3569, 3570, 1, 0, 0, 0, 3570, 3568, 1, 0, 0, 0, 3570, 3571, 1, 0, 0, 0, 3571, 335, 1, 0, 0, 0, 3572, 3575, 3, 334, 167, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3572, 1, 0, 0, 0, 3574, 3573, 1, 0, 0, 0, 3575, 337, 1, 0, 0, 0, 3576, 3577, 5, 138, 0, 0, 3577, 3578, 5, 63, 0, 0, 3578, 3579, 5, 174, 0, 0, 3579, 3580, 5, 374, 0, 0, 3580, 3581, 3, 1340, 670, 0, 3581, 3582, 3, 336, 168, 0, 3582, 3583, 3, 344, 172, 0, 3583, 3592, 1, 0, 0, 0, 3584, 3585, 5, 138, 0, 0, 3585, 3586, 5, 63, 0, 0, 3586, 3587, 5, 174, 0, 0, 3587, 3588, 5, 374, 0, 0, 3588, 3589, 3, 1340, 670, 0, 3589, 3590, 3, 334, 167, 0, 3590, 3592, 1, 0, 0, 0, 3591, 3576, 1, 0, 0, 0, 3591, 3584, 1, 0, 0, 0, 3592, 339, 1, 0, 0, 0, 3593, 3594, 5, 273, 0, 0, 3594, 3595, 5, 2, 0, 0, 3595, 3596, 3, 342, 171, 0, 3596, 3597, 5, 3, 0, 0, 3597, 3600, 1, 0, 0, 0, 3598, 3600, 1, 0, 0, 0, 3599, 3593, 1, 0, 0, 0, 3599, 3598, 1, 0, 0, 0, 3600, 341, 1, 0, 0, 0, 3601, 3606, 3, 350, 175, 0, 3602, 3603, 5, 6, 0, 0, 3603, 3605, 3, 350, 175, 0, 3604, 3602, 1, 0, 0, 0, 3605, 3608, 1, 0, 0, 0, 3606, 3604, 1, 0, 0, 0, 3606, 3607, 1, 0, 0, 0, 3607, 343, 1, 0, 0, 0, 3608, 3606, 1, 0, 0, 0, 3609, 3610, 5, 273, 0, 0, 3610, 3611, 5, 2, 0, 0, 3611, 3612, 3, 346, 173, 0, 3612, 3613, 5, 3, 0, 0, 3613, 345, 1, 0, 0, 0, 3614, 3619, 3, 348, 174, 0, 3615, 3616, 5, 6, 0, 0, 3616, 3618, 3, 348, 174, 0, 3617, 3615, 1, 0, 0, 0, 3618, 3621, 1, 0, 0, 0, 3619, 3617, 1, 0, 0, 0, 3619, 3620, 1, 0, 0, 0, 3620, 347, 1, 0, 0, 0, 3621, 3619, 1, 0, 0, 0, 3622, 3630, 3, 350, 175, 0, 3623, 3624, 5, 326, 0, 0, 3624, 3630, 3, 350, 175, 0, 3625, 3626, 5, 133, 0, 0, 3626, 3630, 3, 350, 175, 0, 3627, 3628, 5, 191, 0, 0, 3628, 3630, 3, 352, 176, 0, 3629, 3622, 1, 0, 0, 0, 3629, 3623, 1, 0, 0, 0, 3629, 3625, 1, 0, 0, 0, 3629, 3627, 1, 0, 0, 0, 3630, 349, 1, 0, 0, 0, 3631, 3632, 3, 352, 176, 0, 3632, 3633, 3, 354, 177, 0, 3633, 351, 1, 0, 0, 0, 3634, 3635, 3, 1380, 690, 0, 3635, 353, 1, 0, 0, 0, 3636, 3637, 3, 1358, 679, 0, 3637, 355, 1, 0, 0, 0, 3638, 3639, 5, 46, 0, 0, 3639, 3640, 5, 324, 0, 0, 3640, 3641, 3, 1340, 670, 0, 3641, 3642, 3, 358, 179, 0, 3642, 3643, 3, 362, 181, 0, 3643, 3644, 5, 63, 0, 0, 3644, 3645, 5, 174, 0, 0, 3645, 3646, 5, 374, 0, 0, 3646, 3647, 3, 1340, 670, 0, 3647, 3648, 3, 340, 170, 0, 3648, 3664, 1, 0, 0, 0, 3649, 3650, 5, 46, 0, 0, 3650, 3651, 5, 324, 0, 0, 3651, 3652, 5, 220, 0, 0, 3652, 3653, 5, 77, 0, 0, 3653, 3654, 5, 389, 0, 0, 3654, 3655, 3, 1340, 670, 0, 3655, 3656, 3, 358, 179, 0, 3656, 3657, 3, 362, 181, 0, 3657, 3658, 5, 63, 0, 0, 3658, 3659, 5, 174, 0, 0, 3659, 3660, 5, 374, 0, 0, 3660, 3661, 3, 1340, 670, 0, 3661, 3662, 3, 340, 170, 0, 3662, 3664, 1, 0, 0, 0, 3663, 3638, 1, 0, 0, 0, 3663, 3649, 1, 0, 0, 0, 3664, 357, 1, 0, 0, 0, 3665, 3666, 5, 353, 0, 0, 3666, 3669, 3, 1358, 679, 0, 3667, 3669, 1, 0, 0, 0, 3668, 3665, 1, 0, 0, 0, 3668, 3667, 1, 0, 0, 0, 3669, 359, 1, 0, 0, 0, 3670, 3673, 5, 368, 0, 0, 3671, 3674, 3, 1358, 679, 0, 3672, 3674, 5, 78, 0, 0, 3673, 3671, 1, 0, 0, 0, 3673, 3672, 1, 0, 0, 0, 3674, 361, 1, 0, 0, 0, 3675, 3678, 3, 360, 180, 0, 3676, 3678, 1, 0, 0, 0, 3677, 3675, 1, 0, 0, 0, 3677, 3676, 1, 0, 0, 0, 3678, 363, 1, 0, 0, 0, 3679, 3680, 5, 138, 0, 0, 3680, 3681, 5, 324, 0, 0, 3681, 3687, 3, 1340, 670, 0, 3682, 3688, 3, 344, 172, 0, 3683, 3685, 3, 360, 180, 0, 3684, 3686, 3, 344, 172, 0, 3685, 3684, 1, 0, 0, 0, 3685, 3686, 1, 0, 0, 0, 3686, 3688, 1, 0, 0, 0, 3687, 3682, 1, 0, 0, 0, 3687, 3683, 1, 0, 0, 0, 3688, 365, 1, 0, 0, 0, 3689, 3690, 5, 46, 0, 0, 3690, 3691, 5, 63, 0, 0, 3691, 3692, 5, 92, 0, 0, 3692, 3693, 3, 1336, 668, 0, 3693, 3694, 5, 2, 0, 0, 3694, 3695, 3, 176, 88, 0, 3695, 3696, 5, 3, 0, 0, 3696, 3697, 3, 238, 119, 0, 3697, 3698, 5, 324, 0, 0, 3698, 3699, 3, 1340, 670, 0, 3699, 3700, 3, 340, 170, 0, 3700, 3746, 1, 0, 0, 0, 3701, 3702, 5, 46, 0, 0, 3702, 3703, 5, 63, 0, 0, 3703, 3704, 5, 92, 0, 0, 3704, 3705, 5, 220, 0, 0, 3705, 3706, 5, 77, 0, 0, 3706, 3707, 5, 389, 0, 0, 3707, 3708, 3, 1336, 668, 0, 3708, 3709, 5, 2, 0, 0, 3709, 3710, 3, 176, 88, 0, 3710, 3711, 5, 3, 0, 0, 3711, 3712, 3, 238, 119, 0, 3712, 3713, 5, 324, 0, 0, 3713, 3714, 3, 1340, 670, 0, 3714, 3715, 3, 340, 170, 0, 3715, 3746, 1, 0, 0, 0, 3716, 3717, 5, 46, 0, 0, 3717, 3718, 5, 63, 0, 0, 3718, 3719, 5, 92, 0, 0, 3719, 3720, 3, 1336, 668, 0, 3720, 3721, 5, 278, 0, 0, 3721, 3722, 5, 268, 0, 0, 3722, 3723, 3, 1336, 668, 0, 3723, 3724, 3, 178, 89, 0, 3724, 3725, 3, 128, 64, 0, 3725, 3726, 5, 324, 0, 0, 3726, 3727, 3, 1340, 670, 0, 3727, 3728, 3, 340, 170, 0, 3728, 3746, 1, 0, 0, 0, 3729, 3730, 5, 46, 0, 0, 3730, 3731, 5, 63, 0, 0, 3731, 3732, 5, 92, 0, 0, 3732, 3733, 5, 220, 0, 0, 3733, 3734, 5, 77, 0, 0, 3734, 3735, 5, 389, 0, 0, 3735, 3736, 3, 1336, 668, 0, 3736, 3737, 5, 278, 0, 0, 3737, 3738, 5, 268, 0, 0, 3738, 3739, 3, 1336, 668, 0, 3739, 3740, 3, 178, 89, 0, 3740, 3741, 3, 128, 64, 0, 3741, 3742, 5, 324, 0, 0, 3742, 3743, 3, 1340, 670, 0, 3743, 3744, 3, 340, 170, 0, 3744, 3746, 1, 0, 0, 0, 3745, 3689, 1, 0, 0, 0, 3745, 3701, 1, 0, 0, 0, 3745, 3716, 1, 0, 0, 0, 3745, 3729, 1, 0, 0, 0, 3746, 367, 1, 0, 0, 0, 3747, 3748, 5, 444, 0, 0, 3748, 3749, 5, 63, 0, 0, 3749, 3750, 5, 316, 0, 0, 3750, 3751, 3, 1340, 670, 0, 3751, 3752, 3, 372, 186, 0, 3752, 3753, 5, 64, 0, 0, 3753, 3754, 5, 324, 0, 0, 3754, 3755, 3, 1340, 670, 0, 3755, 3756, 5, 71, 0, 0, 3756, 3757, 3, 1340, 670, 0, 3757, 3758, 3, 340, 170, 0, 3758, 369, 1, 0, 0, 0, 3759, 3760, 5, 74, 0, 0, 3760, 3763, 5, 94, 0, 0, 3761, 3763, 5, 59, 0, 0, 3762, 3759, 1, 0, 0, 0, 3762, 3761, 1, 0, 0, 0, 3763, 371, 1, 0, 0, 0, 3764, 3765, 3, 370, 185, 0, 3765, 3766, 5, 2, 0, 0, 3766, 3767, 3, 1076, 538, 0, 3767, 3768, 5, 3, 0, 0, 3768, 3771, 1, 0, 0, 0, 3769, 3771, 1, 0, 0, 0, 3770, 3764, 1, 0, 0, 0, 3770, 3769, 1, 0, 0, 0, 3771, 373, 1, 0, 0, 0, 3772, 3773, 5, 46, 0, 0, 3773, 3774, 5, 99, 0, 0, 3774, 3775, 5, 248, 0, 0, 3775, 3776, 5, 62, 0, 0, 3776, 3777, 3, 376, 188, 0, 3777, 3778, 5, 324, 0, 0, 3778, 3779, 3, 1340, 670, 0, 3779, 3780, 3, 340, 170, 0, 3780, 3794, 1, 0, 0, 0, 3781, 3782, 5, 46, 0, 0, 3782, 3783, 5, 99, 0, 0, 3783, 3784, 5, 248, 0, 0, 3784, 3785, 5, 220, 0, 0, 3785, 3786, 5, 77, 0, 0, 3786, 3787, 5, 389, 0, 0, 3787, 3788, 5, 62, 0, 0, 3788, 3789, 3, 376, 188, 0, 3789, 3790, 5, 324, 0, 0, 3790, 3791, 3, 1340, 670, 0, 3791, 3792, 3, 340, 170, 0, 3792, 3794, 1, 0, 0, 0, 3793, 3772, 1, 0, 0, 0, 3793, 3781, 1, 0, 0, 0, 3794, 375, 1, 0, 0, 0, 3795, 3798, 3, 1368, 684, 0, 3796, 3798, 5, 99, 0, 0, 3797, 3795, 1, 0, 0, 0, 3797, 3796, 1, 0, 0, 0, 3798, 377, 1, 0, 0, 0, 3799, 3800, 5, 191, 0, 0, 3800, 3801, 5, 99, 0, 0, 3801, 3802, 5, 248, 0, 0, 3802, 3803, 5, 62, 0, 0, 3803, 3804, 3, 376, 188, 0, 3804, 3805, 5, 324, 0, 0, 3805, 3806, 3, 1340, 670, 0, 3806, 3818, 1, 0, 0, 0, 3807, 3808, 5, 191, 0, 0, 3808, 3809, 5, 99, 0, 0, 3809, 3810, 5, 248, 0, 0, 3810, 3811, 5, 220, 0, 0, 3811, 3812, 5, 389, 0, 0, 3812, 3813, 5, 62, 0, 0, 3813, 3814, 3, 376, 188, 0, 3814, 3815, 5, 324, 0, 0, 3815, 3816, 3, 1340, 670, 0, 3816, 3818, 1, 0, 0, 0, 3817, 3799, 1, 0, 0, 0, 3817, 3807, 1, 0, 0, 0, 3818, 379, 1, 0, 0, 0, 3819, 3820, 5, 138, 0, 0, 3820, 3821, 5, 99, 0, 0, 3821, 3822, 5, 248, 0, 0, 3822, 3823, 5, 62, 0, 0, 3823, 3824, 3, 376, 188, 0, 3824, 3825, 5, 324, 0, 0, 3825, 3826, 3, 1340, 670, 0, 3826, 3827, 3, 344, 172, 0, 3827, 381, 1, 0, 0, 0, 3828, 3829, 5, 46, 0, 0, 3829, 3830, 5, 445, 0, 0, 3830, 3831, 3, 1340, 670, 0, 3831, 3832, 5, 80, 0, 0, 3832, 3833, 3, 1336, 668, 0, 3833, 3834, 3, 394, 197, 0, 3834, 3835, 3, 396, 198, 0, 3835, 3836, 3, 390, 195, 0, 3836, 3837, 3, 386, 193, 0, 3837, 3838, 3, 388, 194, 0, 3838, 383, 1, 0, 0, 0, 3839, 3840, 5, 138, 0, 0, 3840, 3841, 5, 445, 0, 0, 3841, 3842, 3, 1340, 670, 0, 3842, 3843, 5, 80, 0, 0, 3843, 3844, 3, 1336, 668, 0, 3844, 3845, 3, 392, 196, 0, 3845, 3846, 3, 386, 193, 0, 3846, 3847, 3, 388, 194, 0, 3847, 385, 1, 0, 0, 0, 3848, 3849, 5, 100, 0, 0, 3849, 3850, 5, 2, 0, 0, 3850, 3851, 3, 1162, 581, 0, 3851, 3852, 5, 3, 0, 0, 3852, 3855, 1, 0, 0, 0, 3853, 3855, 1, 0, 0, 0, 3854, 3848, 1, 0, 0, 0, 3854, 3853, 1, 0, 0, 0, 3855, 387, 1, 0, 0, 0, 3856, 3857, 5, 105, 0, 0, 3857, 3858, 5, 42, 0, 0, 3858, 3859, 5, 2, 0, 0, 3859, 3860, 3, 1162, 581, 0, 3860, 3861, 5, 3, 0, 0, 3861, 3864, 1, 0, 0, 0, 3862, 3864, 1, 0, 0, 0, 3863, 3856, 1, 0, 0, 0, 3863, 3862, 1, 0, 0, 0, 3864, 389, 1, 0, 0, 0, 3865, 3866, 5, 94, 0, 0, 3866, 3869, 3, 1370, 685, 0, 3867, 3869, 1, 0, 0, 0, 3868, 3865, 1, 0, 0, 0, 3868, 3867, 1, 0, 0, 0, 3869, 391, 1, 0, 0, 0, 3870, 3871, 5, 94, 0, 0, 3871, 3874, 3, 1370, 685, 0, 3872, 3874, 1, 0, 0, 0, 3873, 3870, 1, 0, 0, 0, 3873, 3872, 1, 0, 0, 0, 3874, 393, 1, 0, 0, 0, 3875, 3876, 5, 36, 0, 0, 3876, 3879, 3, 1382, 691, 0, 3877, 3879, 1, 0, 0, 0, 3878, 3875, 1, 0, 0, 0, 3878, 3877, 1, 0, 0, 0, 3879, 395, 1, 0, 0, 0, 3880, 3881, 5, 62, 0, 0, 3881, 3884, 3, 398, 199, 0, 3882, 3884, 1, 0, 0, 0, 3883, 3880, 1, 0, 0, 0, 3883, 3882, 1, 0, 0, 0, 3884, 397, 1, 0, 0, 0, 3885, 3886, 7, 17, 0, 0, 3886, 399, 1, 0, 0, 0, 3887, 3888, 5, 46, 0, 0, 3888, 3889, 5, 131, 0, 0, 3889, 3890, 5, 446, 0, 0, 3890, 3891, 3, 1340, 670, 0, 3891, 3892, 5, 353, 0, 0, 3892, 3893, 3, 402, 201, 0, 3893, 3894, 5, 215, 0, 0, 3894, 3895, 3, 300, 150, 0, 3895, 401, 1, 0, 0, 0, 3896, 3897, 7, 18, 0, 0, 3897, 403, 1, 0, 0, 0, 3898, 3899, 5, 46, 0, 0, 3899, 3900, 5, 350, 0, 0, 3900, 3901, 3, 1340, 670, 0, 3901, 3902, 3, 406, 203, 0, 3902, 3903, 3, 408, 204, 0, 3903, 3904, 5, 80, 0, 0, 3904, 3905, 3, 1336, 668, 0, 3905, 3906, 3, 412, 206, 0, 3906, 3907, 3, 424, 212, 0, 3907, 3908, 3, 430, 215, 0, 3908, 3909, 5, 202, 0, 0, 3909, 3910, 3, 432, 216, 0, 3910, 3911, 3, 1346, 673, 0, 3911, 3912, 5, 2, 0, 0, 3912, 3913, 3, 434, 217, 0, 3913, 3914, 5, 3, 0, 0, 3914, 3937, 1, 0, 0, 0, 3915, 3916, 5, 46, 0, 0, 3916, 3917, 5, 45, 0, 0, 3917, 3918, 5, 350, 0, 0, 3918, 3919, 3, 1340, 670, 0, 3919, 3920, 5, 135, 0, 0, 3920, 3921, 3, 408, 204, 0, 3921, 3922, 5, 80, 0, 0, 3922, 3923, 3, 1336, 668, 0, 3923, 3924, 3, 438, 219, 0, 3924, 3925, 3, 440, 220, 0, 3925, 3926, 5, 62, 0, 0, 3926, 3927, 5, 192, 0, 0, 3927, 3928, 5, 407, 0, 0, 3928, 3929, 3, 430, 215, 0, 3929, 3930, 5, 202, 0, 0, 3930, 3931, 3, 432, 216, 0, 3931, 3932, 3, 1346, 673, 0, 3932, 3933, 5, 2, 0, 0, 3933, 3934, 3, 434, 217, 0, 3934, 3935, 5, 3, 0, 0, 3935, 3937, 1, 0, 0, 0, 3936, 3898, 1, 0, 0, 0, 3936, 3915, 1, 0, 0, 0, 3937, 405, 1, 0, 0, 0, 3938, 3943, 5, 145, 0, 0, 3939, 3943, 5, 135, 0, 0, 3940, 3941, 5, 233, 0, 0, 3941, 3943, 5, 268, 0, 0, 3942, 3938, 1, 0, 0, 0, 3942, 3939, 1, 0, 0, 0, 3942, 3940, 1, 0, 0, 0, 3943, 407, 1, 0, 0, 0, 3944, 3949, 3, 410, 205, 0, 3945, 3946, 5, 82, 0, 0, 3946, 3948, 3, 410, 205, 0, 3947, 3945, 1, 0, 0, 0, 3948, 3951, 1, 0, 0, 0, 3949, 3947, 1, 0, 0, 0, 3949, 3950, 1, 0, 0, 0, 3950, 409, 1, 0, 0, 0, 3951, 3949, 1, 0, 0, 0, 3952, 3960, 5, 232, 0, 0, 3953, 3960, 5, 182, 0, 0, 3954, 3960, 5, 362, 0, 0, 3955, 3956, 5, 362, 0, 0, 3956, 3957, 5, 268, 0, 0, 3957, 3960, 3, 216, 108, 0, 3958, 3960, 5, 351, 0, 0, 3959, 3952, 1, 0, 0, 0, 3959, 3953, 1, 0, 0, 0, 3959, 3954, 1, 0, 0, 0, 3959, 3955, 1, 0, 0, 0, 3959, 3958, 1, 0, 0, 0, 3960, 411, 1, 0, 0, 0, 3961, 3962, 5, 447, 0, 0, 3962, 3965, 3, 414, 207, 0, 3963, 3965, 1, 0, 0, 0, 3964, 3961, 1, 0, 0, 0, 3964, 3963, 1, 0, 0, 0, 3965, 413, 1, 0, 0, 0, 3966, 3968, 3, 416, 208, 0, 3967, 3966, 1, 0, 0, 0, 3968, 3969, 1, 0, 0, 0, 3969, 3967, 1, 0, 0, 0, 3969, 3970, 1, 0, 0, 0, 3970, 415, 1, 0, 0, 0, 3971, 3972, 3, 418, 209, 0, 3972, 3973, 3, 420, 210, 0, 3973, 3974, 3, 834, 417, 0, 3974, 3975, 3, 422, 211, 0, 3975, 417, 1, 0, 0, 0, 3976, 3977, 7, 19, 0, 0, 3977, 419, 1, 0, 0, 0, 3978, 3979, 7, 20, 0, 0, 3979, 421, 1, 0, 0, 0, 3980, 3981, 3, 1372, 686, 0, 3981, 423, 1, 0, 0, 0, 3982, 3983, 5, 62, 0, 0, 3983, 3984, 3, 426, 213, 0, 3984, 3985, 3, 428, 214, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3988, 1, 0, 0, 0, 3987, 3982, 1, 0, 0, 0, 3987, 3986, 1, 0, 0, 0, 3988, 425, 1, 0, 0, 0, 3989, 3992, 5, 192, 0, 0, 3990, 3992, 1, 0, 0, 0, 3991, 3989, 1, 0, 0, 0, 3991, 3990, 1, 0, 0, 0, 3992, 427, 1, 0, 0, 0, 3993, 3994, 7, 21, 0, 0, 3994, 429, 1, 0, 0, 0, 3995, 3996, 5, 102, 0, 0, 3996, 3997, 5, 2, 0, 0, 3997, 3998, 3, 1162, 581, 0, 3998, 3999, 5, 3, 0, 0, 3999, 4002, 1, 0, 0, 0, 4000, 4002, 1, 0, 0, 0, 4001, 3995, 1, 0, 0, 0, 4001, 4000, 1, 0, 0, 0, 4002, 431, 1, 0, 0, 0, 4003, 4004, 7, 22, 0, 0, 4004, 433, 1, 0, 0, 0, 4005, 4008, 3, 436, 218, 0, 4006, 4008, 1, 0, 0, 0, 4007, 4005, 1, 0, 0, 0, 4007, 4006, 1, 0, 0, 0, 4008, 4013, 1, 0, 0, 0, 4009, 4010, 5, 6, 0, 0, 4010, 4012, 3, 436, 218, 0, 4011, 4009, 1, 0, 0, 0, 4012, 4015, 1, 0, 0, 0, 4013, 4011, 1, 0, 0, 0, 4013, 4014, 1, 0, 0, 0, 4014, 435, 1, 0, 0, 0, 4015, 4013, 1, 0, 0, 0, 4016, 4021, 3, 1356, 678, 0, 4017, 4021, 3, 1354, 677, 0, 4018, 4021, 3, 1358, 679, 0, 4019, 4021, 3, 1380, 690, 0, 4020, 4016, 1, 0, 0, 0, 4020, 4017, 1, 0, 0, 0, 4020, 4018, 1, 0, 0, 0, 4020, 4019, 1, 0, 0, 0, 4021, 437, 1, 0, 0, 0, 4022, 4023, 5, 64, 0, 0, 4023, 4026, 3, 1336, 668, 0, 4024, 4026, 1, 0, 0, 0, 4025, 4022, 1, 0, 0, 0, 4025, 4024, 1, 0, 0, 0, 4026, 439, 1, 0, 0, 0, 4027, 4029, 3, 442, 221, 0, 4028, 4027, 1, 0, 0, 0, 4029, 4032, 1, 0, 0, 0, 4030, 4028, 1, 0, 0, 0, 4030, 4031, 1, 0, 0, 0, 4031, 441, 1, 0, 0, 0, 4032, 4030, 1, 0, 0, 0, 4033, 4034, 5, 77, 0, 0, 4034, 4045, 5, 54, 0, 0, 4035, 4045, 5, 54, 0, 0, 4036, 4037, 5, 69, 0, 0, 4037, 4045, 5, 221, 0, 0, 4038, 4039, 5, 69, 0, 0, 4039, 4045, 5, 180, 0, 0, 4040, 4041, 5, 77, 0, 0, 4041, 4045, 5, 364, 0, 0, 4042, 4043, 5, 262, 0, 0, 4043, 4045, 5, 228, 0, 0, 4044, 4033, 1, 0, 0, 0, 4044, 4035, 1, 0, 0, 0, 4044, 4036, 1, 0, 0, 0, 4044, 4038, 1, 0, 0, 0, 4044, 4040, 1, 0, 0, 0, 4044, 4042, 1, 0, 0, 0, 4045, 443, 1, 0, 0, 0, 4046, 4047, 5, 46, 0, 0, 4047, 4048, 5, 198, 0, 0, 4048, 4049, 5, 350, 0, 0, 4049, 4050, 3, 1340, 670, 0, 4050, 4051, 5, 80, 0, 0, 4051, 4052, 3, 1380, 690, 0, 4052, 4053, 5, 202, 0, 0, 4053, 4054, 3, 432, 216, 0, 4054, 4055, 3, 1346, 673, 0, 4055, 4056, 5, 2, 0, 0, 4056, 4057, 5, 3, 0, 0, 4057, 4073, 1, 0, 0, 0, 4058, 4059, 5, 46, 0, 0, 4059, 4060, 5, 198, 0, 0, 4060, 4061, 5, 350, 0, 0, 4061, 4062, 3, 1340, 670, 0, 4062, 4063, 5, 80, 0, 0, 4063, 4064, 3, 1380, 690, 0, 4064, 4065, 5, 102, 0, 0, 4065, 4066, 3, 446, 223, 0, 4066, 4067, 5, 202, 0, 0, 4067, 4068, 3, 432, 216, 0, 4068, 4069, 3, 1346, 673, 0, 4069, 4070, 5, 2, 0, 0, 4070, 4071, 5, 3, 0, 0, 4071, 4073, 1, 0, 0, 0, 4072, 4046, 1, 0, 0, 0, 4072, 4058, 1, 0, 0, 0, 4073, 445, 1, 0, 0, 0, 4074, 4079, 3, 448, 224, 0, 4075, 4076, 5, 33, 0, 0, 4076, 4078, 3, 448, 224, 0, 4077, 4075, 1, 0, 0, 0, 4078, 4081, 1, 0, 0, 0, 4079, 4077, 1, 0, 0, 0, 4079, 4080, 1, 0, 0, 0, 4080, 447, 1, 0, 0, 0, 4081, 4079, 1, 0, 0, 0, 4082, 4083, 3, 1372, 686, 0, 4083, 4084, 5, 68, 0, 0, 4084, 4085, 5, 2, 0, 0, 4085, 4086, 3, 450, 225, 0, 4086, 4087, 5, 3, 0, 0, 4087, 449, 1, 0, 0, 0, 4088, 4093, 3, 1358, 679, 0, 4089, 4090, 5, 6, 0, 0, 4090, 4092, 3, 1358, 679, 0, 4091, 4089, 1, 0, 0, 0, 4092, 4095, 1, 0, 0, 0, 4093, 4091, 1, 0, 0, 0, 4093, 4094, 1, 0, 0, 0, 4094, 451, 1, 0, 0, 0, 4095, 4093, 1, 0, 0, 0, 4096, 4097, 5, 138, 0, 0, 4097, 4098, 5, 198, 0, 0, 4098, 4099, 5, 350, 0, 0, 4099, 4100, 3, 1340, 670, 0, 4100, 4101, 3, 454, 227, 0, 4101, 453, 1, 0, 0, 0, 4102, 4109, 5, 193, 0, 0, 4103, 4104, 5, 193, 0, 0, 4104, 4109, 5, 305, 0, 0, 4105, 4106, 5, 193, 0, 0, 4106, 4109, 5, 139, 0, 0, 4107, 4109, 5, 186, 0, 0, 4108, 4102, 1, 0, 0, 0, 4108, 4103, 1, 0, 0, 0, 4108, 4105, 1, 0, 0, 0, 4108, 4107, 1, 0, 0, 0, 4109, 455, 1, 0, 0, 0, 4110, 4111, 5, 46, 0, 0, 4111, 4112, 5, 140, 0, 0, 4112, 4113, 3, 524, 262, 0, 4113, 4114, 5, 42, 0, 0, 4114, 4115, 5, 2, 0, 0, 4115, 4116, 3, 1162, 581, 0, 4116, 4117, 5, 3, 0, 0, 4117, 4118, 3, 440, 220, 0, 4118, 457, 1, 0, 0, 0, 4119, 4120, 5, 46, 0, 0, 4120, 4121, 3, 618, 309, 0, 4121, 4122, 5, 136, 0, 0, 4122, 4123, 3, 1346, 673, 0, 4123, 4124, 3, 646, 323, 0, 4124, 4125, 3, 460, 230, 0, 4125, 4226, 1, 0, 0, 0, 4126, 4127, 5, 46, 0, 0, 4127, 4128, 3, 618, 309, 0, 4128, 4129, 5, 136, 0, 0, 4129, 4130, 3, 1346, 673, 0, 4130, 4131, 3, 468, 234, 0, 4131, 4226, 1, 0, 0, 0, 4132, 4133, 5, 46, 0, 0, 4133, 4134, 5, 271, 0, 0, 4134, 4135, 3, 684, 342, 0, 4135, 4136, 3, 460, 230, 0, 4136, 4226, 1, 0, 0, 0, 4137, 4138, 5, 46, 0, 0, 4138, 4139, 5, 353, 0, 0, 4139, 4140, 3, 524, 262, 0, 4140, 4141, 3, 460, 230, 0, 4141, 4226, 1, 0, 0, 0, 4142, 4143, 5, 46, 0, 0, 4143, 4144, 5, 353, 0, 0, 4144, 4226, 3, 524, 262, 0, 4145, 4146, 5, 46, 0, 0, 4146, 4147, 5, 353, 0, 0, 4147, 4148, 3, 524, 262, 0, 4148, 4149, 5, 36, 0, 0, 4149, 4150, 5, 2, 0, 0, 4150, 4151, 3, 1098, 549, 0, 4151, 4152, 5, 3, 0, 0, 4152, 4226, 1, 0, 0, 0, 4153, 4154, 5, 46, 0, 0, 4154, 4155, 5, 353, 0, 0, 4155, 4156, 3, 524, 262, 0, 4156, 4157, 5, 36, 0, 0, 4157, 4158, 5, 196, 0, 0, 4158, 4159, 5, 2, 0, 0, 4159, 4160, 3, 474, 237, 0, 4160, 4161, 5, 3, 0, 0, 4161, 4226, 1, 0, 0, 0, 4162, 4163, 5, 46, 0, 0, 4163, 4164, 5, 353, 0, 0, 4164, 4165, 3, 524, 262, 0, 4165, 4166, 5, 36, 0, 0, 4166, 4167, 5, 292, 0, 0, 4167, 4168, 3, 460, 230, 0, 4168, 4226, 1, 0, 0, 0, 4169, 4170, 5, 46, 0, 0, 4170, 4171, 5, 348, 0, 0, 4171, 4172, 5, 318, 0, 0, 4172, 4173, 5, 276, 0, 0, 4173, 4174, 3, 524, 262, 0, 4174, 4175, 3, 460, 230, 0, 4175, 4226, 1, 0, 0, 0, 4176, 4177, 5, 46, 0, 0, 4177, 4178, 5, 348, 0, 0, 4178, 4179, 5, 318, 0, 0, 4179, 4180, 5, 185, 0, 0, 4180, 4181, 3, 524, 262, 0, 4181, 4182, 3, 460, 230, 0, 4182, 4226, 1, 0, 0, 0, 4183, 4184, 5, 46, 0, 0, 4184, 4185, 5, 348, 0, 0, 4185, 4186, 5, 318, 0, 0, 4186, 4187, 5, 346, 0, 0, 4187, 4188, 3, 524, 262, 0, 4188, 4189, 3, 460, 230, 0, 4189, 4226, 1, 0, 0, 0, 4190, 4191, 5, 46, 0, 0, 4191, 4192, 5, 348, 0, 0, 4192, 4193, 5, 318, 0, 0, 4193, 4194, 5, 163, 0, 0, 4194, 4195, 3, 524, 262, 0, 4195, 4196, 3, 460, 230, 0, 4196, 4226, 1, 0, 0, 0, 4197, 4198, 5, 46, 0, 0, 4198, 4199, 5, 108, 0, 0, 4199, 4200, 3, 524, 262, 0, 4200, 4201, 3, 460, 230, 0, 4201, 4226, 1, 0, 0, 0, 4202, 4203, 5, 46, 0, 0, 4203, 4204, 5, 108, 0, 0, 4204, 4205, 5, 220, 0, 0, 4205, 4206, 5, 77, 0, 0, 4206, 4207, 5, 389, 0, 0, 4207, 4208, 3, 524, 262, 0, 4208, 4209, 3, 460, 230, 0, 4209, 4226, 1, 0, 0, 0, 4210, 4211, 5, 46, 0, 0, 4211, 4212, 5, 108, 0, 0, 4212, 4213, 3, 524, 262, 0, 4213, 4214, 5, 64, 0, 0, 4214, 4215, 3, 524, 262, 0, 4215, 4226, 1, 0, 0, 0, 4216, 4217, 5, 46, 0, 0, 4217, 4218, 5, 108, 0, 0, 4218, 4219, 5, 220, 0, 0, 4219, 4220, 5, 77, 0, 0, 4220, 4221, 5, 389, 0, 0, 4221, 4222, 3, 524, 262, 0, 4222, 4223, 5, 64, 0, 0, 4223, 4224, 3, 524, 262, 0, 4224, 4226, 1, 0, 0, 0, 4225, 4119, 1, 0, 0, 0, 4225, 4126, 1, 0, 0, 0, 4225, 4132, 1, 0, 0, 0, 4225, 4137, 1, 0, 0, 0, 4225, 4142, 1, 0, 0, 0, 4225, 4145, 1, 0, 0, 0, 4225, 4153, 1, 0, 0, 0, 4225, 4162, 1, 0, 0, 0, 4225, 4169, 1, 0, 0, 0, 4225, 4176, 1, 0, 0, 0, 4225, 4183, 1, 0, 0, 0, 4225, 4190, 1, 0, 0, 0, 4225, 4197, 1, 0, 0, 0, 4225, 4202, 1, 0, 0, 0, 4225, 4210, 1, 0, 0, 0, 4225, 4216, 1, 0, 0, 0, 4226, 459, 1, 0, 0, 0, 4227, 4228, 5, 2, 0, 0, 4228, 4229, 3, 462, 231, 0, 4229, 4230, 5, 3, 0, 0, 4230, 461, 1, 0, 0, 0, 4231, 4236, 3, 464, 232, 0, 4232, 4233, 5, 6, 0, 0, 4233, 4235, 3, 464, 232, 0, 4234, 4232, 1, 0, 0, 0, 4235, 4238, 1, 0, 0, 0, 4236, 4234, 1, 0, 0, 0, 4236, 4237, 1, 0, 0, 0, 4237, 463, 1, 0, 0, 0, 4238, 4236, 1, 0, 0, 0, 4239, 4242, 3, 1380, 690, 0, 4240, 4241, 5, 10, 0, 0, 4241, 4243, 3, 466, 233, 0, 4242, 4240, 1, 0, 0, 0, 4242, 4243, 1, 0, 0, 0, 4243, 465, 1, 0, 0, 0, 4244, 4251, 3, 640, 320, 0, 4245, 4251, 3, 1392, 696, 0, 4246, 4251, 3, 1276, 638, 0, 4247, 4251, 3, 292, 146, 0, 4248, 4251, 3, 1358, 679, 0, 4249, 4251, 5, 400, 0, 0, 4250, 4244, 1, 0, 0, 0, 4250, 4245, 1, 0, 0, 0, 4250, 4246, 1, 0, 0, 0, 4250, 4247, 1, 0, 0, 0, 4250, 4248, 1, 0, 0, 0, 4250, 4249, 1, 0, 0, 0, 4251, 467, 1, 0, 0, 0, 4252, 4253, 5, 2, 0, 0, 4253, 4254, 3, 470, 235, 0, 4254, 4255, 5, 3, 0, 0, 4255, 469, 1, 0, 0, 0, 4256, 4261, 3, 472, 236, 0, 4257, 4258, 5, 6, 0, 0, 4258, 4260, 3, 472, 236, 0, 4259, 4257, 1, 0, 0, 0, 4260, 4263, 1, 0, 0, 0, 4261, 4259, 1, 0, 0, 0, 4261, 4262, 1, 0, 0, 0, 4262, 471, 1, 0, 0, 0, 4263, 4261, 1, 0, 0, 0, 4264, 4265, 3, 1382, 691, 0, 4265, 4266, 5, 10, 0, 0, 4266, 4267, 3, 466, 233, 0, 4267, 473, 1, 0, 0, 0, 4268, 4271, 3, 476, 238, 0, 4269, 4271, 1, 0, 0, 0, 4270, 4268, 1, 0, 0, 0, 4270, 4269, 1, 0, 0, 0, 4271, 475, 1, 0, 0, 0, 4272, 4277, 3, 1358, 679, 0, 4273, 4274, 5, 6, 0, 0, 4274, 4276, 3, 1358, 679, 0, 4275, 4273, 1, 0, 0, 0, 4276, 4279, 1, 0, 0, 0, 4277, 4275, 1, 0, 0, 0, 4277, 4278, 1, 0, 0, 0, 4278, 477, 1, 0, 0, 0, 4279, 4277, 1, 0, 0, 0, 4280, 4281, 5, 138, 0, 0, 4281, 4282, 5, 353, 0, 0, 4282, 4283, 3, 524, 262, 0, 4283, 4284, 5, 133, 0, 0, 4284, 4285, 5, 450, 0, 0, 4285, 4286, 3, 480, 240, 0, 4286, 4287, 3, 1358, 679, 0, 4287, 4318, 1, 0, 0, 0, 4288, 4289, 5, 138, 0, 0, 4289, 4290, 5, 353, 0, 0, 4290, 4291, 3, 524, 262, 0, 4291, 4292, 5, 133, 0, 0, 4292, 4293, 5, 450, 0, 0, 4293, 4294, 3, 480, 240, 0, 4294, 4295, 3, 1358, 679, 0, 4295, 4296, 5, 145, 0, 0, 4296, 4297, 3, 1358, 679, 0, 4297, 4318, 1, 0, 0, 0, 4298, 4299, 5, 138, 0, 0, 4299, 4300, 5, 353, 0, 0, 4300, 4301, 3, 524, 262, 0, 4301, 4302, 5, 133, 0, 0, 4302, 4303, 5, 450, 0, 0, 4303, 4304, 3, 480, 240, 0, 4304, 4305, 3, 1358, 679, 0, 4305, 4306, 5, 135, 0, 0, 4306, 4307, 3, 1358, 679, 0, 4307, 4318, 1, 0, 0, 0, 4308, 4309, 5, 138, 0, 0, 4309, 4310, 5, 353, 0, 0, 4310, 4311, 3, 524, 262, 0, 4311, 4312, 5, 302, 0, 0, 4312, 4313, 5, 450, 0, 0, 4313, 4314, 3, 1358, 679, 0, 4314, 4315, 5, 94, 0, 0, 4315, 4316, 3, 1358, 679, 0, 4316, 4318, 1, 0, 0, 0, 4317, 4280, 1, 0, 0, 0, 4317, 4288, 1, 0, 0, 0, 4317, 4298, 1, 0, 0, 0, 4317, 4308, 1, 0, 0, 0, 4318, 479, 1, 0, 0, 0, 4319, 4320, 5, 220, 0, 0, 4320, 4321, 5, 77, 0, 0, 4321, 4324, 5, 389, 0, 0, 4322, 4324, 1, 0, 0, 0, 4323, 4319, 1, 0, 0, 0, 4323, 4322, 1, 0, 0, 0, 4324, 481, 1, 0, 0, 0, 4325, 4326, 5, 46, 0, 0, 4326, 4327, 5, 271, 0, 0, 4327, 4328, 5, 156, 0, 0, 4328, 4329, 3, 524, 262, 0, 4329, 4330, 3, 488, 244, 0, 4330, 4331, 5, 62, 0, 0, 4331, 4332, 5, 353, 0, 0, 4332, 4333, 3, 1118, 559, 0, 4333, 4334, 5, 100, 0, 0, 4334, 4335, 3, 1340, 670, 0, 4335, 4336, 3, 490, 245, 0, 4336, 4337, 5, 36, 0, 0, 4337, 4338, 3, 484, 242, 0, 4338, 483, 1, 0, 0, 0, 4339, 4344, 3, 486, 243, 0, 4340, 4341, 5, 6, 0, 0, 4341, 4343, 3, 486, 243, 0, 4342, 4340, 1, 0, 0, 0, 4343, 4346, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 485, 1, 0, 0, 0, 4346, 4344, 1, 0, 0, 0, 4347, 4348, 5, 271, 0, 0, 4348, 4349, 3, 1356, 678, 0, 4349, 4350, 3, 684, 342, 0, 4350, 4351, 3, 492, 246, 0, 4351, 4352, 3, 494, 247, 0, 4352, 4373, 1, 0, 0, 0, 4353, 4354, 5, 271, 0, 0, 4354, 4355, 3, 1356, 678, 0, 4355, 4356, 3, 688, 344, 0, 4356, 4357, 3, 492, 246, 0, 4357, 4358, 3, 494, 247, 0, 4358, 4373, 1, 0, 0, 0, 4359, 4360, 5, 211, 0, 0, 4360, 4361, 3, 1356, 678, 0, 4361, 4362, 3, 626, 313, 0, 4362, 4373, 1, 0, 0, 0, 4363, 4364, 5, 211, 0, 0, 4364, 4365, 3, 1356, 678, 0, 4365, 4366, 5, 2, 0, 0, 4366, 4367, 3, 1286, 643, 0, 4367, 4368, 5, 3, 0, 0, 4368, 4369, 3, 626, 313, 0, 4369, 4373, 1, 0, 0, 0, 4370, 4371, 5, 338, 0, 0, 4371, 4373, 3, 1118, 559, 0, 4372, 4347, 1, 0, 0, 0, 4372, 4353, 1, 0, 0, 0, 4372, 4359, 1, 0, 0, 0, 4372, 4363, 1, 0, 0, 0, 4372, 4370, 1, 0, 0, 0, 4373, 487, 1, 0, 0, 0, 4374, 4377, 5, 53, 0, 0, 4375, 4377, 1, 0, 0, 0, 4376, 4374, 1, 0, 0, 0, 4376, 4375, 1, 0, 0, 0, 4377, 489, 1, 0, 0, 0, 4378, 4379, 5, 206, 0, 0, 4379, 4382, 3, 524, 262, 0, 4380, 4382, 1, 0, 0, 0, 4381, 4378, 1, 0, 0, 0, 4381, 4380, 1, 0, 0, 0, 4382, 491, 1, 0, 0, 0, 4383, 4384, 5, 62, 0, 0, 4384, 4391, 5, 318, 0, 0, 4385, 4386, 5, 62, 0, 0, 4386, 4387, 5, 83, 0, 0, 4387, 4388, 5, 147, 0, 0, 4388, 4391, 3, 524, 262, 0, 4389, 4391, 1, 0, 0, 0, 4390, 4383, 1, 0, 0, 0, 4390, 4385, 1, 0, 0, 0, 4390, 4389, 1, 0, 0, 0, 4391, 493, 1, 0, 0, 0, 4392, 4395, 5, 295, 0, 0, 4393, 4395, 1, 0, 0, 0, 4394, 4392, 1, 0, 0, 0, 4394, 4393, 1, 0, 0, 0, 4395, 495, 1, 0, 0, 0, 4396, 4397, 5, 46, 0, 0, 4397, 4398, 5, 271, 0, 0, 4398, 4399, 5, 206, 0, 0, 4399, 4400, 3, 524, 262, 0, 4400, 4401, 5, 100, 0, 0, 4401, 4402, 3, 1340, 670, 0, 4402, 497, 1, 0, 0, 0, 4403, 4404, 5, 138, 0, 0, 4404, 4405, 5, 271, 0, 0, 4405, 4406, 5, 206, 0, 0, 4406, 4407, 3, 524, 262, 0, 4407, 4408, 5, 100, 0, 0, 4408, 4409, 3, 1340, 670, 0, 4409, 4410, 5, 133, 0, 0, 4410, 4411, 3, 484, 242, 0, 4411, 4422, 1, 0, 0, 0, 4412, 4413, 5, 138, 0, 0, 4413, 4414, 5, 271, 0, 0, 4414, 4415, 5, 206, 0, 0, 4415, 4416, 3, 524, 262, 0, 4416, 4417, 5, 100, 0, 0, 4417, 4418, 3, 1340, 670, 0, 4418, 4419, 5, 191, 0, 0, 4419, 4420, 3, 500, 250, 0, 4420, 4422, 1, 0, 0, 0, 4421, 4403, 1, 0, 0, 0, 4421, 4412, 1, 0, 0, 0, 4422, 499, 1, 0, 0, 0, 4423, 4428, 3, 502, 251, 0, 4424, 4425, 5, 6, 0, 0, 4425, 4427, 3, 502, 251, 0, 4426, 4424, 1, 0, 0, 0, 4427, 4430, 1, 0, 0, 0, 4428, 4426, 1, 0, 0, 0, 4428, 4429, 1, 0, 0, 0, 4429, 501, 1, 0, 0, 0, 4430, 4428, 1, 0, 0, 0, 4431, 4432, 5, 271, 0, 0, 4432, 4433, 3, 1356, 678, 0, 4433, 4434, 5, 2, 0, 0, 4434, 4435, 3, 1286, 643, 0, 4435, 4436, 5, 3, 0, 0, 4436, 4444, 1, 0, 0, 0, 4437, 4438, 5, 211, 0, 0, 4438, 4439, 3, 1356, 678, 0, 4439, 4440, 5, 2, 0, 0, 4440, 4441, 3, 1286, 643, 0, 4441, 4442, 5, 3, 0, 0, 4442, 4444, 1, 0, 0, 0, 4443, 4431, 1, 0, 0, 0, 4443, 4437, 1, 0, 0, 0, 4444, 503, 1, 0, 0, 0, 4445, 4446, 5, 191, 0, 0, 4446, 4447, 5, 271, 0, 0, 4447, 4448, 5, 156, 0, 0, 4448, 4449, 3, 524, 262, 0, 4449, 4450, 5, 100, 0, 0, 4450, 4451, 3, 1340, 670, 0, 4451, 4452, 3, 108, 54, 0, 4452, 4464, 1, 0, 0, 0, 4453, 4454, 5, 191, 0, 0, 4454, 4455, 5, 271, 0, 0, 4455, 4456, 5, 156, 0, 0, 4456, 4457, 5, 220, 0, 0, 4457, 4458, 5, 389, 0, 0, 4458, 4459, 3, 524, 262, 0, 4459, 4460, 5, 100, 0, 0, 4460, 4461, 3, 1340, 670, 0, 4461, 4462, 3, 108, 54, 0, 4462, 4464, 1, 0, 0, 0, 4463, 4445, 1, 0, 0, 0, 4463, 4453, 1, 0, 0, 0, 4464, 505, 1, 0, 0, 0, 4465, 4466, 5, 191, 0, 0, 4466, 4467, 5, 271, 0, 0, 4467, 4468, 5, 206, 0, 0, 4468, 4469, 3, 524, 262, 0, 4469, 4470, 5, 100, 0, 0, 4470, 4471, 3, 1340, 670, 0, 4471, 4472, 3, 108, 54, 0, 4472, 4484, 1, 0, 0, 0, 4473, 4474, 5, 191, 0, 0, 4474, 4475, 5, 271, 0, 0, 4475, 4476, 5, 206, 0, 0, 4476, 4477, 5, 220, 0, 0, 4477, 4478, 5, 389, 0, 0, 4478, 4479, 3, 524, 262, 0, 4479, 4480, 5, 100, 0, 0, 4480, 4481, 3, 1340, 670, 0, 4481, 4482, 3, 108, 54, 0, 4482, 4484, 1, 0, 0, 0, 4483, 4465, 1, 0, 0, 0, 4483, 4473, 1, 0, 0, 0, 4484, 507, 1, 0, 0, 0, 4485, 4486, 5, 191, 0, 0, 4486, 4487, 5, 274, 0, 0, 4487, 4488, 5, 147, 0, 0, 4488, 4489, 3, 1370, 685, 0, 4489, 4490, 3, 108, 54, 0, 4490, 509, 1, 0, 0, 0, 4491, 4492, 5, 294, 0, 0, 4492, 4493, 5, 274, 0, 0, 4493, 4494, 5, 147, 0, 0, 4494, 4495, 3, 1370, 685, 0, 4495, 4496, 5, 94, 0, 0, 4496, 4497, 3, 1368, 684, 0, 4497, 511, 1, 0, 0, 0, 4498, 4499, 5, 191, 0, 0, 4499, 4500, 3, 514, 257, 0, 4500, 4501, 5, 220, 0, 0, 4501, 4502, 5, 389, 0, 0, 4502, 4503, 3, 522, 261, 0, 4503, 4504, 3, 108, 54, 0, 4504, 4577, 1, 0, 0, 0, 4505, 4506, 5, 191, 0, 0, 4506, 4507, 3, 514, 257, 0, 4507, 4508, 3, 522, 261, 0, 4508, 4509, 3, 108, 54, 0, 4509, 4577, 1, 0, 0, 0, 4510, 4511, 5, 191, 0, 0, 4511, 4512, 3, 518, 259, 0, 4512, 4513, 5, 220, 0, 0, 4513, 4514, 5, 389, 0, 0, 4514, 4515, 3, 1338, 669, 0, 4515, 4516, 3, 108, 54, 0, 4516, 4577, 1, 0, 0, 0, 4517, 4518, 5, 191, 0, 0, 4518, 4519, 3, 518, 259, 0, 4519, 4520, 3, 1338, 669, 0, 4520, 4521, 3, 108, 54, 0, 4521, 4577, 1, 0, 0, 0, 4522, 4523, 5, 191, 0, 0, 4523, 4524, 3, 520, 260, 0, 4524, 4525, 3, 1340, 670, 0, 4525, 4526, 5, 80, 0, 0, 4526, 4527, 3, 524, 262, 0, 4527, 4528, 3, 108, 54, 0, 4528, 4577, 1, 0, 0, 0, 4529, 4530, 5, 191, 0, 0, 4530, 4531, 3, 520, 260, 0, 4531, 4532, 5, 220, 0, 0, 4532, 4533, 5, 389, 0, 0, 4533, 4534, 3, 1340, 670, 0, 4534, 4535, 5, 80, 0, 0, 4535, 4536, 3, 524, 262, 0, 4536, 4537, 3, 108, 54, 0, 4537, 4577, 1, 0, 0, 0, 4538, 4539, 5, 191, 0, 0, 4539, 4540, 5, 353, 0, 0, 4540, 4541, 3, 528, 264, 0, 4541, 4542, 3, 108, 54, 0, 4542, 4577, 1, 0, 0, 0, 4543, 4544, 5, 191, 0, 0, 4544, 4545, 5, 353, 0, 0, 4545, 4546, 5, 220, 0, 0, 4546, 4547, 5, 389, 0, 0, 4547, 4548, 3, 528, 264, 0, 4548, 4549, 3, 108, 54, 0, 4549, 4577, 1, 0, 0, 0, 4550, 4551, 5, 191, 0, 0, 4551, 4552, 5, 189, 0, 0, 4552, 4553, 3, 528, 264, 0, 4553, 4554, 3, 108, 54, 0, 4554, 4577, 1, 0, 0, 0, 4555, 4556, 5, 191, 0, 0, 4556, 4557, 5, 189, 0, 0, 4557, 4558, 5, 220, 0, 0, 4558, 4559, 5, 389, 0, 0, 4559, 4560, 3, 528, 264, 0, 4560, 4561, 3, 108, 54, 0, 4561, 4577, 1, 0, 0, 0, 4562, 4563, 5, 191, 0, 0, 4563, 4564, 5, 226, 0, 0, 4564, 4565, 5, 109, 0, 0, 4565, 4566, 3, 522, 261, 0, 4566, 4567, 3, 108, 54, 0, 4567, 4577, 1, 0, 0, 0, 4568, 4569, 5, 191, 0, 0, 4569, 4570, 5, 226, 0, 0, 4570, 4571, 5, 109, 0, 0, 4571, 4572, 5, 220, 0, 0, 4572, 4573, 5, 389, 0, 0, 4573, 4574, 3, 522, 261, 0, 4574, 4575, 3, 108, 54, 0, 4575, 4577, 1, 0, 0, 0, 4576, 4498, 1, 0, 0, 0, 4576, 4505, 1, 0, 0, 0, 4576, 4510, 1, 0, 0, 0, 4576, 4517, 1, 0, 0, 0, 4576, 4522, 1, 0, 0, 0, 4576, 4529, 1, 0, 0, 0, 4576, 4538, 1, 0, 0, 0, 4576, 4543, 1, 0, 0, 0, 4576, 4550, 1, 0, 0, 0, 4576, 4555, 1, 0, 0, 0, 4576, 4562, 1, 0, 0, 0, 4576, 4568, 1, 0, 0, 0, 4577, 513, 1, 0, 0, 0, 4578, 4602, 5, 92, 0, 0, 4579, 4602, 5, 321, 0, 0, 4580, 4602, 5, 369, 0, 0, 4581, 4582, 5, 251, 0, 0, 4582, 4602, 5, 369, 0, 0, 4583, 4602, 5, 226, 0, 0, 4584, 4585, 5, 63, 0, 0, 4585, 4602, 5, 92, 0, 0, 4586, 4602, 5, 108, 0, 0, 4587, 4602, 5, 168, 0, 0, 4588, 4602, 5, 335, 0, 0, 4589, 4590, 5, 348, 0, 0, 4590, 4591, 5, 318, 0, 0, 4591, 4602, 5, 276, 0, 0, 4592, 4593, 5, 348, 0, 0, 4593, 4594, 5, 318, 0, 0, 4594, 4602, 5, 185, 0, 0, 4595, 4596, 5, 348, 0, 0, 4596, 4597, 5, 318, 0, 0, 4597, 4602, 5, 346, 0, 0, 4598, 4599, 5, 348, 0, 0, 4599, 4600, 5, 318, 0, 0, 4600, 4602, 5, 163, 0, 0, 4601, 4578, 1, 0, 0, 0, 4601, 4579, 1, 0, 0, 0, 4601, 4580, 1, 0, 0, 0, 4601, 4581, 1, 0, 0, 0, 4601, 4583, 1, 0, 0, 0, 4601, 4584, 1, 0, 0, 0, 4601, 4586, 1, 0, 0, 0, 4601, 4587, 1, 0, 0, 0, 4601, 4588, 1, 0, 0, 0, 4601, 4589, 1, 0, 0, 0, 4601, 4592, 1, 0, 0, 0, 4601, 4595, 1, 0, 0, 0, 4601, 4598, 1, 0, 0, 0, 4602, 515, 1, 0, 0, 0, 4603, 4609, 3, 518, 259, 0, 4604, 4609, 5, 175, 0, 0, 4605, 4609, 5, 311, 0, 0, 4606, 4609, 5, 451, 0, 0, 4607, 4609, 5, 344, 0, 0, 4608, 4603, 1, 0, 0, 0, 4608, 4604, 1, 0, 0, 0, 4608, 4605, 1, 0, 0, 0, 4608, 4606, 1, 0, 0, 0, 4608, 4607, 1, 0, 0, 0, 4609, 517, 1, 0, 0, 0, 4610, 4611, 5, 131, 0, 0, 4611, 4625, 5, 446, 0, 0, 4612, 4613, 5, 198, 0, 0, 4613, 4625, 5, 350, 0, 0, 4614, 4625, 5, 204, 0, 0, 4615, 4616, 5, 63, 0, 0, 4616, 4617, 5, 174, 0, 0, 4617, 4625, 5, 374, 0, 0, 4618, 4619, 3, 308, 154, 0, 4619, 4620, 5, 238, 0, 0, 4620, 4625, 1, 0, 0, 0, 4621, 4625, 5, 452, 0, 0, 4622, 4625, 5, 316, 0, 0, 4623, 4625, 5, 324, 0, 0, 4624, 4610, 1, 0, 0, 0, 4624, 4612, 1, 0, 0, 0, 4624, 4614, 1, 0, 0, 0, 4624, 4615, 1, 0, 0, 0, 4624, 4618, 1, 0, 0, 0, 4624, 4621, 1, 0, 0, 0, 4624, 4622, 1, 0, 0, 0, 4624, 4623, 1, 0, 0, 0, 4625, 519, 1, 0, 0, 0, 4626, 4627, 7, 23, 0, 0, 4627, 521, 1, 0, 0, 0, 4628, 4633, 3, 524, 262, 0, 4629, 4630, 5, 6, 0, 0, 4630, 4632, 3, 524, 262, 0, 4631, 4629, 1, 0, 0, 0, 4632, 4635, 1, 0, 0, 0, 4633, 4631, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 523, 1, 0, 0, 0, 4635, 4633, 1, 0, 0, 0, 4636, 4638, 3, 1372, 686, 0, 4637, 4639, 3, 526, 263, 0, 4638, 4637, 1, 0, 0, 0, 4638, 4639, 1, 0, 0, 0, 4639, 525, 1, 0, 0, 0, 4640, 4641, 5, 11, 0, 0, 4641, 4643, 3, 1342, 671, 0, 4642, 4640, 1, 0, 0, 0, 4643, 4644, 1, 0, 0, 0, 4644, 4642, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 527, 1, 0, 0, 0, 4646, 4651, 3, 1118, 559, 0, 4647, 4648, 5, 6, 0, 0, 4648, 4650, 3, 1118, 559, 0, 4649, 4647, 1, 0, 0, 0, 4650, 4653, 1, 0, 0, 0, 4651, 4649, 1, 0, 0, 0, 4651, 4652, 1, 0, 0, 0, 4652, 529, 1, 0, 0, 0, 4653, 4651, 1, 0, 0, 0, 4654, 4655, 5, 351, 0, 0, 4655, 4656, 3, 988, 494, 0, 4656, 4657, 3, 1076, 538, 0, 4657, 4658, 3, 532, 266, 0, 4658, 4659, 3, 108, 54, 0, 4659, 531, 1, 0, 0, 0, 4660, 4661, 5, 167, 0, 0, 4661, 4666, 5, 219, 0, 0, 4662, 4663, 5, 307, 0, 0, 4663, 4666, 5, 219, 0, 0, 4664, 4666, 1, 0, 0, 0, 4665, 4660, 1, 0, 0, 0, 4665, 4662, 1, 0, 0, 0, 4665, 4664, 1, 0, 0, 0, 4666, 533, 1, 0, 0, 0, 4667, 4668, 5, 159, 0, 0, 4668, 4669, 5, 80, 0, 0, 4669, 4670, 3, 514, 257, 0, 4670, 4671, 3, 524, 262, 0, 4671, 4672, 5, 116, 0, 0, 4672, 4673, 3, 536, 268, 0, 4673, 4815, 1, 0, 0, 0, 4674, 4675, 5, 159, 0, 0, 4675, 4676, 5, 80, 0, 0, 4676, 4677, 5, 44, 0, 0, 4677, 4678, 3, 524, 262, 0, 4678, 4679, 5, 116, 0, 0, 4679, 4680, 3, 536, 268, 0, 4680, 4815, 1, 0, 0, 0, 4681, 4682, 5, 159, 0, 0, 4682, 4683, 5, 80, 0, 0, 4683, 4684, 3, 516, 258, 0, 4684, 4685, 3, 1340, 670, 0, 4685, 4686, 5, 116, 0, 0, 4686, 4687, 3, 536, 268, 0, 4687, 4815, 1, 0, 0, 0, 4688, 4689, 5, 159, 0, 0, 4689, 4690, 5, 80, 0, 0, 4690, 4691, 5, 353, 0, 0, 4691, 4692, 3, 1118, 559, 0, 4692, 4693, 5, 116, 0, 0, 4693, 4694, 3, 536, 268, 0, 4694, 4815, 1, 0, 0, 0, 4695, 4696, 5, 159, 0, 0, 4696, 4697, 5, 80, 0, 0, 4697, 4698, 5, 189, 0, 0, 4698, 4699, 3, 1118, 559, 0, 4699, 4700, 5, 116, 0, 0, 4700, 4701, 3, 536, 268, 0, 4701, 4815, 1, 0, 0, 0, 4702, 4703, 5, 159, 0, 0, 4703, 4704, 5, 80, 0, 0, 4704, 4705, 5, 136, 0, 0, 4705, 4706, 3, 650, 325, 0, 4706, 4707, 5, 116, 0, 0, 4707, 4708, 3, 536, 268, 0, 4708, 4815, 1, 0, 0, 0, 4709, 4710, 5, 159, 0, 0, 4710, 4711, 5, 80, 0, 0, 4711, 4712, 5, 211, 0, 0, 4712, 4713, 3, 626, 313, 0, 4713, 4714, 5, 116, 0, 0, 4714, 4715, 3, 536, 268, 0, 4715, 4815, 1, 0, 0, 0, 4716, 4717, 5, 159, 0, 0, 4717, 4718, 5, 80, 0, 0, 4718, 4719, 5, 271, 0, 0, 4719, 4720, 3, 688, 344, 0, 4720, 4721, 5, 116, 0, 0, 4721, 4722, 3, 536, 268, 0, 4722, 4815, 1, 0, 0, 0, 4723, 4724, 5, 159, 0, 0, 4724, 4725, 5, 80, 0, 0, 4725, 4726, 5, 45, 0, 0, 4726, 4727, 3, 1340, 670, 0, 4727, 4728, 5, 80, 0, 0, 4728, 4729, 3, 524, 262, 0, 4729, 4730, 5, 116, 0, 0, 4730, 4731, 3, 536, 268, 0, 4731, 4815, 1, 0, 0, 0, 4732, 4733, 5, 159, 0, 0, 4733, 4734, 5, 80, 0, 0, 4734, 4735, 5, 45, 0, 0, 4735, 4736, 3, 1340, 670, 0, 4736, 4737, 5, 80, 0, 0, 4737, 4738, 5, 189, 0, 0, 4738, 4739, 3, 524, 262, 0, 4739, 4740, 5, 116, 0, 0, 4740, 4741, 3, 536, 268, 0, 4741, 4815, 1, 0, 0, 0, 4742, 4743, 5, 159, 0, 0, 4743, 4744, 5, 80, 0, 0, 4744, 4745, 3, 520, 260, 0, 4745, 4746, 3, 1340, 670, 0, 4746, 4747, 5, 80, 0, 0, 4747, 4748, 3, 524, 262, 0, 4748, 4749, 5, 116, 0, 0, 4749, 4750, 3, 536, 268, 0, 4750, 4815, 1, 0, 0, 0, 4751, 4752, 5, 159, 0, 0, 4752, 4753, 5, 80, 0, 0, 4753, 4754, 5, 289, 0, 0, 4754, 4755, 3, 626, 313, 0, 4755, 4756, 5, 116, 0, 0, 4756, 4757, 3, 536, 268, 0, 4757, 4815, 1, 0, 0, 0, 4758, 4759, 5, 159, 0, 0, 4759, 4760, 5, 80, 0, 0, 4760, 4761, 5, 442, 0, 0, 4761, 4762, 3, 626, 313, 0, 4762, 4763, 5, 116, 0, 0, 4763, 4764, 3, 536, 268, 0, 4764, 4815, 1, 0, 0, 0, 4765, 4766, 5, 159, 0, 0, 4766, 4767, 5, 80, 0, 0, 4767, 4768, 5, 443, 0, 0, 4768, 4769, 5, 62, 0, 0, 4769, 4770, 3, 1118, 559, 0, 4770, 4771, 5, 238, 0, 0, 4771, 4772, 3, 1340, 670, 0, 4772, 4773, 5, 116, 0, 0, 4773, 4774, 3, 536, 268, 0, 4774, 4815, 1, 0, 0, 0, 4775, 4776, 5, 159, 0, 0, 4776, 4777, 5, 80, 0, 0, 4777, 4778, 5, 271, 0, 0, 4778, 4779, 5, 156, 0, 0, 4779, 4780, 3, 524, 262, 0, 4780, 4781, 5, 100, 0, 0, 4781, 4782, 3, 1340, 670, 0, 4782, 4783, 5, 116, 0, 0, 4783, 4784, 3, 536, 268, 0, 4784, 4815, 1, 0, 0, 0, 4785, 4786, 5, 159, 0, 0, 4786, 4787, 5, 80, 0, 0, 4787, 4788, 5, 271, 0, 0, 4788, 4789, 5, 206, 0, 0, 4789, 4790, 3, 524, 262, 0, 4790, 4791, 5, 100, 0, 0, 4791, 4792, 3, 1340, 670, 0, 4792, 4793, 5, 116, 0, 0, 4793, 4794, 3, 536, 268, 0, 4794, 4815, 1, 0, 0, 0, 4795, 4796, 5, 159, 0, 0, 4796, 4797, 5, 80, 0, 0, 4797, 4798, 5, 239, 0, 0, 4798, 4799, 5, 267, 0, 0, 4799, 4800, 3, 292, 146, 0, 4800, 4801, 5, 116, 0, 0, 4801, 4802, 3, 536, 268, 0, 4802, 4815, 1, 0, 0, 0, 4803, 4804, 5, 159, 0, 0, 4804, 4805, 5, 80, 0, 0, 4805, 4806, 5, 41, 0, 0, 4806, 4807, 5, 2, 0, 0, 4807, 4808, 3, 1118, 559, 0, 4808, 4809, 5, 36, 0, 0, 4809, 4810, 3, 1118, 559, 0, 4810, 4811, 5, 3, 0, 0, 4811, 4812, 5, 116, 0, 0, 4812, 4813, 3, 536, 268, 0, 4813, 4815, 1, 0, 0, 0, 4814, 4667, 1, 0, 0, 0, 4814, 4674, 1, 0, 0, 0, 4814, 4681, 1, 0, 0, 0, 4814, 4688, 1, 0, 0, 0, 4814, 4695, 1, 0, 0, 0, 4814, 4702, 1, 0, 0, 0, 4814, 4709, 1, 0, 0, 0, 4814, 4716, 1, 0, 0, 0, 4814, 4723, 1, 0, 0, 0, 4814, 4732, 1, 0, 0, 0, 4814, 4742, 1, 0, 0, 0, 4814, 4751, 1, 0, 0, 0, 4814, 4758, 1, 0, 0, 0, 4814, 4765, 1, 0, 0, 0, 4814, 4775, 1, 0, 0, 0, 4814, 4785, 1, 0, 0, 0, 4814, 4795, 1, 0, 0, 0, 4814, 4803, 1, 0, 0, 0, 4815, 535, 1, 0, 0, 0, 4816, 4819, 3, 1358, 679, 0, 4817, 4819, 5, 78, 0, 0, 4818, 4816, 1, 0, 0, 0, 4818, 4817, 1, 0, 0, 0, 4819, 537, 1, 0, 0, 0, 4820, 4821, 5, 320, 0, 0, 4821, 4822, 5, 237, 0, 0, 4822, 4823, 3, 540, 270, 0, 4823, 4824, 5, 80, 0, 0, 4824, 4825, 3, 514, 257, 0, 4825, 4826, 3, 524, 262, 0, 4826, 4827, 5, 116, 0, 0, 4827, 4828, 3, 542, 271, 0, 4828, 4912, 1, 0, 0, 0, 4829, 4830, 5, 320, 0, 0, 4830, 4831, 5, 237, 0, 0, 4831, 4832, 3, 540, 270, 0, 4832, 4833, 5, 80, 0, 0, 4833, 4834, 5, 44, 0, 0, 4834, 4835, 3, 524, 262, 0, 4835, 4836, 5, 116, 0, 0, 4836, 4837, 3, 542, 271, 0, 4837, 4912, 1, 0, 0, 0, 4838, 4839, 5, 320, 0, 0, 4839, 4840, 5, 237, 0, 0, 4840, 4841, 3, 540, 270, 0, 4841, 4842, 5, 80, 0, 0, 4842, 4843, 3, 516, 258, 0, 4843, 4844, 3, 1340, 670, 0, 4844, 4845, 5, 116, 0, 0, 4845, 4846, 3, 542, 271, 0, 4846, 4912, 1, 0, 0, 0, 4847, 4848, 5, 320, 0, 0, 4848, 4849, 5, 237, 0, 0, 4849, 4850, 3, 540, 270, 0, 4850, 4851, 5, 80, 0, 0, 4851, 4852, 5, 353, 0, 0, 4852, 4853, 3, 1118, 559, 0, 4853, 4854, 5, 116, 0, 0, 4854, 4855, 3, 542, 271, 0, 4855, 4912, 1, 0, 0, 0, 4856, 4857, 5, 320, 0, 0, 4857, 4858, 5, 237, 0, 0, 4858, 4859, 3, 540, 270, 0, 4859, 4860, 5, 80, 0, 0, 4860, 4861, 5, 189, 0, 0, 4861, 4862, 3, 1118, 559, 0, 4862, 4863, 5, 116, 0, 0, 4863, 4864, 3, 542, 271, 0, 4864, 4912, 1, 0, 0, 0, 4865, 4866, 5, 320, 0, 0, 4866, 4867, 5, 237, 0, 0, 4867, 4868, 3, 540, 270, 0, 4868, 4869, 5, 80, 0, 0, 4869, 4870, 5, 136, 0, 0, 4870, 4871, 3, 650, 325, 0, 4871, 4872, 5, 116, 0, 0, 4872, 4873, 3, 542, 271, 0, 4873, 4912, 1, 0, 0, 0, 4874, 4875, 5, 320, 0, 0, 4875, 4876, 5, 237, 0, 0, 4876, 4877, 3, 540, 270, 0, 4877, 4878, 5, 80, 0, 0, 4878, 4879, 5, 211, 0, 0, 4879, 4880, 3, 626, 313, 0, 4880, 4881, 5, 116, 0, 0, 4881, 4882, 3, 542, 271, 0, 4882, 4912, 1, 0, 0, 0, 4883, 4884, 5, 320, 0, 0, 4884, 4885, 5, 237, 0, 0, 4885, 4886, 3, 540, 270, 0, 4886, 4887, 5, 80, 0, 0, 4887, 4888, 5, 239, 0, 0, 4888, 4889, 5, 267, 0, 0, 4889, 4890, 3, 292, 146, 0, 4890, 4891, 5, 116, 0, 0, 4891, 4892, 3, 542, 271, 0, 4892, 4912, 1, 0, 0, 0, 4893, 4894, 5, 320, 0, 0, 4894, 4895, 5, 237, 0, 0, 4895, 4896, 3, 540, 270, 0, 4896, 4897, 5, 80, 0, 0, 4897, 4898, 5, 289, 0, 0, 4898, 4899, 3, 626, 313, 0, 4899, 4900, 5, 116, 0, 0, 4900, 4901, 3, 542, 271, 0, 4901, 4912, 1, 0, 0, 0, 4902, 4903, 5, 320, 0, 0, 4903, 4904, 5, 237, 0, 0, 4904, 4905, 3, 540, 270, 0, 4905, 4906, 5, 80, 0, 0, 4906, 4907, 5, 442, 0, 0, 4907, 4908, 3, 626, 313, 0, 4908, 4909, 5, 116, 0, 0, 4909, 4910, 3, 542, 271, 0, 4910, 4912, 1, 0, 0, 0, 4911, 4820, 1, 0, 0, 0, 4911, 4829, 1, 0, 0, 0, 4911, 4838, 1, 0, 0, 0, 4911, 4847, 1, 0, 0, 0, 4911, 4856, 1, 0, 0, 0, 4911, 4865, 1, 0, 0, 0, 4911, 4874, 1, 0, 0, 0, 4911, 4883, 1, 0, 0, 0, 4911, 4893, 1, 0, 0, 0, 4911, 4902, 1, 0, 0, 0, 4912, 539, 1, 0, 0, 0, 4913, 4914, 5, 62, 0, 0, 4914, 4917, 3, 72, 36, 0, 4915, 4917, 1, 0, 0, 0, 4916, 4913, 1, 0, 0, 0, 4916, 4915, 1, 0, 0, 0, 4917, 541, 1, 0, 0, 0, 4918, 4921, 3, 1358, 679, 0, 4919, 4921, 5, 78, 0, 0, 4920, 4918, 1, 0, 0, 0, 4920, 4919, 1, 0, 0, 0, 4921, 543, 1, 0, 0, 0, 4922, 4923, 5, 61, 0, 0, 4923, 4927, 3, 546, 273, 0, 4924, 4925, 5, 258, 0, 0, 4925, 4927, 3, 546, 273, 0, 4926, 4922, 1, 0, 0, 0, 4926, 4924, 1, 0, 0, 0, 4927, 545, 1, 0, 0, 0, 4928, 4995, 3, 954, 477, 0, 4929, 4930, 3, 548, 274, 0, 4930, 4931, 3, 954, 477, 0, 4931, 4995, 1, 0, 0, 0, 4932, 4933, 5, 261, 0, 0, 4933, 4934, 3, 550, 275, 0, 4934, 4935, 3, 954, 477, 0, 4935, 4995, 1, 0, 0, 0, 4936, 4937, 5, 286, 0, 0, 4937, 4938, 3, 550, 275, 0, 4938, 4939, 3, 954, 477, 0, 4939, 4995, 1, 0, 0, 0, 4940, 4941, 5, 207, 0, 0, 4941, 4942, 3, 550, 275, 0, 4942, 4943, 3, 954, 477, 0, 4943, 4995, 1, 0, 0, 0, 4944, 4945, 5, 240, 0, 0, 4945, 4946, 3, 550, 275, 0, 4946, 4947, 3, 954, 477, 0, 4947, 4995, 1, 0, 0, 0, 4948, 4949, 5, 130, 0, 0, 4949, 4950, 3, 1364, 682, 0, 4950, 4951, 3, 550, 275, 0, 4951, 4952, 3, 954, 477, 0, 4952, 4995, 1, 0, 0, 0, 4953, 4954, 5, 300, 0, 0, 4954, 4955, 3, 1364, 682, 0, 4955, 4956, 3, 550, 275, 0, 4956, 4957, 3, 954, 477, 0, 4957, 4995, 1, 0, 0, 0, 4958, 4959, 3, 1364, 682, 0, 4959, 4960, 3, 550, 275, 0, 4960, 4961, 3, 954, 477, 0, 4961, 4995, 1, 0, 0, 0, 4962, 4963, 5, 30, 0, 0, 4963, 4964, 3, 550, 275, 0, 4964, 4965, 3, 954, 477, 0, 4965, 4995, 1, 0, 0, 0, 4966, 4967, 5, 210, 0, 0, 4967, 4968, 3, 550, 275, 0, 4968, 4969, 3, 954, 477, 0, 4969, 4995, 1, 0, 0, 0, 4970, 4971, 5, 210, 0, 0, 4971, 4972, 3, 1364, 682, 0, 4972, 4973, 3, 550, 275, 0, 4973, 4974, 3, 954, 477, 0, 4974, 4995, 1, 0, 0, 0, 4975, 4976, 5, 210, 0, 0, 4976, 4977, 5, 30, 0, 0, 4977, 4978, 3, 550, 275, 0, 4978, 4979, 3, 954, 477, 0, 4979, 4995, 1, 0, 0, 0, 4980, 4981, 5, 144, 0, 0, 4981, 4982, 3, 550, 275, 0, 4982, 4983, 3, 954, 477, 0, 4983, 4995, 1, 0, 0, 0, 4984, 4985, 5, 144, 0, 0, 4985, 4986, 3, 1364, 682, 0, 4986, 4987, 3, 550, 275, 0, 4987, 4988, 3, 954, 477, 0, 4988, 4995, 1, 0, 0, 0, 4989, 4990, 5, 144, 0, 0, 4990, 4991, 5, 30, 0, 0, 4991, 4992, 3, 550, 275, 0, 4992, 4993, 3, 954, 477, 0, 4993, 4995, 1, 0, 0, 0, 4994, 4928, 1, 0, 0, 0, 4994, 4929, 1, 0, 0, 0, 4994, 4932, 1, 0, 0, 0, 4994, 4936, 1, 0, 0, 0, 4994, 4940, 1, 0, 0, 0, 4994, 4944, 1, 0, 0, 0, 4994, 4948, 1, 0, 0, 0, 4994, 4953, 1, 0, 0, 0, 4994, 4958, 1, 0, 0, 0, 4994, 4962, 1, 0, 0, 0, 4994, 4966, 1, 0, 0, 0, 4994, 4970, 1, 0, 0, 0, 4994, 4975, 1, 0, 0, 0, 4994, 4980, 1, 0, 0, 0, 4994, 4984, 1, 0, 0, 0, 4994, 4989, 1, 0, 0, 0, 4995, 547, 1, 0, 0, 0, 4996, 4997, 7, 24, 0, 0, 4997, 549, 1, 0, 0, 0, 4998, 5001, 3, 548, 274, 0, 4999, 5001, 1, 0, 0, 0, 5000, 4998, 1, 0, 0, 0, 5000, 4999, 1, 0, 0, 0, 5001, 551, 1, 0, 0, 0, 5002, 5003, 5, 65, 0, 0, 5003, 5004, 3, 556, 278, 0, 5004, 5005, 5, 80, 0, 0, 5005, 5006, 3, 562, 281, 0, 5006, 5007, 5, 94, 0, 0, 5007, 5008, 3, 564, 282, 0, 5008, 5009, 3, 568, 284, 0, 5009, 553, 1, 0, 0, 0, 5010, 5011, 5, 310, 0, 0, 5011, 5012, 3, 556, 278, 0, 5012, 5013, 5, 80, 0, 0, 5013, 5014, 3, 562, 281, 0, 5014, 5015, 5, 64, 0, 0, 5015, 5016, 3, 564, 282, 0, 5016, 5017, 3, 108, 54, 0, 5017, 5030, 1, 0, 0, 0, 5018, 5019, 5, 310, 0, 0, 5019, 5020, 5, 65, 0, 0, 5020, 5021, 5, 272, 0, 0, 5021, 5022, 5, 62, 0, 0, 5022, 5023, 3, 556, 278, 0, 5023, 5024, 5, 80, 0, 0, 5024, 5025, 3, 562, 281, 0, 5025, 5026, 5, 64, 0, 0, 5026, 5027, 3, 564, 282, 0, 5027, 5028, 3, 108, 54, 0, 5028, 5030, 1, 0, 0, 0, 5029, 5010, 1, 0, 0, 0, 5029, 5018, 1, 0, 0, 0, 5030, 555, 1, 0, 0, 0, 5031, 5047, 3, 558, 279, 0, 5032, 5047, 5, 30, 0, 0, 5033, 5034, 5, 30, 0, 0, 5034, 5047, 5, 287, 0, 0, 5035, 5036, 5, 30, 0, 0, 5036, 5037, 5, 2, 0, 0, 5037, 5038, 3, 216, 108, 0, 5038, 5039, 5, 3, 0, 0, 5039, 5047, 1, 0, 0, 0, 5040, 5041, 5, 30, 0, 0, 5041, 5042, 5, 287, 0, 0, 5042, 5043, 5, 2, 0, 0, 5043, 5044, 3, 216, 108, 0, 5044, 5045, 5, 3, 0, 0, 5045, 5047, 1, 0, 0, 0, 5046, 5031, 1, 0, 0, 0, 5046, 5032, 1, 0, 0, 0, 5046, 5033, 1, 0, 0, 0, 5046, 5035, 1, 0, 0, 0, 5046, 5040, 1, 0, 0, 0, 5047, 557, 1, 0, 0, 0, 5048, 5053, 3, 560, 280, 0, 5049, 5050, 5, 6, 0, 0, 5050, 5052, 3, 560, 280, 0, 5051, 5049, 1, 0, 0, 0, 5052, 5055, 1, 0, 0, 0, 5053, 5051, 1, 0, 0, 0, 5053, 5054, 1, 0, 0, 0, 5054, 559, 1, 0, 0, 0, 5055, 5053, 1, 0, 0, 0, 5056, 5057, 5, 88, 0, 0, 5057, 5066, 3, 214, 107, 0, 5058, 5059, 5, 86, 0, 0, 5059, 5066, 3, 214, 107, 0, 5060, 5061, 5, 46, 0, 0, 5061, 5066, 3, 214, 107, 0, 5062, 5063, 3, 1372, 686, 0, 5063, 5064, 3, 214, 107, 0, 5064, 5066, 1, 0, 0, 0, 5065, 5056, 1, 0, 0, 0, 5065, 5058, 1, 0, 0, 0, 5065, 5060, 1, 0, 0, 0, 5065, 5062, 1, 0, 0, 0, 5066, 561, 1, 0, 0, 0, 5067, 5126, 3, 1334, 667, 0, 5068, 5069, 5, 92, 0, 0, 5069, 5126, 3, 1334, 667, 0, 5070, 5071, 5, 321, 0, 0, 5071, 5126, 3, 1334, 667, 0, 5072, 5073, 5, 63, 0, 0, 5073, 5074, 5, 174, 0, 0, 5074, 5075, 5, 374, 0, 0, 5075, 5126, 3, 1338, 669, 0, 5076, 5077, 5, 63, 0, 0, 5077, 5078, 5, 324, 0, 0, 5078, 5126, 3, 1338, 669, 0, 5079, 5080, 5, 211, 0, 0, 5080, 5126, 3, 624, 312, 0, 5081, 5082, 5, 289, 0, 0, 5082, 5126, 3, 624, 312, 0, 5083, 5084, 5, 442, 0, 0, 5084, 5126, 3, 624, 312, 0, 5085, 5086, 5, 175, 0, 0, 5086, 5126, 3, 1338, 669, 0, 5087, 5088, 5, 189, 0, 0, 5088, 5126, 3, 522, 261, 0, 5089, 5090, 5, 238, 0, 0, 5090, 5126, 3, 1338, 669, 0, 5091, 5092, 5, 239, 0, 0, 5092, 5093, 5, 267, 0, 0, 5093, 5126, 3, 294, 147, 0, 5094, 5095, 5, 316, 0, 0, 5095, 5126, 3, 1338, 669, 0, 5096, 5097, 5, 344, 0, 0, 5097, 5126, 3, 1338, 669, 0, 5098, 5099, 5, 353, 0, 0, 5099, 5126, 3, 522, 261, 0, 5100, 5101, 5, 30, 0, 0, 5101, 5102, 5, 343, 0, 0, 5102, 5103, 5, 68, 0, 0, 5103, 5104, 5, 316, 0, 0, 5104, 5126, 3, 1338, 669, 0, 5105, 5106, 5, 30, 0, 0, 5106, 5107, 5, 322, 0, 0, 5107, 5108, 5, 68, 0, 0, 5108, 5109, 5, 316, 0, 0, 5109, 5126, 3, 1338, 669, 0, 5110, 5111, 5, 30, 0, 0, 5111, 5112, 5, 212, 0, 0, 5112, 5113, 5, 68, 0, 0, 5113, 5114, 5, 316, 0, 0, 5114, 5126, 3, 1338, 669, 0, 5115, 5116, 5, 30, 0, 0, 5116, 5117, 5, 457, 0, 0, 5117, 5118, 5, 68, 0, 0, 5118, 5119, 5, 316, 0, 0, 5119, 5126, 3, 1338, 669, 0, 5120, 5121, 5, 30, 0, 0, 5121, 5122, 5, 455, 0, 0, 5122, 5123, 5, 68, 0, 0, 5123, 5124, 5, 316, 0, 0, 5124, 5126, 3, 1338, 669, 0, 5125, 5067, 1, 0, 0, 0, 5125, 5068, 1, 0, 0, 0, 5125, 5070, 1, 0, 0, 0, 5125, 5072, 1, 0, 0, 0, 5125, 5076, 1, 0, 0, 0, 5125, 5079, 1, 0, 0, 0, 5125, 5081, 1, 0, 0, 0, 5125, 5083, 1, 0, 0, 0, 5125, 5085, 1, 0, 0, 0, 5125, 5087, 1, 0, 0, 0, 5125, 5089, 1, 0, 0, 0, 5125, 5091, 1, 0, 0, 0, 5125, 5094, 1, 0, 0, 0, 5125, 5096, 1, 0, 0, 0, 5125, 5098, 1, 0, 0, 0, 5125, 5100, 1, 0, 0, 0, 5125, 5105, 1, 0, 0, 0, 5125, 5110, 1, 0, 0, 0, 5125, 5115, 1, 0, 0, 0, 5125, 5120, 1, 0, 0, 0, 5126, 563, 1, 0, 0, 0, 5127, 5132, 3, 566, 283, 0, 5128, 5129, 5, 6, 0, 0, 5129, 5131, 3, 566, 283, 0, 5130, 5128, 1, 0, 0, 0, 5131, 5134, 1, 0, 0, 0, 5132, 5130, 1, 0, 0, 0, 5132, 5133, 1, 0, 0, 0, 5133, 565, 1, 0, 0, 0, 5134, 5132, 1, 0, 0, 0, 5135, 5139, 3, 1368, 684, 0, 5136, 5137, 5, 66, 0, 0, 5137, 5139, 3, 1368, 684, 0, 5138, 5135, 1, 0, 0, 0, 5138, 5136, 1, 0, 0, 0, 5139, 567, 1, 0, 0, 0, 5140, 5141, 5, 105, 0, 0, 5141, 5142, 5, 65, 0, 0, 5142, 5145, 5, 272, 0, 0, 5143, 5145, 1, 0, 0, 0, 5144, 5140, 1, 0, 0, 0, 5144, 5143, 1, 0, 0, 0, 5145, 569, 1, 0, 0, 0, 5146, 5147, 5, 65, 0, 0, 5147, 5148, 3, 558, 279, 0, 5148, 5149, 5, 94, 0, 0, 5149, 5150, 3, 1370, 685, 0, 5150, 5151, 3, 574, 287, 0, 5151, 5152, 3, 576, 288, 0, 5152, 571, 1, 0, 0, 0, 5153, 5154, 5, 310, 0, 0, 5154, 5155, 3, 558, 279, 0, 5155, 5156, 5, 64, 0, 0, 5156, 5157, 3, 1370, 685, 0, 5157, 5158, 3, 576, 288, 0, 5158, 5159, 3, 108, 54, 0, 5159, 5171, 1, 0, 0, 0, 5160, 5161, 5, 310, 0, 0, 5161, 5162, 5, 134, 0, 0, 5162, 5163, 5, 272, 0, 0, 5163, 5164, 5, 62, 0, 0, 5164, 5165, 3, 558, 279, 0, 5165, 5166, 5, 64, 0, 0, 5166, 5167, 3, 1370, 685, 0, 5167, 5168, 3, 576, 288, 0, 5168, 5169, 3, 108, 54, 0, 5169, 5171, 1, 0, 0, 0, 5170, 5153, 1, 0, 0, 0, 5170, 5160, 1, 0, 0, 0, 5171, 573, 1, 0, 0, 0, 5172, 5173, 5, 105, 0, 0, 5173, 5174, 5, 134, 0, 0, 5174, 5177, 5, 272, 0, 0, 5175, 5177, 1, 0, 0, 0, 5176, 5172, 1, 0, 0, 0, 5176, 5175, 1, 0, 0, 0, 5177, 575, 1, 0, 0, 0, 5178, 5179, 5, 214, 0, 0, 5179, 5180, 5, 147, 0, 0, 5180, 5183, 3, 1368, 684, 0, 5181, 5183, 1, 0, 0, 0, 5182, 5178, 1, 0, 0, 0, 5182, 5181, 1, 0, 0, 0, 5183, 577, 1, 0, 0, 0, 5184, 5185, 5, 138, 0, 0, 5185, 5186, 5, 53, 0, 0, 5186, 5187, 5, 287, 0, 0, 5187, 5188, 3, 580, 290, 0, 5188, 5189, 3, 584, 292, 0, 5189, 579, 1, 0, 0, 0, 5190, 5192, 3, 582, 291, 0, 5191, 5190, 1, 0, 0, 0, 5192, 5195, 1, 0, 0, 0, 5193, 5191, 1, 0, 0, 0, 5193, 5194, 1, 0, 0, 0, 5194, 581, 1, 0, 0, 0, 5195, 5193, 1, 0, 0, 0, 5196, 5197, 5, 68, 0, 0, 5197, 5198, 5, 316, 0, 0, 5198, 5206, 3, 1338, 669, 0, 5199, 5200, 5, 62, 0, 0, 5200, 5201, 5, 311, 0, 0, 5201, 5206, 3, 1370, 685, 0, 5202, 5203, 5, 62, 0, 0, 5203, 5204, 5, 99, 0, 0, 5204, 5206, 3, 1370, 685, 0, 5205, 5196, 1, 0, 0, 0, 5205, 5199, 1, 0, 0, 0, 5205, 5202, 1, 0, 0, 0, 5206, 583, 1, 0, 0, 0, 5207, 5208, 5, 65, 0, 0, 5208, 5209, 3, 556, 278, 0, 5209, 5210, 5, 80, 0, 0, 5210, 5211, 3, 586, 293, 0, 5211, 5212, 5, 94, 0, 0, 5212, 5213, 3, 564, 282, 0, 5213, 5214, 3, 568, 284, 0, 5214, 5235, 1, 0, 0, 0, 5215, 5216, 5, 310, 0, 0, 5216, 5217, 3, 556, 278, 0, 5217, 5218, 5, 80, 0, 0, 5218, 5219, 3, 586, 293, 0, 5219, 5220, 5, 64, 0, 0, 5220, 5221, 3, 564, 282, 0, 5221, 5222, 3, 108, 54, 0, 5222, 5235, 1, 0, 0, 0, 5223, 5224, 5, 310, 0, 0, 5224, 5225, 5, 65, 0, 0, 5225, 5226, 5, 272, 0, 0, 5226, 5227, 5, 62, 0, 0, 5227, 5228, 3, 556, 278, 0, 5228, 5229, 5, 80, 0, 0, 5229, 5230, 3, 586, 293, 0, 5230, 5231, 5, 64, 0, 0, 5231, 5232, 3, 564, 282, 0, 5232, 5233, 3, 108, 54, 0, 5233, 5235, 1, 0, 0, 0, 5234, 5207, 1, 0, 0, 0, 5234, 5215, 1, 0, 0, 0, 5234, 5223, 1, 0, 0, 0, 5235, 585, 1, 0, 0, 0, 5236, 5237, 7, 25, 0, 0, 5237, 587, 1, 0, 0, 0, 5238, 5239, 5, 46, 0, 0, 5239, 5240, 3, 590, 295, 0, 5240, 5241, 5, 226, 0, 0, 5241, 5242, 3, 592, 296, 0, 5242, 5243, 3, 594, 297, 0, 5243, 5244, 5, 80, 0, 0, 5244, 5245, 3, 1074, 537, 0, 5245, 5246, 3, 596, 298, 0, 5246, 5247, 5, 2, 0, 0, 5247, 5248, 3, 598, 299, 0, 5248, 5249, 5, 3, 0, 0, 5249, 5250, 3, 604, 302, 0, 5250, 5251, 3, 118, 59, 0, 5251, 5252, 3, 254, 127, 0, 5252, 5253, 3, 1094, 547, 0, 5253, 5274, 1, 0, 0, 0, 5254, 5255, 5, 46, 0, 0, 5255, 5256, 3, 590, 295, 0, 5256, 5257, 5, 226, 0, 0, 5257, 5258, 3, 592, 296, 0, 5258, 5259, 5, 220, 0, 0, 5259, 5260, 5, 77, 0, 0, 5260, 5261, 5, 389, 0, 0, 5261, 5262, 3, 1340, 670, 0, 5262, 5263, 5, 80, 0, 0, 5263, 5264, 3, 1074, 537, 0, 5264, 5265, 3, 596, 298, 0, 5265, 5266, 5, 2, 0, 0, 5266, 5267, 3, 598, 299, 0, 5267, 5268, 5, 3, 0, 0, 5268, 5269, 3, 604, 302, 0, 5269, 5270, 3, 118, 59, 0, 5270, 5271, 3, 254, 127, 0, 5271, 5272, 3, 1094, 547, 0, 5272, 5274, 1, 0, 0, 0, 5273, 5238, 1, 0, 0, 0, 5273, 5254, 1, 0, 0, 0, 5274, 589, 1, 0, 0, 0, 5275, 5278, 5, 98, 0, 0, 5276, 5278, 1, 0, 0, 0, 5277, 5275, 1, 0, 0, 0, 5277, 5276, 1, 0, 0, 0, 5278, 591, 1, 0, 0, 0, 5279, 5282, 5, 109, 0, 0, 5280, 5282, 1, 0, 0, 0, 5281, 5279, 1, 0, 0, 0, 5281, 5280, 1, 0, 0, 0, 5282, 593, 1, 0, 0, 0, 5283, 5286, 3, 1340, 670, 0, 5284, 5286, 1, 0, 0, 0, 5285, 5283, 1, 0, 0, 0, 5285, 5284, 1, 0, 0, 0, 5286, 595, 1, 0, 0, 0, 5287, 5288, 5, 100, 0, 0, 5288, 5291, 3, 1340, 670, 0, 5289, 5291, 1, 0, 0, 0, 5290, 5287, 1, 0, 0, 0, 5290, 5289, 1, 0, 0, 0, 5291, 597, 1, 0, 0, 0, 5292, 5297, 3, 602, 301, 0, 5293, 5294, 5, 6, 0, 0, 5294, 5296, 3, 602, 301, 0, 5295, 5293, 1, 0, 0, 0, 5296, 5299, 1, 0, 0, 0, 5297, 5295, 1, 0, 0, 0, 5297, 5298, 1, 0, 0, 0, 5298, 599, 1, 0, 0, 0, 5299, 5297, 1, 0, 0, 0, 5300, 5301, 3, 608, 304, 0, 5301, 5302, 3, 610, 305, 0, 5302, 5303, 3, 612, 306, 0, 5303, 5304, 3, 614, 307, 0, 5304, 5312, 1, 0, 0, 0, 5305, 5306, 3, 608, 304, 0, 5306, 5307, 3, 524, 262, 0, 5307, 5308, 3, 116, 58, 0, 5308, 5309, 3, 612, 306, 0, 5309, 5310, 3, 614, 307, 0, 5310, 5312, 1, 0, 0, 0, 5311, 5300, 1, 0, 0, 0, 5311, 5305, 1, 0, 0, 0, 5312, 601, 1, 0, 0, 0, 5313, 5314, 3, 1372, 686, 0, 5314, 5315, 3, 600, 300, 0, 5315, 5325, 1, 0, 0, 0, 5316, 5317, 3, 1214, 607, 0, 5317, 5318, 3, 600, 300, 0, 5318, 5325, 1, 0, 0, 0, 5319, 5320, 5, 2, 0, 0, 5320, 5321, 3, 1162, 581, 0, 5321, 5322, 5, 3, 0, 0, 5322, 5323, 3, 600, 300, 0, 5323, 5325, 1, 0, 0, 0, 5324, 5313, 1, 0, 0, 0, 5324, 5316, 1, 0, 0, 0, 5324, 5319, 1, 0, 0, 0, 5325, 603, 1, 0, 0, 0, 5326, 5327, 5, 441, 0, 0, 5327, 5328, 5, 2, 0, 0, 5328, 5329, 3, 606, 303, 0, 5329, 5330, 5, 3, 0, 0, 5330, 5333, 1, 0, 0, 0, 5331, 5333, 1, 0, 0, 0, 5332, 5326, 1, 0, 0, 0, 5332, 5331, 1, 0, 0, 0, 5333, 605, 1, 0, 0, 0, 5334, 5339, 3, 602, 301, 0, 5335, 5336, 5, 6, 0, 0, 5336, 5338, 3, 602, 301, 0, 5337, 5335, 1, 0, 0, 0, 5338, 5341, 1, 0, 0, 0, 5339, 5337, 1, 0, 0, 0, 5339, 5340, 1, 0, 0, 0, 5340, 607, 1, 0, 0, 0, 5341, 5339, 1, 0, 0, 0, 5342, 5343, 5, 43, 0, 0, 5343, 5346, 3, 524, 262, 0, 5344, 5346, 1, 0, 0, 0, 5345, 5342, 1, 0, 0, 0, 5345, 5344, 1, 0, 0, 0, 5346, 609, 1, 0, 0, 0, 5347, 5350, 3, 524, 262, 0, 5348, 5350, 1, 0, 0, 0, 5349, 5347, 1, 0, 0, 0, 5349, 5348, 1, 0, 0, 0, 5350, 611, 1, 0, 0, 0, 5351, 5355, 5, 37, 0, 0, 5352, 5355, 5, 55, 0, 0, 5353, 5355, 1, 0, 0, 0, 5354, 5351, 1, 0, 0, 0, 5354, 5352, 1, 0, 0, 0, 5354, 5353, 1, 0, 0, 0, 5355, 613, 1, 0, 0, 0, 5356, 5357, 5, 266, 0, 0, 5357, 5362, 5, 207, 0, 0, 5358, 5359, 5, 266, 0, 0, 5359, 5362, 5, 240, 0, 0, 5360, 5362, 1, 0, 0, 0, 5361, 5356, 1, 0, 0, 0, 5361, 5358, 1, 0, 0, 0, 5361, 5360, 1, 0, 0, 0, 5362, 615, 1, 0, 0, 0, 5363, 5364, 5, 46, 0, 0, 5364, 5365, 3, 618, 309, 0, 5365, 5366, 7, 22, 0, 0, 5366, 5367, 3, 1346, 673, 0, 5367, 5377, 3, 628, 314, 0, 5368, 5375, 5, 309, 0, 0, 5369, 5376, 3, 638, 319, 0, 5370, 5371, 5, 92, 0, 0, 5371, 5372, 5, 2, 0, 0, 5372, 5373, 3, 668, 334, 0, 5373, 5374, 5, 3, 0, 0, 5374, 5376, 1, 0, 0, 0, 5375, 5369, 1, 0, 0, 0, 5375, 5370, 1, 0, 0, 0, 5376, 5378, 1, 0, 0, 0, 5377, 5368, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5379, 1, 0, 0, 0, 5379, 5380, 3, 654, 327, 0, 5380, 617, 1, 0, 0, 0, 5381, 5382, 5, 82, 0, 0, 5382, 5385, 5, 304, 0, 0, 5383, 5385, 1, 0, 0, 0, 5384, 5381, 1, 0, 0, 0, 5384, 5383, 1, 0, 0, 0, 5385, 619, 1, 0, 0, 0, 5386, 5388, 5, 2, 0, 0, 5387, 5389, 3, 622, 311, 0, 5388, 5387, 1, 0, 0, 0, 5388, 5389, 1, 0, 0, 0, 5389, 5390, 1, 0, 0, 0, 5390, 5391, 5, 3, 0, 0, 5391, 621, 1, 0, 0, 0, 5392, 5397, 3, 632, 316, 0, 5393, 5394, 5, 6, 0, 0, 5394, 5396, 3, 632, 316, 0, 5395, 5393, 1, 0, 0, 0, 5396, 5399, 1, 0, 0, 0, 5397, 5395, 1, 0, 0, 0, 5397, 5398, 1, 0, 0, 0, 5398, 623, 1, 0, 0, 0, 5399, 5397, 1, 0, 0, 0, 5400, 5405, 3, 626, 313, 0, 5401, 5402, 5, 6, 0, 0, 5402, 5404, 3, 626, 313, 0, 5403, 5401, 1, 0, 0, 0, 5404, 5407, 1, 0, 0, 0, 5405, 5403, 1, 0, 0, 0, 5405, 5406, 1, 0, 0, 0, 5406, 625, 1, 0, 0, 0, 5407, 5405, 1, 0, 0, 0, 5408, 5409, 3, 1346, 673, 0, 5409, 5410, 3, 620, 310, 0, 5410, 5417, 1, 0, 0, 0, 5411, 5417, 3, 1390, 695, 0, 5412, 5414, 3, 1372, 686, 0, 5413, 5415, 3, 1324, 662, 0, 5414, 5413, 1, 0, 0, 0, 5414, 5415, 1, 0, 0, 0, 5415, 5417, 1, 0, 0, 0, 5416, 5408, 1, 0, 0, 0, 5416, 5411, 1, 0, 0, 0, 5416, 5412, 1, 0, 0, 0, 5417, 627, 1, 0, 0, 0, 5418, 5420, 5, 2, 0, 0, 5419, 5421, 3, 630, 315, 0, 5420, 5419, 1, 0, 0, 0, 5420, 5421, 1, 0, 0, 0, 5421, 5422, 1, 0, 0, 0, 5422, 5423, 5, 3, 0, 0, 5423, 629, 1, 0, 0, 0, 5424, 5429, 3, 642, 321, 0, 5425, 5426, 5, 6, 0, 0, 5426, 5428, 3, 642, 321, 0, 5427, 5425, 1, 0, 0, 0, 5428, 5431, 1, 0, 0, 0, 5429, 5427, 1, 0, 0, 0, 5429, 5430, 1, 0, 0, 0, 5430, 631, 1, 0, 0, 0, 5431, 5429, 1, 0, 0, 0, 5432, 5434, 3, 634, 317, 0, 5433, 5435, 3, 636, 318, 0, 5434, 5433, 1, 0, 0, 0, 5434, 5435, 1, 0, 0, 0, 5435, 5436, 1, 0, 0, 0, 5436, 5437, 3, 640, 320, 0, 5437, 5446, 1, 0, 0, 0, 5438, 5440, 3, 636, 318, 0, 5439, 5441, 3, 634, 317, 0, 5440, 5439, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5442, 1, 0, 0, 0, 5442, 5443, 3, 640, 320, 0, 5443, 5446, 1, 0, 0, 0, 5444, 5446, 3, 640, 320, 0, 5445, 5432, 1, 0, 0, 0, 5445, 5438, 1, 0, 0, 0, 5445, 5444, 1, 0, 0, 0, 5446, 633, 1, 0, 0, 0, 5447, 5449, 5, 68, 0, 0, 5448, 5450, 5, 453, 0, 0, 5449, 5448, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5455, 1, 0, 0, 0, 5451, 5455, 5, 453, 0, 0, 5452, 5455, 5, 393, 0, 0, 5453, 5455, 5, 101, 0, 0, 5454, 5447, 1, 0, 0, 0, 5454, 5451, 1, 0, 0, 0, 5454, 5452, 1, 0, 0, 0, 5454, 5453, 1, 0, 0, 0, 5455, 635, 1, 0, 0, 0, 5456, 5461, 3, 1376, 688, 0, 5457, 5461, 3, 1394, 697, 0, 5458, 5461, 5, 119, 0, 0, 5459, 5461, 5, 126, 0, 0, 5460, 5456, 1, 0, 0, 0, 5460, 5457, 1, 0, 0, 0, 5460, 5458, 1, 0, 0, 0, 5460, 5459, 1, 0, 0, 0, 5461, 637, 1, 0, 0, 0, 5462, 5463, 3, 640, 320, 0, 5463, 639, 1, 0, 0, 0, 5464, 5479, 3, 1118, 559, 0, 5465, 5467, 5, 408, 0, 0, 5466, 5465, 1, 0, 0, 0, 5466, 5467, 1, 0, 0, 0, 5467, 5472, 1, 0, 0, 0, 5468, 5473, 3, 1394, 697, 0, 5469, 5473, 3, 1376, 688, 0, 5470, 5473, 5, 119, 0, 0, 5471, 5473, 5, 126, 0, 0, 5472, 5468, 1, 0, 0, 0, 5472, 5469, 1, 0, 0, 0, 5472, 5470, 1, 0, 0, 0, 5472, 5471, 1, 0, 0, 0, 5473, 5474, 1, 0, 0, 0, 5474, 5475, 3, 526, 263, 0, 5475, 5476, 5, 27, 0, 0, 5476, 5477, 5, 353, 0, 0, 5477, 5479, 1, 0, 0, 0, 5478, 5464, 1, 0, 0, 0, 5478, 5466, 1, 0, 0, 0, 5479, 641, 1, 0, 0, 0, 5480, 5483, 3, 632, 316, 0, 5481, 5482, 7, 26, 0, 0, 5482, 5484, 3, 1162, 581, 0, 5483, 5481, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 643, 1, 0, 0, 0, 5485, 5486, 3, 632, 316, 0, 5486, 645, 1, 0, 0, 0, 5487, 5498, 5, 2, 0, 0, 5488, 5499, 5, 9, 0, 0, 5489, 5499, 3, 648, 324, 0, 5490, 5491, 5, 83, 0, 0, 5491, 5492, 5, 147, 0, 0, 5492, 5499, 3, 648, 324, 0, 5493, 5494, 3, 648, 324, 0, 5494, 5495, 5, 83, 0, 0, 5495, 5496, 5, 147, 0, 0, 5496, 5497, 3, 648, 324, 0, 5497, 5499, 1, 0, 0, 0, 5498, 5488, 1, 0, 0, 0, 5498, 5489, 1, 0, 0, 0, 5498, 5490, 1, 0, 0, 0, 5498, 5493, 1, 0, 0, 0, 5499, 5500, 1, 0, 0, 0, 5500, 5501, 5, 3, 0, 0, 5501, 647, 1, 0, 0, 0, 5502, 5507, 3, 644, 322, 0, 5503, 5504, 5, 6, 0, 0, 5504, 5506, 3, 644, 322, 0, 5505, 5503, 1, 0, 0, 0, 5506, 5509, 1, 0, 0, 0, 5507, 5505, 1, 0, 0, 0, 5507, 5508, 1, 0, 0, 0, 5508, 649, 1, 0, 0, 0, 5509, 5507, 1, 0, 0, 0, 5510, 5511, 3, 1346, 673, 0, 5511, 5512, 3, 646, 323, 0, 5512, 651, 1, 0, 0, 0, 5513, 5518, 3, 650, 325, 0, 5514, 5515, 5, 6, 0, 0, 5515, 5517, 3, 650, 325, 0, 5516, 5514, 1, 0, 0, 0, 5517, 5520, 1, 0, 0, 0, 5518, 5516, 1, 0, 0, 0, 5518, 5519, 1, 0, 0, 0, 5519, 653, 1, 0, 0, 0, 5520, 5518, 1, 0, 0, 0, 5521, 5523, 3, 658, 329, 0, 5522, 5521, 1, 0, 0, 0, 5523, 5524, 1, 0, 0, 0, 5524, 5522, 1, 0, 0, 0, 5524, 5525, 1, 0, 0, 0, 5525, 5526, 1, 0, 0, 0, 5526, 5527, 6, 327, -1, 0, 5527, 655, 1, 0, 0, 0, 5528, 5529, 5, 149, 0, 0, 5529, 5530, 5, 80, 0, 0, 5530, 5531, 5, 78, 0, 0, 5531, 5564, 5, 458, 0, 0, 5532, 5533, 5, 309, 0, 0, 5533, 5534, 5, 78, 0, 0, 5534, 5535, 5, 80, 0, 0, 5535, 5536, 5, 78, 0, 0, 5536, 5564, 5, 458, 0, 0, 5537, 5564, 5, 339, 0, 0, 5538, 5564, 5, 222, 0, 0, 5539, 5564, 5, 331, 0, 0, 5540, 5564, 5, 370, 0, 0, 5541, 5542, 5, 205, 0, 0, 5542, 5543, 5, 320, 0, 0, 5543, 5564, 5, 181, 0, 0, 5544, 5545, 5, 205, 0, 0, 5545, 5546, 5, 320, 0, 0, 5546, 5564, 5, 234, 0, 0, 5547, 5548, 5, 320, 0, 0, 5548, 5564, 5, 181, 0, 0, 5549, 5550, 5, 320, 0, 0, 5550, 5564, 5, 234, 0, 0, 5551, 5564, 5, 241, 0, 0, 5552, 5553, 5, 77, 0, 0, 5553, 5564, 5, 241, 0, 0, 5554, 5555, 5, 170, 0, 0, 5555, 5564, 3, 292, 146, 0, 5556, 5557, 5, 313, 0, 0, 5557, 5564, 3, 292, 146, 0, 5558, 5559, 5, 459, 0, 0, 5559, 5564, 3, 524, 262, 0, 5560, 5564, 3, 82, 41, 0, 5561, 5562, 5, 460, 0, 0, 5562, 5564, 3, 1372, 686, 0, 5563, 5528, 1, 0, 0, 0, 5563, 5532, 1, 0, 0, 0, 5563, 5537, 1, 0, 0, 0, 5563, 5538, 1, 0, 0, 0, 5563, 5539, 1, 0, 0, 0, 5563, 5540, 1, 0, 0, 0, 5563, 5541, 1, 0, 0, 0, 5563, 5544, 1, 0, 0, 0, 5563, 5547, 1, 0, 0, 0, 5563, 5549, 1, 0, 0, 0, 5563, 5551, 1, 0, 0, 0, 5563, 5552, 1, 0, 0, 0, 5563, 5554, 1, 0, 0, 0, 5563, 5556, 1, 0, 0, 0, 5563, 5558, 1, 0, 0, 0, 5563, 5560, 1, 0, 0, 0, 5563, 5561, 1, 0, 0, 0, 5564, 657, 1, 0, 0, 0, 5565, 5566, 5, 36, 0, 0, 5566, 5574, 3, 660, 330, 0, 5567, 5568, 5, 238, 0, 0, 5568, 5574, 3, 72, 36, 0, 5569, 5570, 5, 443, 0, 0, 5570, 5574, 3, 662, 331, 0, 5571, 5574, 5, 104, 0, 0, 5572, 5574, 3, 656, 328, 0, 5573, 5565, 1, 0, 0, 0, 5573, 5567, 1, 0, 0, 0, 5573, 5569, 1, 0, 0, 0, 5573, 5571, 1, 0, 0, 0, 5573, 5572, 1, 0, 0, 0, 5574, 659, 1, 0, 0, 0, 5575, 5581, 3, 1358, 679, 0, 5576, 5577, 3, 1358, 679, 0, 5577, 5578, 5, 6, 0, 0, 5578, 5579, 3, 1358, 679, 0, 5579, 5581, 1, 0, 0, 0, 5580, 5575, 1, 0, 0, 0, 5580, 5576, 1, 0, 0, 0, 5581, 661, 1, 0, 0, 0, 5582, 5583, 5, 62, 0, 0, 5583, 5584, 5, 353, 0, 0, 5584, 5591, 3, 1118, 559, 0, 5585, 5586, 5, 6, 0, 0, 5586, 5587, 5, 62, 0, 0, 5587, 5588, 5, 353, 0, 0, 5588, 5590, 3, 1118, 559, 0, 5589, 5585, 1, 0, 0, 0, 5590, 5593, 1, 0, 0, 0, 5591, 5589, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 663, 1, 0, 0, 0, 5593, 5591, 1, 0, 0, 0, 5594, 5595, 5, 105, 0, 0, 5595, 5598, 3, 460, 230, 0, 5596, 5598, 1, 0, 0, 0, 5597, 5594, 1, 0, 0, 0, 5597, 5596, 1, 0, 0, 0, 5598, 665, 1, 0, 0, 0, 5599, 5600, 3, 636, 318, 0, 5600, 5601, 3, 640, 320, 0, 5601, 667, 1, 0, 0, 0, 5602, 5607, 3, 666, 333, 0, 5603, 5604, 5, 6, 0, 0, 5604, 5606, 3, 666, 333, 0, 5605, 5603, 1, 0, 0, 0, 5606, 5609, 1, 0, 0, 0, 5607, 5605, 1, 0, 0, 0, 5607, 5608, 1, 0, 0, 0, 5608, 669, 1, 0, 0, 0, 5609, 5607, 1, 0, 0, 0, 5610, 5611, 5, 138, 0, 0, 5611, 5612, 7, 27, 0, 0, 5612, 5613, 3, 626, 313, 0, 5613, 5614, 3, 672, 336, 0, 5614, 5615, 3, 674, 337, 0, 5615, 671, 1, 0, 0, 0, 5616, 5618, 3, 656, 328, 0, 5617, 5616, 1, 0, 0, 0, 5618, 5619, 1, 0, 0, 0, 5619, 5617, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 673, 1, 0, 0, 0, 5621, 5624, 5, 308, 0, 0, 5622, 5624, 1, 0, 0, 0, 5623, 5621, 1, 0, 0, 0, 5623, 5622, 1, 0, 0, 0, 5624, 675, 1, 0, 0, 0, 5625, 5626, 5, 191, 0, 0, 5626, 5627, 5, 211, 0, 0, 5627, 5628, 3, 624, 312, 0, 5628, 5629, 3, 108, 54, 0, 5629, 5662, 1, 0, 0, 0, 5630, 5631, 5, 191, 0, 0, 5631, 5632, 5, 211, 0, 0, 5632, 5633, 5, 220, 0, 0, 5633, 5634, 5, 389, 0, 0, 5634, 5635, 3, 624, 312, 0, 5635, 5636, 3, 108, 54, 0, 5636, 5662, 1, 0, 0, 0, 5637, 5638, 5, 191, 0, 0, 5638, 5639, 5, 289, 0, 0, 5639, 5640, 3, 624, 312, 0, 5640, 5641, 3, 108, 54, 0, 5641, 5662, 1, 0, 0, 0, 5642, 5643, 5, 191, 0, 0, 5643, 5644, 5, 289, 0, 0, 5644, 5645, 5, 220, 0, 0, 5645, 5646, 5, 389, 0, 0, 5646, 5647, 3, 624, 312, 0, 5647, 5648, 3, 108, 54, 0, 5648, 5662, 1, 0, 0, 0, 5649, 5650, 5, 191, 0, 0, 5650, 5651, 5, 442, 0, 0, 5651, 5652, 3, 624, 312, 0, 5652, 5653, 3, 108, 54, 0, 5653, 5662, 1, 0, 0, 0, 5654, 5655, 5, 191, 0, 0, 5655, 5656, 5, 442, 0, 0, 5656, 5657, 5, 220, 0, 0, 5657, 5658, 5, 389, 0, 0, 5658, 5659, 3, 624, 312, 0, 5659, 5660, 3, 108, 54, 0, 5660, 5662, 1, 0, 0, 0, 5661, 5625, 1, 0, 0, 0, 5661, 5630, 1, 0, 0, 0, 5661, 5637, 1, 0, 0, 0, 5661, 5642, 1, 0, 0, 0, 5661, 5649, 1, 0, 0, 0, 5661, 5654, 1, 0, 0, 0, 5662, 677, 1, 0, 0, 0, 5663, 5664, 5, 191, 0, 0, 5664, 5665, 5, 136, 0, 0, 5665, 5666, 3, 652, 326, 0, 5666, 5667, 3, 108, 54, 0, 5667, 5676, 1, 0, 0, 0, 5668, 5669, 5, 191, 0, 0, 5669, 5670, 5, 136, 0, 0, 5670, 5671, 5, 220, 0, 0, 5671, 5672, 5, 389, 0, 0, 5672, 5673, 3, 652, 326, 0, 5673, 5674, 3, 108, 54, 0, 5674, 5676, 1, 0, 0, 0, 5675, 5663, 1, 0, 0, 0, 5675, 5668, 1, 0, 0, 0, 5676, 679, 1, 0, 0, 0, 5677, 5678, 5, 191, 0, 0, 5678, 5679, 5, 271, 0, 0, 5679, 5680, 3, 686, 343, 0, 5680, 5681, 3, 108, 54, 0, 5681, 5690, 1, 0, 0, 0, 5682, 5683, 5, 191, 0, 0, 5683, 5684, 5, 271, 0, 0, 5684, 5685, 5, 220, 0, 0, 5685, 5686, 5, 389, 0, 0, 5686, 5687, 3, 686, 343, 0, 5687, 5688, 3, 108, 54, 0, 5688, 5690, 1, 0, 0, 0, 5689, 5677, 1, 0, 0, 0, 5689, 5682, 1, 0, 0, 0, 5690, 681, 1, 0, 0, 0, 5691, 5692, 5, 2, 0, 0, 5692, 5693, 3, 1118, 559, 0, 5693, 5694, 5, 3, 0, 0, 5694, 5714, 1, 0, 0, 0, 5695, 5696, 5, 2, 0, 0, 5696, 5697, 3, 1118, 559, 0, 5697, 5698, 5, 6, 0, 0, 5698, 5699, 3, 1118, 559, 0, 5699, 5700, 5, 3, 0, 0, 5700, 5714, 1, 0, 0, 0, 5701, 5702, 5, 2, 0, 0, 5702, 5703, 5, 400, 0, 0, 5703, 5704, 5, 6, 0, 0, 5704, 5705, 3, 1118, 559, 0, 5705, 5706, 5, 3, 0, 0, 5706, 5714, 1, 0, 0, 0, 5707, 5708, 5, 2, 0, 0, 5708, 5709, 3, 1118, 559, 0, 5709, 5710, 5, 6, 0, 0, 5710, 5711, 5, 400, 0, 0, 5711, 5712, 5, 3, 0, 0, 5712, 5714, 1, 0, 0, 0, 5713, 5691, 1, 0, 0, 0, 5713, 5695, 1, 0, 0, 0, 5713, 5701, 1, 0, 0, 0, 5713, 5707, 1, 0, 0, 0, 5714, 683, 1, 0, 0, 0, 5715, 5716, 3, 1372, 686, 0, 5716, 5717, 5, 11, 0, 0, 5717, 5719, 1, 0, 0, 0, 5718, 5715, 1, 0, 0, 0, 5719, 5722, 1, 0, 0, 0, 5720, 5718, 1, 0, 0, 0, 5720, 5721, 1, 0, 0, 0, 5721, 5723, 1, 0, 0, 0, 5722, 5720, 1, 0, 0, 0, 5723, 5724, 3, 1270, 635, 0, 5724, 685, 1, 0, 0, 0, 5725, 5730, 3, 688, 344, 0, 5726, 5727, 5, 6, 0, 0, 5727, 5729, 3, 688, 344, 0, 5728, 5726, 1, 0, 0, 0, 5729, 5732, 1, 0, 0, 0, 5730, 5728, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 687, 1, 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 5734, 3, 684, 342, 0, 5734, 5735, 3, 682, 341, 0, 5735, 689, 1, 0, 0, 0, 5736, 5737, 5, 57, 0, 0, 5737, 5738, 3, 692, 346, 0, 5738, 691, 1, 0, 0, 0, 5739, 5741, 3, 694, 347, 0, 5740, 5739, 1, 0, 0, 0, 5741, 5742, 1, 0, 0, 0, 5742, 5740, 1, 0, 0, 0, 5742, 5743, 1, 0, 0, 0, 5743, 693, 1, 0, 0, 0, 5744, 5748, 3, 1358, 679, 0, 5745, 5746, 5, 238, 0, 0, 5746, 5748, 3, 72, 36, 0, 5747, 5744, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5748, 695, 1, 0, 0, 0, 5749, 5750, 5, 46, 0, 0, 5750, 5751, 5, 41, 0, 0, 5751, 5752, 5, 2, 0, 0, 5752, 5753, 3, 1118, 559, 0, 5753, 5754, 5, 36, 0, 0, 5754, 5755, 3, 1118, 559, 0, 5755, 5756, 5, 3, 0, 0, 5756, 5757, 5, 105, 0, 0, 5757, 5758, 5, 211, 0, 0, 5758, 5759, 3, 626, 313, 0, 5759, 5760, 3, 698, 349, 0, 5760, 5784, 1, 0, 0, 0, 5761, 5762, 5, 46, 0, 0, 5762, 5763, 5, 41, 0, 0, 5763, 5764, 5, 2, 0, 0, 5764, 5765, 3, 1118, 559, 0, 5765, 5766, 5, 36, 0, 0, 5766, 5767, 3, 1118, 559, 0, 5767, 5768, 5, 3, 0, 0, 5768, 5769, 5, 372, 0, 0, 5769, 5770, 5, 211, 0, 0, 5770, 5771, 3, 698, 349, 0, 5771, 5784, 1, 0, 0, 0, 5772, 5773, 5, 46, 0, 0, 5773, 5774, 5, 41, 0, 0, 5774, 5775, 5, 2, 0, 0, 5775, 5776, 3, 1118, 559, 0, 5776, 5777, 5, 36, 0, 0, 5777, 5778, 3, 1118, 559, 0, 5778, 5779, 5, 3, 0, 0, 5779, 5780, 5, 105, 0, 0, 5780, 5781, 5, 393, 0, 0, 5781, 5782, 3, 698, 349, 0, 5782, 5784, 1, 0, 0, 0, 5783, 5749, 1, 0, 0, 0, 5783, 5761, 1, 0, 0, 0, 5783, 5772, 1, 0, 0, 0, 5784, 697, 1, 0, 0, 0, 5785, 5786, 5, 36, 0, 0, 5786, 5791, 5, 223, 0, 0, 5787, 5788, 5, 36, 0, 0, 5788, 5791, 5, 141, 0, 0, 5789, 5791, 1, 0, 0, 0, 5790, 5785, 1, 0, 0, 0, 5790, 5787, 1, 0, 0, 0, 5790, 5789, 1, 0, 0, 0, 5791, 699, 1, 0, 0, 0, 5792, 5793, 5, 191, 0, 0, 5793, 5794, 5, 41, 0, 0, 5794, 5795, 3, 702, 351, 0, 5795, 5796, 5, 2, 0, 0, 5796, 5797, 3, 1118, 559, 0, 5797, 5798, 5, 36, 0, 0, 5798, 5799, 3, 1118, 559, 0, 5799, 5800, 5, 3, 0, 0, 5800, 5801, 3, 108, 54, 0, 5801, 701, 1, 0, 0, 0, 5802, 5803, 5, 220, 0, 0, 5803, 5806, 5, 389, 0, 0, 5804, 5806, 1, 0, 0, 0, 5805, 5802, 1, 0, 0, 0, 5805, 5804, 1, 0, 0, 0, 5806, 703, 1, 0, 0, 0, 5807, 5808, 5, 46, 0, 0, 5808, 5809, 3, 618, 309, 0, 5809, 5810, 5, 443, 0, 0, 5810, 5811, 5, 62, 0, 0, 5811, 5812, 3, 1118, 559, 0, 5812, 5813, 5, 238, 0, 0, 5813, 5814, 3, 1340, 670, 0, 5814, 5815, 5, 2, 0, 0, 5815, 5816, 3, 706, 353, 0, 5816, 5817, 5, 3, 0, 0, 5817, 705, 1, 0, 0, 0, 5818, 5819, 5, 64, 0, 0, 5819, 5820, 5, 461, 0, 0, 5820, 5821, 5, 105, 0, 0, 5821, 5822, 5, 211, 0, 0, 5822, 5823, 3, 626, 313, 0, 5823, 5824, 5, 6, 0, 0, 5824, 5825, 5, 94, 0, 0, 5825, 5826, 5, 461, 0, 0, 5826, 5827, 5, 105, 0, 0, 5827, 5828, 5, 211, 0, 0, 5828, 5829, 3, 626, 313, 0, 5829, 5853, 1, 0, 0, 0, 5830, 5831, 5, 94, 0, 0, 5831, 5832, 5, 461, 0, 0, 5832, 5833, 5, 105, 0, 0, 5833, 5834, 5, 211, 0, 0, 5834, 5835, 3, 626, 313, 0, 5835, 5836, 5, 6, 0, 0, 5836, 5837, 5, 64, 0, 0, 5837, 5838, 5, 461, 0, 0, 5838, 5839, 5, 105, 0, 0, 5839, 5840, 5, 211, 0, 0, 5840, 5841, 3, 626, 313, 0, 5841, 5853, 1, 0, 0, 0, 5842, 5843, 5, 64, 0, 0, 5843, 5844, 5, 461, 0, 0, 5844, 5845, 5, 105, 0, 0, 5845, 5846, 5, 211, 0, 0, 5846, 5853, 3, 626, 313, 0, 5847, 5848, 5, 94, 0, 0, 5848, 5849, 5, 461, 0, 0, 5849, 5850, 5, 105, 0, 0, 5850, 5851, 5, 211, 0, 0, 5851, 5853, 3, 626, 313, 0, 5852, 5818, 1, 0, 0, 0, 5852, 5830, 1, 0, 0, 0, 5852, 5842, 1, 0, 0, 0, 5852, 5847, 1, 0, 0, 0, 5853, 707, 1, 0, 0, 0, 5854, 5855, 5, 191, 0, 0, 5855, 5856, 5, 443, 0, 0, 5856, 5857, 3, 702, 351, 0, 5857, 5858, 5, 62, 0, 0, 5858, 5859, 3, 1118, 559, 0, 5859, 5860, 5, 238, 0, 0, 5860, 5861, 3, 1340, 670, 0, 5861, 5862, 3, 108, 54, 0, 5862, 709, 1, 0, 0, 0, 5863, 5864, 5, 299, 0, 0, 5864, 5865, 3, 712, 356, 0, 5865, 5866, 3, 592, 296, 0, 5866, 5867, 3, 1336, 668, 0, 5867, 5890, 1, 0, 0, 0, 5868, 5869, 5, 299, 0, 0, 5869, 5870, 3, 714, 357, 0, 5870, 5871, 3, 592, 296, 0, 5871, 5872, 3, 1340, 670, 0, 5872, 5890, 1, 0, 0, 0, 5873, 5874, 5, 299, 0, 0, 5874, 5875, 5, 2, 0, 0, 5875, 5876, 3, 716, 358, 0, 5876, 5877, 5, 3, 0, 0, 5877, 5878, 3, 712, 356, 0, 5878, 5879, 3, 592, 296, 0, 5879, 5880, 3, 1336, 668, 0, 5880, 5890, 1, 0, 0, 0, 5881, 5882, 5, 299, 0, 0, 5882, 5883, 5, 2, 0, 0, 5883, 5884, 3, 716, 358, 0, 5884, 5885, 5, 3, 0, 0, 5885, 5886, 3, 714, 357, 0, 5886, 5887, 3, 592, 296, 0, 5887, 5888, 3, 1340, 670, 0, 5888, 5890, 1, 0, 0, 0, 5889, 5863, 1, 0, 0, 0, 5889, 5868, 1, 0, 0, 0, 5889, 5873, 1, 0, 0, 0, 5889, 5881, 1, 0, 0, 0, 5890, 711, 1, 0, 0, 0, 5891, 5892, 7, 28, 0, 0, 5892, 713, 1, 0, 0, 0, 5893, 5894, 7, 29, 0, 0, 5894, 715, 1, 0, 0, 0, 5895, 5900, 3, 718, 359, 0, 5896, 5897, 5, 6, 0, 0, 5897, 5899, 3, 718, 359, 0, 5898, 5896, 1, 0, 0, 0, 5899, 5902, 1, 0, 0, 0, 5900, 5898, 1, 0, 0, 0, 5900, 5901, 1, 0, 0, 0, 5901, 717, 1, 0, 0, 0, 5902, 5900, 1, 0, 0, 0, 5903, 5904, 7, 30, 0, 0, 5904, 719, 1, 0, 0, 0, 5905, 5906, 5, 138, 0, 0, 5906, 5907, 5, 344, 0, 0, 5907, 5908, 3, 1340, 670, 0, 5908, 5909, 5, 326, 0, 0, 5909, 5910, 3, 116, 58, 0, 5910, 5918, 1, 0, 0, 0, 5911, 5912, 5, 138, 0, 0, 5912, 5913, 5, 344, 0, 0, 5913, 5914, 3, 1340, 670, 0, 5914, 5915, 5, 306, 0, 0, 5915, 5916, 3, 116, 58, 0, 5916, 5918, 1, 0, 0, 0, 5917, 5905, 1, 0, 0, 0, 5917, 5911, 1, 0, 0, 0, 5918, 721, 1, 0, 0, 0, 5919, 5920, 5, 138, 0, 0, 5920, 5921, 5, 136, 0, 0, 5921, 5922, 3, 650, 325, 0, 5922, 5923, 5, 302, 0, 0, 5923, 5924, 5, 94, 0, 0, 5924, 5925, 3, 1340, 670, 0, 5925, 6388, 1, 0, 0, 0, 5926, 5927, 5, 138, 0, 0, 5927, 5928, 5, 108, 0, 0, 5928, 5929, 3, 524, 262, 0, 5929, 5930, 5, 302, 0, 0, 5930, 5931, 5, 94, 0, 0, 5931, 5932, 3, 1340, 670, 0, 5932, 6388, 1, 0, 0, 0, 5933, 5934, 5, 138, 0, 0, 5934, 5935, 5, 168, 0, 0, 5935, 5936, 3, 524, 262, 0, 5936, 5937, 5, 302, 0, 0, 5937, 5938, 5, 94, 0, 0, 5938, 5939, 3, 1340, 670, 0, 5939, 6388, 1, 0, 0, 0, 5940, 5941, 5, 138, 0, 0, 5941, 5942, 5, 175, 0, 0, 5942, 5943, 3, 1340, 670, 0, 5943, 5944, 5, 302, 0, 0, 5944, 5945, 5, 94, 0, 0, 5945, 5946, 3, 1340, 670, 0, 5946, 6388, 1, 0, 0, 0, 5947, 5948, 5, 138, 0, 0, 5948, 5949, 5, 189, 0, 0, 5949, 5950, 3, 524, 262, 0, 5950, 5951, 5, 302, 0, 0, 5951, 5952, 5, 94, 0, 0, 5952, 5953, 3, 1340, 670, 0, 5953, 6388, 1, 0, 0, 0, 5954, 5955, 5, 138, 0, 0, 5955, 5956, 5, 189, 0, 0, 5956, 5957, 3, 524, 262, 0, 5957, 5958, 5, 302, 0, 0, 5958, 5959, 5, 45, 0, 0, 5959, 5960, 3, 1340, 670, 0, 5960, 5961, 5, 94, 0, 0, 5961, 5962, 3, 1340, 670, 0, 5962, 6388, 1, 0, 0, 0, 5963, 5964, 5, 138, 0, 0, 5964, 5965, 5, 63, 0, 0, 5965, 5966, 5, 174, 0, 0, 5966, 5967, 5, 374, 0, 0, 5967, 5968, 3, 1340, 670, 0, 5968, 5969, 5, 302, 0, 0, 5969, 5970, 5, 94, 0, 0, 5970, 5971, 3, 1340, 670, 0, 5971, 6388, 1, 0, 0, 0, 5972, 5973, 5, 138, 0, 0, 5973, 5974, 5, 211, 0, 0, 5974, 5975, 3, 626, 313, 0, 5975, 5976, 5, 302, 0, 0, 5976, 5977, 5, 94, 0, 0, 5977, 5978, 3, 1340, 670, 0, 5978, 6388, 1, 0, 0, 0, 5979, 5980, 5, 138, 0, 0, 5980, 5981, 5, 66, 0, 0, 5981, 5982, 3, 1366, 683, 0, 5982, 5983, 5, 302, 0, 0, 5983, 5984, 5, 94, 0, 0, 5984, 5985, 3, 1366, 683, 0, 5985, 6388, 1, 0, 0, 0, 5986, 5987, 5, 138, 0, 0, 5987, 5988, 3, 308, 154, 0, 5988, 5989, 5, 238, 0, 0, 5989, 5990, 3, 1340, 670, 0, 5990, 5991, 5, 302, 0, 0, 5991, 5992, 5, 94, 0, 0, 5992, 5993, 3, 1340, 670, 0, 5993, 6388, 1, 0, 0, 0, 5994, 5995, 5, 138, 0, 0, 5995, 5996, 5, 271, 0, 0, 5996, 5997, 5, 156, 0, 0, 5997, 5998, 3, 524, 262, 0, 5998, 5999, 5, 100, 0, 0, 5999, 6000, 3, 1340, 670, 0, 6000, 6001, 5, 302, 0, 0, 6001, 6002, 5, 94, 0, 0, 6002, 6003, 3, 1340, 670, 0, 6003, 6388, 1, 0, 0, 0, 6004, 6005, 5, 138, 0, 0, 6005, 6006, 5, 271, 0, 0, 6006, 6007, 5, 206, 0, 0, 6007, 6008, 3, 524, 262, 0, 6008, 6009, 5, 100, 0, 0, 6009, 6010, 3, 1340, 670, 0, 6010, 6011, 5, 302, 0, 0, 6011, 6012, 5, 94, 0, 0, 6012, 6013, 3, 1340, 670, 0, 6013, 6388, 1, 0, 0, 0, 6014, 6015, 5, 138, 0, 0, 6015, 6016, 5, 445, 0, 0, 6016, 6017, 3, 1340, 670, 0, 6017, 6018, 5, 80, 0, 0, 6018, 6019, 3, 1336, 668, 0, 6019, 6020, 5, 302, 0, 0, 6020, 6021, 5, 94, 0, 0, 6021, 6022, 3, 1340, 670, 0, 6022, 6388, 1, 0, 0, 0, 6023, 6024, 5, 138, 0, 0, 6024, 6025, 5, 445, 0, 0, 6025, 6026, 5, 220, 0, 0, 6026, 6027, 5, 389, 0, 0, 6027, 6028, 3, 1340, 670, 0, 6028, 6029, 5, 80, 0, 0, 6029, 6030, 3, 1336, 668, 0, 6030, 6031, 5, 302, 0, 0, 6031, 6032, 5, 94, 0, 0, 6032, 6033, 3, 1340, 670, 0, 6033, 6388, 1, 0, 0, 0, 6034, 6035, 5, 138, 0, 0, 6035, 6036, 5, 289, 0, 0, 6036, 6037, 3, 626, 313, 0, 6037, 6038, 5, 302, 0, 0, 6038, 6039, 5, 94, 0, 0, 6039, 6040, 3, 1340, 670, 0, 6040, 6388, 1, 0, 0, 0, 6041, 6042, 5, 138, 0, 0, 6042, 6043, 5, 452, 0, 0, 6043, 6044, 3, 1340, 670, 0, 6044, 6045, 5, 302, 0, 0, 6045, 6046, 5, 94, 0, 0, 6046, 6047, 3, 1340, 670, 0, 6047, 6388, 1, 0, 0, 0, 6048, 6049, 5, 138, 0, 0, 6049, 6050, 5, 442, 0, 0, 6050, 6051, 3, 626, 313, 0, 6051, 6052, 5, 302, 0, 0, 6052, 6053, 5, 94, 0, 0, 6053, 6054, 3, 1340, 670, 0, 6054, 6388, 1, 0, 0, 0, 6055, 6056, 5, 138, 0, 0, 6056, 6057, 5, 316, 0, 0, 6057, 6058, 3, 1340, 670, 0, 6058, 6059, 5, 302, 0, 0, 6059, 6060, 5, 94, 0, 0, 6060, 6061, 3, 1340, 670, 0, 6061, 6388, 1, 0, 0, 0, 6062, 6063, 5, 138, 0, 0, 6063, 6064, 5, 324, 0, 0, 6064, 6065, 3, 1340, 670, 0, 6065, 6066, 5, 302, 0, 0, 6066, 6067, 5, 94, 0, 0, 6067, 6068, 3, 1340, 670, 0, 6068, 6388, 1, 0, 0, 0, 6069, 6070, 5, 138, 0, 0, 6070, 6071, 5, 451, 0, 0, 6071, 6072, 3, 1340, 670, 0, 6072, 6073, 5, 302, 0, 0, 6073, 6074, 5, 94, 0, 0, 6074, 6075, 3, 1340, 670, 0, 6075, 6388, 1, 0, 0, 0, 6076, 6077, 5, 138, 0, 0, 6077, 6078, 5, 92, 0, 0, 6078, 6079, 3, 1074, 537, 0, 6079, 6080, 5, 302, 0, 0, 6080, 6081, 5, 94, 0, 0, 6081, 6082, 3, 1340, 670, 0, 6082, 6388, 1, 0, 0, 0, 6083, 6084, 5, 138, 0, 0, 6084, 6085, 5, 92, 0, 0, 6085, 6086, 5, 220, 0, 0, 6086, 6087, 5, 389, 0, 0, 6087, 6088, 3, 1074, 537, 0, 6088, 6089, 5, 302, 0, 0, 6089, 6090, 5, 94, 0, 0, 6090, 6091, 3, 1340, 670, 0, 6091, 6388, 1, 0, 0, 0, 6092, 6093, 5, 138, 0, 0, 6093, 6094, 5, 321, 0, 0, 6094, 6095, 3, 1336, 668, 0, 6095, 6096, 5, 302, 0, 0, 6096, 6097, 5, 94, 0, 0, 6097, 6098, 3, 1340, 670, 0, 6098, 6388, 1, 0, 0, 0, 6099, 6100, 5, 138, 0, 0, 6100, 6101, 5, 321, 0, 0, 6101, 6102, 5, 220, 0, 0, 6102, 6103, 5, 389, 0, 0, 6103, 6104, 3, 1336, 668, 0, 6104, 6105, 5, 302, 0, 0, 6105, 6106, 5, 94, 0, 0, 6106, 6107, 3, 1340, 670, 0, 6107, 6388, 1, 0, 0, 0, 6108, 6109, 5, 138, 0, 0, 6109, 6110, 5, 369, 0, 0, 6110, 6111, 3, 1336, 668, 0, 6111, 6112, 5, 302, 0, 0, 6112, 6113, 5, 94, 0, 0, 6113, 6114, 3, 1340, 670, 0, 6114, 6388, 1, 0, 0, 0, 6115, 6116, 5, 138, 0, 0, 6116, 6117, 5, 369, 0, 0, 6117, 6118, 5, 220, 0, 0, 6118, 6119, 5, 389, 0, 0, 6119, 6120, 3, 1336, 668, 0, 6120, 6121, 5, 302, 0, 0, 6121, 6122, 5, 94, 0, 0, 6122, 6123, 3, 1340, 670, 0, 6123, 6388, 1, 0, 0, 0, 6124, 6125, 5, 138, 0, 0, 6125, 6126, 5, 251, 0, 0, 6126, 6127, 5, 369, 0, 0, 6127, 6128, 3, 1336, 668, 0, 6128, 6129, 5, 302, 0, 0, 6129, 6130, 5, 94, 0, 0, 6130, 6131, 3, 1340, 670, 0, 6131, 6388, 1, 0, 0, 0, 6132, 6133, 5, 138, 0, 0, 6133, 6134, 5, 251, 0, 0, 6134, 6135, 5, 369, 0, 0, 6135, 6136, 5, 220, 0, 0, 6136, 6137, 5, 389, 0, 0, 6137, 6138, 3, 1336, 668, 0, 6138, 6139, 5, 302, 0, 0, 6139, 6140, 5, 94, 0, 0, 6140, 6141, 3, 1340, 670, 0, 6141, 6388, 1, 0, 0, 0, 6142, 6143, 5, 138, 0, 0, 6143, 6144, 5, 226, 0, 0, 6144, 6145, 3, 1336, 668, 0, 6145, 6146, 5, 302, 0, 0, 6146, 6147, 5, 94, 0, 0, 6147, 6148, 3, 1340, 670, 0, 6148, 6388, 1, 0, 0, 0, 6149, 6150, 5, 138, 0, 0, 6150, 6151, 5, 226, 0, 0, 6151, 6152, 5, 220, 0, 0, 6152, 6153, 5, 389, 0, 0, 6153, 6154, 3, 1336, 668, 0, 6154, 6155, 5, 302, 0, 0, 6155, 6156, 5, 94, 0, 0, 6156, 6157, 3, 1340, 670, 0, 6157, 6388, 1, 0, 0, 0, 6158, 6159, 5, 138, 0, 0, 6159, 6160, 5, 63, 0, 0, 6160, 6161, 5, 92, 0, 0, 6161, 6162, 3, 1074, 537, 0, 6162, 6163, 5, 302, 0, 0, 6163, 6164, 5, 94, 0, 0, 6164, 6165, 3, 1340, 670, 0, 6165, 6388, 1, 0, 0, 0, 6166, 6167, 5, 138, 0, 0, 6167, 6168, 5, 63, 0, 0, 6168, 6169, 5, 92, 0, 0, 6169, 6170, 5, 220, 0, 0, 6170, 6171, 5, 389, 0, 0, 6171, 6172, 3, 1074, 537, 0, 6172, 6173, 5, 302, 0, 0, 6173, 6174, 5, 94, 0, 0, 6174, 6175, 3, 1340, 670, 0, 6175, 6388, 1, 0, 0, 0, 6176, 6177, 5, 138, 0, 0, 6177, 6178, 5, 92, 0, 0, 6178, 6179, 3, 1074, 537, 0, 6179, 6180, 5, 302, 0, 0, 6180, 6181, 3, 724, 362, 0, 6181, 6182, 3, 1340, 670, 0, 6182, 6183, 5, 94, 0, 0, 6183, 6184, 3, 1340, 670, 0, 6184, 6388, 1, 0, 0, 0, 6185, 6186, 5, 138, 0, 0, 6186, 6187, 5, 92, 0, 0, 6187, 6188, 5, 220, 0, 0, 6188, 6189, 5, 389, 0, 0, 6189, 6190, 3, 1074, 537, 0, 6190, 6191, 5, 302, 0, 0, 6191, 6192, 3, 724, 362, 0, 6192, 6193, 3, 1340, 670, 0, 6193, 6194, 5, 94, 0, 0, 6194, 6195, 3, 1340, 670, 0, 6195, 6388, 1, 0, 0, 0, 6196, 6197, 5, 138, 0, 0, 6197, 6198, 5, 369, 0, 0, 6198, 6199, 3, 1336, 668, 0, 6199, 6200, 5, 302, 0, 0, 6200, 6201, 3, 724, 362, 0, 6201, 6202, 3, 1340, 670, 0, 6202, 6203, 5, 94, 0, 0, 6203, 6204, 3, 1340, 670, 0, 6204, 6388, 1, 0, 0, 0, 6205, 6206, 5, 138, 0, 0, 6206, 6207, 5, 369, 0, 0, 6207, 6208, 5, 220, 0, 0, 6208, 6209, 5, 389, 0, 0, 6209, 6210, 3, 1336, 668, 0, 6210, 6211, 5, 302, 0, 0, 6211, 6212, 3, 724, 362, 0, 6212, 6213, 3, 1340, 670, 0, 6213, 6214, 5, 94, 0, 0, 6214, 6215, 3, 1340, 670, 0, 6215, 6388, 1, 0, 0, 0, 6216, 6217, 5, 138, 0, 0, 6217, 6218, 5, 251, 0, 0, 6218, 6219, 5, 369, 0, 0, 6219, 6220, 3, 1336, 668, 0, 6220, 6221, 5, 302, 0, 0, 6221, 6222, 3, 724, 362, 0, 6222, 6223, 3, 1340, 670, 0, 6223, 6224, 5, 94, 0, 0, 6224, 6225, 3, 1340, 670, 0, 6225, 6388, 1, 0, 0, 0, 6226, 6227, 5, 138, 0, 0, 6227, 6228, 5, 251, 0, 0, 6228, 6229, 5, 369, 0, 0, 6229, 6230, 5, 220, 0, 0, 6230, 6231, 5, 389, 0, 0, 6231, 6232, 3, 1336, 668, 0, 6232, 6233, 5, 302, 0, 0, 6233, 6234, 3, 724, 362, 0, 6234, 6235, 3, 1340, 670, 0, 6235, 6236, 5, 94, 0, 0, 6236, 6237, 3, 1340, 670, 0, 6237, 6388, 1, 0, 0, 0, 6238, 6239, 5, 138, 0, 0, 6239, 6240, 5, 92, 0, 0, 6240, 6241, 3, 1074, 537, 0, 6241, 6242, 5, 302, 0, 0, 6242, 6243, 5, 45, 0, 0, 6243, 6244, 3, 1340, 670, 0, 6244, 6245, 5, 94, 0, 0, 6245, 6246, 3, 1340, 670, 0, 6246, 6388, 1, 0, 0, 0, 6247, 6248, 5, 138, 0, 0, 6248, 6249, 5, 92, 0, 0, 6249, 6250, 5, 220, 0, 0, 6250, 6251, 5, 389, 0, 0, 6251, 6252, 3, 1074, 537, 0, 6252, 6253, 5, 302, 0, 0, 6253, 6254, 5, 45, 0, 0, 6254, 6255, 3, 1340, 670, 0, 6255, 6256, 5, 94, 0, 0, 6256, 6257, 3, 1340, 670, 0, 6257, 6388, 1, 0, 0, 0, 6258, 6259, 5, 138, 0, 0, 6259, 6260, 5, 63, 0, 0, 6260, 6261, 5, 92, 0, 0, 6261, 6262, 3, 1074, 537, 0, 6262, 6263, 5, 302, 0, 0, 6263, 6264, 3, 724, 362, 0, 6264, 6265, 3, 1340, 670, 0, 6265, 6266, 5, 94, 0, 0, 6266, 6267, 3, 1340, 670, 0, 6267, 6388, 1, 0, 0, 0, 6268, 6269, 5, 138, 0, 0, 6269, 6270, 5, 63, 0, 0, 6270, 6271, 5, 92, 0, 0, 6271, 6272, 5, 220, 0, 0, 6272, 6273, 5, 389, 0, 0, 6273, 6274, 3, 1074, 537, 0, 6274, 6275, 5, 302, 0, 0, 6275, 6276, 3, 724, 362, 0, 6276, 6277, 3, 1340, 670, 0, 6277, 6278, 5, 94, 0, 0, 6278, 6279, 3, 1340, 670, 0, 6279, 6388, 1, 0, 0, 0, 6280, 6281, 5, 138, 0, 0, 6281, 6282, 5, 314, 0, 0, 6282, 6283, 3, 1340, 670, 0, 6283, 6284, 5, 80, 0, 0, 6284, 6285, 3, 1336, 668, 0, 6285, 6286, 5, 302, 0, 0, 6286, 6287, 5, 94, 0, 0, 6287, 6288, 3, 1340, 670, 0, 6288, 6388, 1, 0, 0, 0, 6289, 6290, 5, 138, 0, 0, 6290, 6291, 5, 350, 0, 0, 6291, 6292, 3, 1340, 670, 0, 6292, 6293, 5, 80, 0, 0, 6293, 6294, 3, 1336, 668, 0, 6294, 6295, 5, 302, 0, 0, 6295, 6296, 5, 94, 0, 0, 6296, 6297, 3, 1340, 670, 0, 6297, 6388, 1, 0, 0, 0, 6298, 6299, 5, 138, 0, 0, 6299, 6300, 5, 198, 0, 0, 6300, 6301, 5, 350, 0, 0, 6301, 6302, 3, 1340, 670, 0, 6302, 6303, 5, 302, 0, 0, 6303, 6304, 5, 94, 0, 0, 6304, 6305, 3, 1340, 670, 0, 6305, 6388, 1, 0, 0, 0, 6306, 6307, 5, 138, 0, 0, 6307, 6308, 5, 311, 0, 0, 6308, 6309, 3, 1366, 683, 0, 6309, 6310, 5, 302, 0, 0, 6310, 6311, 5, 94, 0, 0, 6311, 6312, 3, 1366, 683, 0, 6312, 6388, 1, 0, 0, 0, 6313, 6314, 5, 138, 0, 0, 6314, 6315, 5, 99, 0, 0, 6315, 6316, 3, 1366, 683, 0, 6316, 6317, 5, 302, 0, 0, 6317, 6318, 5, 94, 0, 0, 6318, 6319, 3, 1366, 683, 0, 6319, 6388, 1, 0, 0, 0, 6320, 6321, 5, 138, 0, 0, 6321, 6322, 5, 344, 0, 0, 6322, 6323, 3, 1340, 670, 0, 6323, 6324, 5, 302, 0, 0, 6324, 6325, 5, 94, 0, 0, 6325, 6326, 3, 1340, 670, 0, 6326, 6388, 1, 0, 0, 0, 6327, 6328, 5, 138, 0, 0, 6328, 6329, 5, 335, 0, 0, 6329, 6330, 3, 524, 262, 0, 6330, 6331, 5, 302, 0, 0, 6331, 6332, 5, 94, 0, 0, 6332, 6333, 3, 1340, 670, 0, 6333, 6388, 1, 0, 0, 0, 6334, 6335, 5, 138, 0, 0, 6335, 6336, 5, 348, 0, 0, 6336, 6337, 5, 318, 0, 0, 6337, 6338, 5, 276, 0, 0, 6338, 6339, 3, 524, 262, 0, 6339, 6340, 5, 302, 0, 0, 6340, 6341, 5, 94, 0, 0, 6341, 6342, 3, 1340, 670, 0, 6342, 6388, 1, 0, 0, 0, 6343, 6344, 5, 138, 0, 0, 6344, 6345, 5, 348, 0, 0, 6345, 6346, 5, 318, 0, 0, 6346, 6347, 5, 185, 0, 0, 6347, 6348, 3, 524, 262, 0, 6348, 6349, 5, 302, 0, 0, 6349, 6350, 5, 94, 0, 0, 6350, 6351, 3, 1340, 670, 0, 6351, 6388, 1, 0, 0, 0, 6352, 6353, 5, 138, 0, 0, 6353, 6354, 5, 348, 0, 0, 6354, 6355, 5, 318, 0, 0, 6355, 6356, 5, 346, 0, 0, 6356, 6357, 3, 524, 262, 0, 6357, 6358, 5, 302, 0, 0, 6358, 6359, 5, 94, 0, 0, 6359, 6360, 3, 1340, 670, 0, 6360, 6388, 1, 0, 0, 0, 6361, 6362, 5, 138, 0, 0, 6362, 6363, 5, 348, 0, 0, 6363, 6364, 5, 318, 0, 0, 6364, 6365, 5, 163, 0, 0, 6365, 6366, 3, 524, 262, 0, 6366, 6367, 5, 302, 0, 0, 6367, 6368, 5, 94, 0, 0, 6368, 6369, 3, 1340, 670, 0, 6369, 6388, 1, 0, 0, 0, 6370, 6371, 5, 138, 0, 0, 6371, 6372, 5, 353, 0, 0, 6372, 6373, 3, 524, 262, 0, 6373, 6374, 5, 302, 0, 0, 6374, 6375, 5, 94, 0, 0, 6375, 6376, 3, 1340, 670, 0, 6376, 6388, 1, 0, 0, 0, 6377, 6378, 5, 138, 0, 0, 6378, 6379, 5, 353, 0, 0, 6379, 6380, 3, 524, 262, 0, 6380, 6381, 5, 302, 0, 0, 6381, 6382, 5, 143, 0, 0, 6382, 6383, 3, 1340, 670, 0, 6383, 6384, 5, 94, 0, 0, 6384, 6385, 3, 1340, 670, 0, 6385, 6386, 3, 108, 54, 0, 6386, 6388, 1, 0, 0, 0, 6387, 5919, 1, 0, 0, 0, 6387, 5926, 1, 0, 0, 0, 6387, 5933, 1, 0, 0, 0, 6387, 5940, 1, 0, 0, 0, 6387, 5947, 1, 0, 0, 0, 6387, 5954, 1, 0, 0, 0, 6387, 5963, 1, 0, 0, 0, 6387, 5972, 1, 0, 0, 0, 6387, 5979, 1, 0, 0, 0, 6387, 5986, 1, 0, 0, 0, 6387, 5994, 1, 0, 0, 0, 6387, 6004, 1, 0, 0, 0, 6387, 6014, 1, 0, 0, 0, 6387, 6023, 1, 0, 0, 0, 6387, 6034, 1, 0, 0, 0, 6387, 6041, 1, 0, 0, 0, 6387, 6048, 1, 0, 0, 0, 6387, 6055, 1, 0, 0, 0, 6387, 6062, 1, 0, 0, 0, 6387, 6069, 1, 0, 0, 0, 6387, 6076, 1, 0, 0, 0, 6387, 6083, 1, 0, 0, 0, 6387, 6092, 1, 0, 0, 0, 6387, 6099, 1, 0, 0, 0, 6387, 6108, 1, 0, 0, 0, 6387, 6115, 1, 0, 0, 0, 6387, 6124, 1, 0, 0, 0, 6387, 6132, 1, 0, 0, 0, 6387, 6142, 1, 0, 0, 0, 6387, 6149, 1, 0, 0, 0, 6387, 6158, 1, 0, 0, 0, 6387, 6166, 1, 0, 0, 0, 6387, 6176, 1, 0, 0, 0, 6387, 6185, 1, 0, 0, 0, 6387, 6196, 1, 0, 0, 0, 6387, 6205, 1, 0, 0, 0, 6387, 6216, 1, 0, 0, 0, 6387, 6226, 1, 0, 0, 0, 6387, 6238, 1, 0, 0, 0, 6387, 6247, 1, 0, 0, 0, 6387, 6258, 1, 0, 0, 0, 6387, 6268, 1, 0, 0, 0, 6387, 6280, 1, 0, 0, 0, 6387, 6289, 1, 0, 0, 0, 6387, 6298, 1, 0, 0, 0, 6387, 6306, 1, 0, 0, 0, 6387, 6313, 1, 0, 0, 0, 6387, 6320, 1, 0, 0, 0, 6387, 6327, 1, 0, 0, 0, 6387, 6334, 1, 0, 0, 0, 6387, 6343, 1, 0, 0, 0, 6387, 6352, 1, 0, 0, 0, 6387, 6361, 1, 0, 0, 0, 6387, 6370, 1, 0, 0, 0, 6387, 6377, 1, 0, 0, 0, 6388, 723, 1, 0, 0, 0, 6389, 6392, 5, 44, 0, 0, 6390, 6392, 1, 0, 0, 0, 6391, 6389, 1, 0, 0, 0, 6391, 6390, 1, 0, 0, 0, 6392, 725, 1, 0, 0, 0, 6393, 6394, 5, 326, 0, 0, 6394, 6397, 5, 174, 0, 0, 6395, 6397, 1, 0, 0, 0, 6396, 6393, 1, 0, 0, 0, 6396, 6395, 1, 0, 0, 0, 6397, 727, 1, 0, 0, 0, 6398, 6399, 5, 138, 0, 0, 6399, 6400, 5, 211, 0, 0, 6400, 6401, 3, 626, 313, 0, 6401, 6402, 3, 730, 365, 0, 6402, 6403, 5, 462, 0, 0, 6403, 6404, 5, 80, 0, 0, 6404, 6405, 5, 204, 0, 0, 6405, 6406, 3, 1340, 670, 0, 6406, 6456, 1, 0, 0, 0, 6407, 6408, 5, 138, 0, 0, 6408, 6409, 5, 289, 0, 0, 6409, 6410, 3, 626, 313, 0, 6410, 6411, 3, 730, 365, 0, 6411, 6412, 5, 462, 0, 0, 6412, 6413, 5, 80, 0, 0, 6413, 6414, 5, 204, 0, 0, 6414, 6415, 3, 1340, 670, 0, 6415, 6456, 1, 0, 0, 0, 6416, 6417, 5, 138, 0, 0, 6417, 6418, 5, 442, 0, 0, 6418, 6419, 3, 626, 313, 0, 6419, 6420, 3, 730, 365, 0, 6420, 6421, 5, 462, 0, 0, 6421, 6422, 5, 80, 0, 0, 6422, 6423, 5, 204, 0, 0, 6423, 6424, 3, 1340, 670, 0, 6424, 6456, 1, 0, 0, 0, 6425, 6426, 5, 138, 0, 0, 6426, 6427, 5, 350, 0, 0, 6427, 6428, 3, 1340, 670, 0, 6428, 6429, 5, 80, 0, 0, 6429, 6430, 3, 1336, 668, 0, 6430, 6431, 3, 730, 365, 0, 6431, 6432, 5, 462, 0, 0, 6432, 6433, 5, 80, 0, 0, 6433, 6434, 5, 204, 0, 0, 6434, 6435, 3, 1340, 670, 0, 6435, 6456, 1, 0, 0, 0, 6436, 6437, 5, 138, 0, 0, 6437, 6438, 5, 251, 0, 0, 6438, 6439, 5, 369, 0, 0, 6439, 6440, 3, 1336, 668, 0, 6440, 6441, 3, 730, 365, 0, 6441, 6442, 5, 462, 0, 0, 6442, 6443, 5, 80, 0, 0, 6443, 6444, 5, 204, 0, 0, 6444, 6445, 3, 1340, 670, 0, 6445, 6456, 1, 0, 0, 0, 6446, 6447, 5, 138, 0, 0, 6447, 6448, 5, 226, 0, 0, 6448, 6449, 3, 1336, 668, 0, 6449, 6450, 3, 730, 365, 0, 6450, 6451, 5, 462, 0, 0, 6451, 6452, 5, 80, 0, 0, 6452, 6453, 5, 204, 0, 0, 6453, 6454, 3, 1340, 670, 0, 6454, 6456, 1, 0, 0, 0, 6455, 6398, 1, 0, 0, 0, 6455, 6407, 1, 0, 0, 0, 6455, 6416, 1, 0, 0, 0, 6455, 6425, 1, 0, 0, 0, 6455, 6436, 1, 0, 0, 0, 6455, 6446, 1, 0, 0, 0, 6456, 729, 1, 0, 0, 0, 6457, 6460, 5, 262, 0, 0, 6458, 6460, 1, 0, 0, 0, 6459, 6457, 1, 0, 0, 0, 6459, 6458, 1, 0, 0, 0, 6460, 731, 1, 0, 0, 0, 6461, 6462, 5, 138, 0, 0, 6462, 6463, 5, 136, 0, 0, 6463, 6464, 3, 650, 325, 0, 6464, 6465, 5, 326, 0, 0, 6465, 6466, 5, 316, 0, 0, 6466, 6467, 3, 1340, 670, 0, 6467, 6679, 1, 0, 0, 0, 6468, 6469, 5, 138, 0, 0, 6469, 6470, 5, 108, 0, 0, 6470, 6471, 3, 524, 262, 0, 6471, 6472, 5, 326, 0, 0, 6472, 6473, 5, 316, 0, 0, 6473, 6474, 3, 1340, 670, 0, 6474, 6679, 1, 0, 0, 0, 6475, 6476, 5, 138, 0, 0, 6476, 6477, 5, 168, 0, 0, 6477, 6478, 3, 524, 262, 0, 6478, 6479, 5, 326, 0, 0, 6479, 6480, 5, 316, 0, 0, 6480, 6481, 3, 1340, 670, 0, 6481, 6679, 1, 0, 0, 0, 6482, 6483, 5, 138, 0, 0, 6483, 6484, 5, 189, 0, 0, 6484, 6485, 3, 524, 262, 0, 6485, 6486, 5, 326, 0, 0, 6486, 6487, 5, 316, 0, 0, 6487, 6488, 3, 1340, 670, 0, 6488, 6679, 1, 0, 0, 0, 6489, 6490, 5, 138, 0, 0, 6490, 6491, 5, 204, 0, 0, 6491, 6492, 3, 1340, 670, 0, 6492, 6493, 5, 326, 0, 0, 6493, 6494, 5, 316, 0, 0, 6494, 6495, 3, 1340, 670, 0, 6495, 6679, 1, 0, 0, 0, 6496, 6497, 5, 138, 0, 0, 6497, 6498, 5, 211, 0, 0, 6498, 6499, 3, 626, 313, 0, 6499, 6500, 5, 326, 0, 0, 6500, 6501, 5, 316, 0, 0, 6501, 6502, 3, 1340, 670, 0, 6502, 6679, 1, 0, 0, 0, 6503, 6504, 5, 138, 0, 0, 6504, 6505, 5, 271, 0, 0, 6505, 6506, 3, 688, 344, 0, 6506, 6507, 5, 326, 0, 0, 6507, 6508, 5, 316, 0, 0, 6508, 6509, 3, 1340, 670, 0, 6509, 6679, 1, 0, 0, 0, 6510, 6511, 5, 138, 0, 0, 6511, 6512, 5, 271, 0, 0, 6512, 6513, 5, 156, 0, 0, 6513, 6514, 3, 524, 262, 0, 6514, 6515, 5, 100, 0, 0, 6515, 6516, 3, 1340, 670, 0, 6516, 6517, 5, 326, 0, 0, 6517, 6518, 5, 316, 0, 0, 6518, 6519, 3, 1340, 670, 0, 6519, 6679, 1, 0, 0, 0, 6520, 6521, 5, 138, 0, 0, 6521, 6522, 5, 271, 0, 0, 6522, 6523, 5, 206, 0, 0, 6523, 6524, 3, 524, 262, 0, 6524, 6525, 5, 100, 0, 0, 6525, 6526, 3, 1340, 670, 0, 6526, 6527, 5, 326, 0, 0, 6527, 6528, 5, 316, 0, 0, 6528, 6529, 3, 1340, 670, 0, 6529, 6679, 1, 0, 0, 0, 6530, 6531, 5, 138, 0, 0, 6531, 6532, 5, 289, 0, 0, 6532, 6533, 3, 626, 313, 0, 6533, 6534, 5, 326, 0, 0, 6534, 6535, 5, 316, 0, 0, 6535, 6536, 3, 1340, 670, 0, 6536, 6679, 1, 0, 0, 0, 6537, 6538, 5, 138, 0, 0, 6538, 6539, 5, 442, 0, 0, 6539, 6540, 3, 626, 313, 0, 6540, 6541, 5, 326, 0, 0, 6541, 6542, 5, 316, 0, 0, 6542, 6543, 3, 1340, 670, 0, 6543, 6679, 1, 0, 0, 0, 6544, 6545, 5, 138, 0, 0, 6545, 6546, 5, 92, 0, 0, 6546, 6547, 3, 1074, 537, 0, 6547, 6548, 5, 326, 0, 0, 6548, 6549, 5, 316, 0, 0, 6549, 6550, 3, 1340, 670, 0, 6550, 6679, 1, 0, 0, 0, 6551, 6552, 5, 138, 0, 0, 6552, 6553, 5, 92, 0, 0, 6553, 6554, 5, 220, 0, 0, 6554, 6555, 5, 389, 0, 0, 6555, 6556, 3, 1074, 537, 0, 6556, 6557, 5, 326, 0, 0, 6557, 6558, 5, 316, 0, 0, 6558, 6559, 3, 1340, 670, 0, 6559, 6679, 1, 0, 0, 0, 6560, 6561, 5, 138, 0, 0, 6561, 6562, 5, 335, 0, 0, 6562, 6563, 3, 524, 262, 0, 6563, 6564, 5, 326, 0, 0, 6564, 6565, 5, 316, 0, 0, 6565, 6566, 3, 1340, 670, 0, 6566, 6679, 1, 0, 0, 0, 6567, 6568, 5, 138, 0, 0, 6568, 6569, 5, 348, 0, 0, 6569, 6570, 5, 318, 0, 0, 6570, 6571, 5, 276, 0, 0, 6571, 6572, 3, 524, 262, 0, 6572, 6573, 5, 326, 0, 0, 6573, 6574, 5, 316, 0, 0, 6574, 6575, 3, 1340, 670, 0, 6575, 6679, 1, 0, 0, 0, 6576, 6577, 5, 138, 0, 0, 6577, 6578, 5, 348, 0, 0, 6578, 6579, 5, 318, 0, 0, 6579, 6580, 5, 185, 0, 0, 6580, 6581, 3, 524, 262, 0, 6581, 6582, 5, 326, 0, 0, 6582, 6583, 5, 316, 0, 0, 6583, 6584, 3, 1340, 670, 0, 6584, 6679, 1, 0, 0, 0, 6585, 6586, 5, 138, 0, 0, 6586, 6587, 5, 348, 0, 0, 6587, 6588, 5, 318, 0, 0, 6588, 6589, 5, 346, 0, 0, 6589, 6590, 3, 524, 262, 0, 6590, 6591, 5, 326, 0, 0, 6591, 6592, 5, 316, 0, 0, 6592, 6593, 3, 1340, 670, 0, 6593, 6679, 1, 0, 0, 0, 6594, 6595, 5, 138, 0, 0, 6595, 6596, 5, 348, 0, 0, 6596, 6597, 5, 318, 0, 0, 6597, 6598, 5, 163, 0, 0, 6598, 6599, 3, 524, 262, 0, 6599, 6600, 5, 326, 0, 0, 6600, 6601, 5, 316, 0, 0, 6601, 6602, 3, 1340, 670, 0, 6602, 6679, 1, 0, 0, 0, 6603, 6604, 5, 138, 0, 0, 6604, 6605, 5, 321, 0, 0, 6605, 6606, 3, 1336, 668, 0, 6606, 6607, 5, 326, 0, 0, 6607, 6608, 5, 316, 0, 0, 6608, 6609, 3, 1340, 670, 0, 6609, 6679, 1, 0, 0, 0, 6610, 6611, 5, 138, 0, 0, 6611, 6612, 5, 321, 0, 0, 6612, 6613, 5, 220, 0, 0, 6613, 6614, 5, 389, 0, 0, 6614, 6615, 3, 1336, 668, 0, 6615, 6616, 5, 326, 0, 0, 6616, 6617, 5, 316, 0, 0, 6617, 6618, 3, 1340, 670, 0, 6618, 6679, 1, 0, 0, 0, 6619, 6620, 5, 138, 0, 0, 6620, 6621, 5, 369, 0, 0, 6621, 6622, 3, 1336, 668, 0, 6622, 6623, 5, 326, 0, 0, 6623, 6624, 5, 316, 0, 0, 6624, 6625, 3, 1340, 670, 0, 6625, 6679, 1, 0, 0, 0, 6626, 6627, 5, 138, 0, 0, 6627, 6628, 5, 369, 0, 0, 6628, 6629, 5, 220, 0, 0, 6629, 6630, 5, 389, 0, 0, 6630, 6631, 3, 1336, 668, 0, 6631, 6632, 5, 326, 0, 0, 6632, 6633, 5, 316, 0, 0, 6633, 6634, 3, 1340, 670, 0, 6634, 6679, 1, 0, 0, 0, 6635, 6636, 5, 138, 0, 0, 6636, 6637, 5, 251, 0, 0, 6637, 6638, 5, 369, 0, 0, 6638, 6639, 3, 1336, 668, 0, 6639, 6640, 5, 326, 0, 0, 6640, 6641, 5, 316, 0, 0, 6641, 6642, 3, 1340, 670, 0, 6642, 6679, 1, 0, 0, 0, 6643, 6644, 5, 138, 0, 0, 6644, 6645, 5, 251, 0, 0, 6645, 6646, 5, 369, 0, 0, 6646, 6647, 5, 220, 0, 0, 6647, 6648, 5, 389, 0, 0, 6648, 6649, 3, 1336, 668, 0, 6649, 6650, 5, 326, 0, 0, 6650, 6651, 5, 316, 0, 0, 6651, 6652, 3, 1340, 670, 0, 6652, 6679, 1, 0, 0, 0, 6653, 6654, 5, 138, 0, 0, 6654, 6655, 5, 63, 0, 0, 6655, 6656, 5, 92, 0, 0, 6656, 6657, 3, 1074, 537, 0, 6657, 6658, 5, 326, 0, 0, 6658, 6659, 5, 316, 0, 0, 6659, 6660, 3, 1340, 670, 0, 6660, 6679, 1, 0, 0, 0, 6661, 6662, 5, 138, 0, 0, 6662, 6663, 5, 63, 0, 0, 6663, 6664, 5, 92, 0, 0, 6664, 6665, 5, 220, 0, 0, 6665, 6666, 5, 389, 0, 0, 6666, 6667, 3, 1074, 537, 0, 6667, 6668, 5, 326, 0, 0, 6668, 6669, 5, 316, 0, 0, 6669, 6670, 3, 1340, 670, 0, 6670, 6679, 1, 0, 0, 0, 6671, 6672, 5, 138, 0, 0, 6672, 6673, 5, 353, 0, 0, 6673, 6674, 3, 524, 262, 0, 6674, 6675, 5, 326, 0, 0, 6675, 6676, 5, 316, 0, 0, 6676, 6677, 3, 1340, 670, 0, 6677, 6679, 1, 0, 0, 0, 6678, 6461, 1, 0, 0, 0, 6678, 6468, 1, 0, 0, 0, 6678, 6475, 1, 0, 0, 0, 6678, 6482, 1, 0, 0, 0, 6678, 6489, 1, 0, 0, 0, 6678, 6496, 1, 0, 0, 0, 6678, 6503, 1, 0, 0, 0, 6678, 6510, 1, 0, 0, 0, 6678, 6520, 1, 0, 0, 0, 6678, 6530, 1, 0, 0, 0, 6678, 6537, 1, 0, 0, 0, 6678, 6544, 1, 0, 0, 0, 6678, 6551, 1, 0, 0, 0, 6678, 6560, 1, 0, 0, 0, 6678, 6567, 1, 0, 0, 0, 6678, 6576, 1, 0, 0, 0, 6678, 6585, 1, 0, 0, 0, 6678, 6594, 1, 0, 0, 0, 6678, 6603, 1, 0, 0, 0, 6678, 6610, 1, 0, 0, 0, 6678, 6619, 1, 0, 0, 0, 6678, 6626, 1, 0, 0, 0, 6678, 6635, 1, 0, 0, 0, 6678, 6643, 1, 0, 0, 0, 6678, 6653, 1, 0, 0, 0, 6678, 6661, 1, 0, 0, 0, 6678, 6671, 1, 0, 0, 0, 6679, 733, 1, 0, 0, 0, 6680, 6681, 5, 138, 0, 0, 6681, 6682, 5, 271, 0, 0, 6682, 6683, 3, 688, 344, 0, 6683, 6684, 5, 326, 0, 0, 6684, 6685, 5, 2, 0, 0, 6685, 6686, 3, 736, 368, 0, 6686, 6687, 5, 3, 0, 0, 6687, 735, 1, 0, 0, 0, 6688, 6693, 3, 738, 369, 0, 6689, 6690, 5, 6, 0, 0, 6690, 6692, 3, 738, 369, 0, 6691, 6689, 1, 0, 0, 0, 6692, 6695, 1, 0, 0, 0, 6693, 6691, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 737, 1, 0, 0, 0, 6695, 6693, 1, 0, 0, 0, 6696, 6697, 3, 1380, 690, 0, 6697, 6698, 5, 10, 0, 0, 6698, 6699, 5, 400, 0, 0, 6699, 6705, 1, 0, 0, 0, 6700, 6701, 3, 1380, 690, 0, 6701, 6702, 5, 10, 0, 0, 6702, 6703, 3, 740, 370, 0, 6703, 6705, 1, 0, 0, 0, 6704, 6696, 1, 0, 0, 0, 6704, 6700, 1, 0, 0, 0, 6705, 739, 1, 0, 0, 0, 6706, 6712, 3, 640, 320, 0, 6707, 6712, 3, 1392, 696, 0, 6708, 6712, 3, 1276, 638, 0, 6709, 6712, 3, 292, 146, 0, 6710, 6712, 3, 1358, 679, 0, 6711, 6706, 1, 0, 0, 0, 6711, 6707, 1, 0, 0, 0, 6711, 6708, 1, 0, 0, 0, 6711, 6709, 1, 0, 0, 0, 6711, 6710, 1, 0, 0, 0, 6712, 741, 1, 0, 0, 0, 6713, 6714, 5, 138, 0, 0, 6714, 6715, 5, 353, 0, 0, 6715, 6716, 3, 524, 262, 0, 6716, 6717, 5, 326, 0, 0, 6717, 6718, 5, 2, 0, 0, 6718, 6719, 3, 736, 368, 0, 6719, 6720, 5, 3, 0, 0, 6720, 743, 1, 0, 0, 0, 6721, 6722, 5, 138, 0, 0, 6722, 6723, 5, 136, 0, 0, 6723, 6724, 3, 650, 325, 0, 6724, 6725, 5, 275, 0, 0, 6725, 6726, 5, 94, 0, 0, 6726, 6727, 3, 1368, 684, 0, 6727, 6905, 1, 0, 0, 0, 6728, 6729, 5, 138, 0, 0, 6729, 6730, 5, 108, 0, 0, 6730, 6731, 3, 524, 262, 0, 6731, 6732, 5, 275, 0, 0, 6732, 6733, 5, 94, 0, 0, 6733, 6734, 3, 1368, 684, 0, 6734, 6905, 1, 0, 0, 0, 6735, 6736, 5, 138, 0, 0, 6736, 6737, 5, 168, 0, 0, 6737, 6738, 3, 524, 262, 0, 6738, 6739, 5, 275, 0, 0, 6739, 6740, 5, 94, 0, 0, 6740, 6741, 3, 1368, 684, 0, 6741, 6905, 1, 0, 0, 0, 6742, 6743, 5, 138, 0, 0, 6743, 6744, 5, 175, 0, 0, 6744, 6745, 3, 1340, 670, 0, 6745, 6746, 5, 275, 0, 0, 6746, 6747, 5, 94, 0, 0, 6747, 6748, 3, 1368, 684, 0, 6748, 6905, 1, 0, 0, 0, 6749, 6750, 5, 138, 0, 0, 6750, 6751, 5, 189, 0, 0, 6751, 6752, 3, 524, 262, 0, 6752, 6753, 5, 275, 0, 0, 6753, 6754, 5, 94, 0, 0, 6754, 6755, 3, 1368, 684, 0, 6755, 6905, 1, 0, 0, 0, 6756, 6757, 5, 138, 0, 0, 6757, 6758, 5, 211, 0, 0, 6758, 6759, 3, 626, 313, 0, 6759, 6760, 5, 275, 0, 0, 6760, 6761, 5, 94, 0, 0, 6761, 6762, 3, 1368, 684, 0, 6762, 6905, 1, 0, 0, 0, 6763, 6764, 5, 138, 0, 0, 6764, 6765, 3, 308, 154, 0, 6765, 6766, 5, 238, 0, 0, 6766, 6767, 3, 1340, 670, 0, 6767, 6768, 5, 275, 0, 0, 6768, 6769, 5, 94, 0, 0, 6769, 6770, 3, 1368, 684, 0, 6770, 6905, 1, 0, 0, 0, 6771, 6772, 5, 138, 0, 0, 6772, 6773, 5, 239, 0, 0, 6773, 6774, 5, 267, 0, 0, 6774, 6775, 3, 292, 146, 0, 6775, 6776, 5, 275, 0, 0, 6776, 6777, 5, 94, 0, 0, 6777, 6778, 3, 1368, 684, 0, 6778, 6905, 1, 0, 0, 0, 6779, 6780, 5, 138, 0, 0, 6780, 6781, 5, 271, 0, 0, 6781, 6782, 3, 688, 344, 0, 6782, 6783, 5, 275, 0, 0, 6783, 6784, 5, 94, 0, 0, 6784, 6785, 3, 1368, 684, 0, 6785, 6905, 1, 0, 0, 0, 6786, 6787, 5, 138, 0, 0, 6787, 6788, 5, 271, 0, 0, 6788, 6789, 5, 156, 0, 0, 6789, 6790, 3, 524, 262, 0, 6790, 6791, 5, 100, 0, 0, 6791, 6792, 3, 1340, 670, 0, 6792, 6793, 5, 275, 0, 0, 6793, 6794, 5, 94, 0, 0, 6794, 6795, 3, 1368, 684, 0, 6795, 6905, 1, 0, 0, 0, 6796, 6797, 5, 138, 0, 0, 6797, 6798, 5, 271, 0, 0, 6798, 6799, 5, 206, 0, 0, 6799, 6800, 3, 524, 262, 0, 6800, 6801, 5, 100, 0, 0, 6801, 6802, 3, 1340, 670, 0, 6802, 6803, 5, 275, 0, 0, 6803, 6804, 5, 94, 0, 0, 6804, 6805, 3, 1368, 684, 0, 6805, 6905, 1, 0, 0, 0, 6806, 6807, 5, 138, 0, 0, 6807, 6808, 5, 289, 0, 0, 6808, 6809, 3, 626, 313, 0, 6809, 6810, 5, 275, 0, 0, 6810, 6811, 5, 94, 0, 0, 6811, 6812, 3, 1368, 684, 0, 6812, 6905, 1, 0, 0, 0, 6813, 6814, 5, 138, 0, 0, 6814, 6815, 5, 442, 0, 0, 6815, 6816, 3, 626, 313, 0, 6816, 6817, 5, 275, 0, 0, 6817, 6818, 5, 94, 0, 0, 6818, 6819, 3, 1368, 684, 0, 6819, 6905, 1, 0, 0, 0, 6820, 6821, 5, 138, 0, 0, 6821, 6822, 5, 316, 0, 0, 6822, 6823, 3, 1340, 670, 0, 6823, 6824, 5, 275, 0, 0, 6824, 6825, 5, 94, 0, 0, 6825, 6826, 3, 1368, 684, 0, 6826, 6905, 1, 0, 0, 0, 6827, 6828, 5, 138, 0, 0, 6828, 6829, 5, 353, 0, 0, 6829, 6830, 3, 524, 262, 0, 6830, 6831, 5, 275, 0, 0, 6831, 6832, 5, 94, 0, 0, 6832, 6833, 3, 1368, 684, 0, 6833, 6905, 1, 0, 0, 0, 6834, 6835, 5, 138, 0, 0, 6835, 6836, 5, 344, 0, 0, 6836, 6837, 3, 1340, 670, 0, 6837, 6838, 5, 275, 0, 0, 6838, 6839, 5, 94, 0, 0, 6839, 6840, 3, 1368, 684, 0, 6840, 6905, 1, 0, 0, 0, 6841, 6842, 5, 138, 0, 0, 6842, 6843, 5, 335, 0, 0, 6843, 6844, 3, 524, 262, 0, 6844, 6845, 5, 275, 0, 0, 6845, 6846, 5, 94, 0, 0, 6846, 6847, 3, 1368, 684, 0, 6847, 6905, 1, 0, 0, 0, 6848, 6849, 5, 138, 0, 0, 6849, 6850, 5, 348, 0, 0, 6850, 6851, 5, 318, 0, 0, 6851, 6852, 5, 185, 0, 0, 6852, 6853, 3, 524, 262, 0, 6853, 6854, 5, 275, 0, 0, 6854, 6855, 5, 94, 0, 0, 6855, 6856, 3, 1368, 684, 0, 6856, 6905, 1, 0, 0, 0, 6857, 6858, 5, 138, 0, 0, 6858, 6859, 5, 348, 0, 0, 6859, 6860, 5, 318, 0, 0, 6860, 6861, 5, 163, 0, 0, 6861, 6862, 3, 524, 262, 0, 6862, 6863, 5, 275, 0, 0, 6863, 6864, 5, 94, 0, 0, 6864, 6865, 3, 1368, 684, 0, 6865, 6905, 1, 0, 0, 0, 6866, 6867, 5, 138, 0, 0, 6867, 6868, 5, 63, 0, 0, 6868, 6869, 5, 174, 0, 0, 6869, 6870, 5, 374, 0, 0, 6870, 6871, 3, 1340, 670, 0, 6871, 6872, 5, 275, 0, 0, 6872, 6873, 5, 94, 0, 0, 6873, 6874, 3, 1368, 684, 0, 6874, 6905, 1, 0, 0, 0, 6875, 6876, 5, 138, 0, 0, 6876, 6877, 5, 324, 0, 0, 6877, 6878, 3, 1340, 670, 0, 6878, 6879, 5, 275, 0, 0, 6879, 6880, 5, 94, 0, 0, 6880, 6881, 3, 1368, 684, 0, 6881, 6905, 1, 0, 0, 0, 6882, 6883, 5, 138, 0, 0, 6883, 6884, 5, 198, 0, 0, 6884, 6885, 5, 350, 0, 0, 6885, 6886, 3, 1340, 670, 0, 6886, 6887, 5, 275, 0, 0, 6887, 6888, 5, 94, 0, 0, 6888, 6889, 3, 1368, 684, 0, 6889, 6905, 1, 0, 0, 0, 6890, 6891, 5, 138, 0, 0, 6891, 6892, 5, 452, 0, 0, 6892, 6893, 3, 1340, 670, 0, 6893, 6894, 5, 275, 0, 0, 6894, 6895, 5, 94, 0, 0, 6895, 6896, 3, 1368, 684, 0, 6896, 6905, 1, 0, 0, 0, 6897, 6898, 5, 138, 0, 0, 6898, 6899, 5, 451, 0, 0, 6899, 6900, 3, 1340, 670, 0, 6900, 6901, 5, 275, 0, 0, 6901, 6902, 5, 94, 0, 0, 6902, 6903, 3, 1368, 684, 0, 6903, 6905, 1, 0, 0, 0, 6904, 6721, 1, 0, 0, 0, 6904, 6728, 1, 0, 0, 0, 6904, 6735, 1, 0, 0, 0, 6904, 6742, 1, 0, 0, 0, 6904, 6749, 1, 0, 0, 0, 6904, 6756, 1, 0, 0, 0, 6904, 6763, 1, 0, 0, 0, 6904, 6771, 1, 0, 0, 0, 6904, 6779, 1, 0, 0, 0, 6904, 6786, 1, 0, 0, 0, 6904, 6796, 1, 0, 0, 0, 6904, 6806, 1, 0, 0, 0, 6904, 6813, 1, 0, 0, 0, 6904, 6820, 1, 0, 0, 0, 6904, 6827, 1, 0, 0, 0, 6904, 6834, 1, 0, 0, 0, 6904, 6841, 1, 0, 0, 0, 6904, 6848, 1, 0, 0, 0, 6904, 6857, 1, 0, 0, 0, 6904, 6866, 1, 0, 0, 0, 6904, 6875, 1, 0, 0, 0, 6904, 6882, 1, 0, 0, 0, 6904, 6890, 1, 0, 0, 0, 6904, 6897, 1, 0, 0, 0, 6905, 745, 1, 0, 0, 0, 6906, 6907, 5, 46, 0, 0, 6907, 6908, 5, 452, 0, 0, 6908, 6909, 3, 1340, 670, 0, 6909, 6910, 3, 748, 374, 0, 6910, 6911, 3, 664, 332, 0, 6911, 747, 1, 0, 0, 0, 6912, 6915, 3, 750, 375, 0, 6913, 6915, 1, 0, 0, 0, 6914, 6912, 1, 0, 0, 0, 6914, 6913, 1, 0, 0, 0, 6915, 749, 1, 0, 0, 0, 6916, 6917, 5, 62, 0, 0, 6917, 6918, 5, 92, 0, 0, 6918, 6923, 3, 1076, 538, 0, 6919, 6920, 5, 62, 0, 0, 6920, 6921, 5, 30, 0, 0, 6921, 6923, 5, 343, 0, 0, 6922, 6916, 1, 0, 0, 0, 6922, 6919, 1, 0, 0, 0, 6923, 751, 1, 0, 0, 0, 6924, 6925, 5, 138, 0, 0, 6925, 6926, 5, 452, 0, 0, 6926, 6927, 3, 1340, 670, 0, 6927, 6928, 5, 326, 0, 0, 6928, 6929, 3, 460, 230, 0, 6929, 6952, 1, 0, 0, 0, 6930, 6931, 5, 138, 0, 0, 6931, 6932, 5, 452, 0, 0, 6932, 6933, 3, 1340, 670, 0, 6933, 6934, 5, 133, 0, 0, 6934, 6935, 5, 92, 0, 0, 6935, 6936, 3, 1076, 538, 0, 6936, 6952, 1, 0, 0, 0, 6937, 6938, 5, 138, 0, 0, 6938, 6939, 5, 452, 0, 0, 6939, 6940, 3, 1340, 670, 0, 6940, 6941, 5, 326, 0, 0, 6941, 6942, 5, 92, 0, 0, 6942, 6943, 3, 1076, 538, 0, 6943, 6952, 1, 0, 0, 0, 6944, 6945, 5, 138, 0, 0, 6945, 6946, 5, 452, 0, 0, 6946, 6947, 3, 1340, 670, 0, 6947, 6948, 5, 191, 0, 0, 6948, 6949, 5, 92, 0, 0, 6949, 6950, 3, 1076, 538, 0, 6950, 6952, 1, 0, 0, 0, 6951, 6924, 1, 0, 0, 0, 6951, 6930, 1, 0, 0, 0, 6951, 6937, 1, 0, 0, 0, 6951, 6944, 1, 0, 0, 0, 6952, 753, 1, 0, 0, 0, 6953, 6954, 5, 46, 0, 0, 6954, 6955, 5, 451, 0, 0, 6955, 6956, 3, 1340, 670, 0, 6956, 6957, 5, 164, 0, 0, 6957, 6958, 3, 1358, 679, 0, 6958, 6959, 5, 452, 0, 0, 6959, 6960, 3, 756, 378, 0, 6960, 6961, 3, 664, 332, 0, 6961, 755, 1, 0, 0, 0, 6962, 6967, 3, 758, 379, 0, 6963, 6964, 5, 6, 0, 0, 6964, 6966, 3, 758, 379, 0, 6965, 6963, 1, 0, 0, 0, 6966, 6969, 1, 0, 0, 0, 6967, 6965, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 757, 1, 0, 0, 0, 6969, 6967, 1, 0, 0, 0, 6970, 6971, 3, 1380, 690, 0, 6971, 759, 1, 0, 0, 0, 6972, 6973, 5, 138, 0, 0, 6973, 6974, 5, 451, 0, 0, 6974, 6975, 3, 1340, 670, 0, 6975, 6976, 5, 326, 0, 0, 6976, 6977, 3, 460, 230, 0, 6977, 7010, 1, 0, 0, 0, 6978, 6979, 5, 138, 0, 0, 6979, 6980, 5, 451, 0, 0, 6980, 6981, 3, 1340, 670, 0, 6981, 6982, 5, 164, 0, 0, 6982, 6983, 3, 1358, 679, 0, 6983, 7010, 1, 0, 0, 0, 6984, 6985, 5, 138, 0, 0, 6985, 6986, 5, 451, 0, 0, 6986, 6987, 3, 1340, 670, 0, 6987, 6988, 5, 298, 0, 0, 6988, 6989, 5, 452, 0, 0, 6989, 6990, 3, 664, 332, 0, 6990, 7010, 1, 0, 0, 0, 6991, 6992, 5, 138, 0, 0, 6992, 6993, 5, 451, 0, 0, 6993, 6994, 3, 1340, 670, 0, 6994, 6995, 5, 326, 0, 0, 6995, 6996, 5, 452, 0, 0, 6996, 6997, 3, 756, 378, 0, 6997, 6998, 3, 664, 332, 0, 6998, 7010, 1, 0, 0, 0, 6999, 7000, 5, 138, 0, 0, 7000, 7001, 5, 451, 0, 0, 7001, 7002, 3, 1340, 670, 0, 7002, 7003, 5, 193, 0, 0, 7003, 7010, 1, 0, 0, 0, 7004, 7005, 5, 138, 0, 0, 7005, 7006, 5, 451, 0, 0, 7006, 7007, 3, 1340, 670, 0, 7007, 7008, 5, 186, 0, 0, 7008, 7010, 1, 0, 0, 0, 7009, 6972, 1, 0, 0, 0, 7009, 6978, 1, 0, 0, 0, 7009, 6984, 1, 0, 0, 0, 7009, 6991, 1, 0, 0, 0, 7009, 6999, 1, 0, 0, 0, 7009, 7004, 1, 0, 0, 0, 7010, 761, 1, 0, 0, 0, 7011, 7012, 5, 191, 0, 0, 7012, 7013, 5, 451, 0, 0, 7013, 7014, 3, 1340, 670, 0, 7014, 7015, 3, 108, 54, 0, 7015, 7024, 1, 0, 0, 0, 7016, 7017, 5, 191, 0, 0, 7017, 7018, 5, 451, 0, 0, 7018, 7019, 5, 220, 0, 0, 7019, 7020, 5, 389, 0, 0, 7020, 7021, 3, 1340, 670, 0, 7021, 7022, 3, 108, 54, 0, 7022, 7024, 1, 0, 0, 0, 7023, 7011, 1, 0, 0, 0, 7023, 7016, 1, 0, 0, 0, 7024, 763, 1, 0, 0, 0, 7025, 7026, 5, 46, 0, 0, 7026, 7027, 3, 618, 309, 0, 7027, 7028, 5, 314, 0, 0, 7028, 7029, 3, 1340, 670, 0, 7029, 7030, 5, 36, 0, 0, 7030, 7031, 5, 80, 0, 0, 7031, 7032, 3, 774, 387, 0, 7032, 7033, 5, 94, 0, 0, 7033, 7034, 3, 1336, 668, 0, 7034, 7035, 3, 1094, 547, 0, 7035, 7036, 5, 57, 0, 0, 7036, 7037, 3, 776, 388, 0, 7037, 7038, 3, 766, 383, 0, 7038, 765, 1, 0, 0, 0, 7039, 7046, 5, 263, 0, 0, 7040, 7046, 3, 770, 385, 0, 7041, 7042, 5, 2, 0, 0, 7042, 7043, 3, 768, 384, 0, 7043, 7044, 5, 3, 0, 0, 7044, 7046, 1, 0, 0, 0, 7045, 7039, 1, 0, 0, 0, 7045, 7040, 1, 0, 0, 0, 7045, 7041, 1, 0, 0, 0, 7046, 767, 1, 0, 0, 0, 7047, 7052, 3, 772, 386, 0, 7048, 7049, 5, 7, 0, 0, 7049, 7051, 3, 772, 386, 0, 7050, 7048, 1, 0, 0, 0, 7051, 7054, 1, 0, 0, 0, 7052, 7050, 1, 0, 0, 0, 7052, 7053, 1, 0, 0, 0, 7053, 769, 1, 0, 0, 0, 7054, 7052, 1, 0, 0, 0, 7055, 7061, 3, 960, 480, 0, 7056, 7061, 3, 902, 451, 0, 7057, 7061, 3, 942, 471, 0, 7058, 7061, 3, 928, 464, 0, 7059, 7061, 3, 778, 389, 0, 7060, 7055, 1, 0, 0, 0, 7060, 7056, 1, 0, 0, 0, 7060, 7057, 1, 0, 0, 0, 7060, 7058, 1, 0, 0, 0, 7060, 7059, 1, 0, 0, 0, 7061, 771, 1, 0, 0, 0, 7062, 7065, 3, 770, 385, 0, 7063, 7065, 1, 0, 0, 0, 7064, 7062, 1, 0, 0, 0, 7064, 7063, 1, 0, 0, 0, 7065, 773, 1, 0, 0, 0, 7066, 7067, 7, 31, 0, 0, 7067, 775, 1, 0, 0, 0, 7068, 7072, 5, 233, 0, 0, 7069, 7072, 5, 137, 0, 0, 7070, 7072, 1, 0, 0, 0, 7071, 7068, 1, 0, 0, 0, 7071, 7069, 1, 0, 0, 0, 7071, 7070, 1, 0, 0, 0, 7072, 777, 1, 0, 0, 0, 7073, 7074, 5, 264, 0, 0, 7074, 7075, 3, 1372, 686, 0, 7075, 7076, 3, 780, 390, 0, 7076, 779, 1, 0, 0, 0, 7077, 7078, 5, 6, 0, 0, 7078, 7081, 3, 1358, 679, 0, 7079, 7081, 1, 0, 0, 0, 7080, 7077, 1, 0, 0, 0, 7080, 7079, 1, 0, 0, 0, 7081, 781, 1, 0, 0, 0, 7082, 7083, 5, 243, 0, 0, 7083, 7084, 3, 1372, 686, 0, 7084, 783, 1, 0, 0, 0, 7085, 7086, 5, 359, 0, 0, 7086, 7090, 3, 1372, 686, 0, 7087, 7088, 5, 359, 0, 0, 7088, 7090, 5, 9, 0, 0, 7089, 7085, 1, 0, 0, 0, 7089, 7087, 1, 0, 0, 0, 7090, 785, 1, 0, 0, 0, 7091, 7092, 5, 129, 0, 0, 7092, 7093, 3, 788, 394, 0, 7093, 7094, 3, 796, 398, 0, 7094, 7142, 1, 0, 0, 0, 7095, 7096, 5, 146, 0, 0, 7096, 7097, 3, 788, 394, 0, 7097, 7098, 3, 794, 397, 0, 7098, 7142, 1, 0, 0, 0, 7099, 7100, 5, 333, 0, 0, 7100, 7101, 5, 349, 0, 0, 7101, 7142, 3, 794, 397, 0, 7102, 7103, 5, 161, 0, 0, 7103, 7104, 3, 788, 394, 0, 7104, 7105, 3, 796, 398, 0, 7105, 7142, 1, 0, 0, 0, 7106, 7107, 5, 454, 0, 0, 7107, 7108, 3, 788, 394, 0, 7108, 7109, 3, 796, 398, 0, 7109, 7142, 1, 0, 0, 0, 7110, 7111, 5, 312, 0, 0, 7111, 7112, 3, 788, 394, 0, 7112, 7113, 3, 796, 398, 0, 7113, 7142, 1, 0, 0, 0, 7114, 7115, 5, 315, 0, 0, 7115, 7142, 3, 1372, 686, 0, 7116, 7117, 5, 301, 0, 0, 7117, 7118, 5, 315, 0, 0, 7118, 7142, 3, 1372, 686, 0, 7119, 7120, 5, 301, 0, 0, 7120, 7142, 3, 1372, 686, 0, 7121, 7122, 5, 312, 0, 0, 7122, 7123, 3, 788, 394, 0, 7123, 7124, 5, 94, 0, 0, 7124, 7125, 5, 315, 0, 0, 7125, 7126, 3, 1372, 686, 0, 7126, 7142, 1, 0, 0, 0, 7127, 7128, 5, 312, 0, 0, 7128, 7129, 3, 788, 394, 0, 7129, 7130, 5, 94, 0, 0, 7130, 7131, 3, 1372, 686, 0, 7131, 7142, 1, 0, 0, 0, 7132, 7133, 5, 283, 0, 0, 7133, 7134, 5, 349, 0, 0, 7134, 7142, 3, 1358, 679, 0, 7135, 7136, 5, 161, 0, 0, 7136, 7137, 5, 284, 0, 0, 7137, 7142, 3, 1358, 679, 0, 7138, 7139, 5, 312, 0, 0, 7139, 7140, 5, 284, 0, 0, 7140, 7142, 3, 1358, 679, 0, 7141, 7091, 1, 0, 0, 0, 7141, 7095, 1, 0, 0, 0, 7141, 7099, 1, 0, 0, 0, 7141, 7102, 1, 0, 0, 0, 7141, 7106, 1, 0, 0, 0, 7141, 7110, 1, 0, 0, 0, 7141, 7114, 1, 0, 0, 0, 7141, 7116, 1, 0, 0, 0, 7141, 7119, 1, 0, 0, 0, 7141, 7121, 1, 0, 0, 0, 7141, 7127, 1, 0, 0, 0, 7141, 7132, 1, 0, 0, 0, 7141, 7135, 1, 0, 0, 0, 7141, 7138, 1, 0, 0, 0, 7142, 787, 1, 0, 0, 0, 7143, 7147, 5, 373, 0, 0, 7144, 7147, 5, 349, 0, 0, 7145, 7147, 1, 0, 0, 0, 7146, 7143, 1, 0, 0, 0, 7146, 7144, 1, 0, 0, 0, 7146, 7145, 1, 0, 0, 0, 7147, 789, 1, 0, 0, 0, 7148, 7149, 5, 235, 0, 0, 7149, 7150, 5, 242, 0, 0, 7150, 7159, 3, 64, 32, 0, 7151, 7152, 5, 293, 0, 0, 7152, 7159, 5, 81, 0, 0, 7153, 7154, 5, 293, 0, 0, 7154, 7159, 5, 375, 0, 0, 7155, 7159, 5, 54, 0, 0, 7156, 7157, 5, 77, 0, 0, 7157, 7159, 5, 54, 0, 0, 7158, 7148, 1, 0, 0, 0, 7158, 7151, 1, 0, 0, 0, 7158, 7153, 1, 0, 0, 0, 7158, 7155, 1, 0, 0, 0, 7158, 7156, 1, 0, 0, 0, 7159, 791, 1, 0, 0, 0, 7160, 7167, 3, 790, 395, 0, 7161, 7163, 5, 6, 0, 0, 7162, 7161, 1, 0, 0, 0, 7162, 7163, 1, 0, 0, 0, 7163, 7164, 1, 0, 0, 0, 7164, 7166, 3, 790, 395, 0, 7165, 7162, 1, 0, 0, 0, 7166, 7169, 1, 0, 0, 0, 7167, 7165, 1, 0, 0, 0, 7167, 7168, 1, 0, 0, 0, 7168, 793, 1, 0, 0, 0, 7169, 7167, 1, 0, 0, 0, 7170, 7173, 3, 792, 396, 0, 7171, 7173, 1, 0, 0, 0, 7172, 7170, 1, 0, 0, 0, 7172, 7171, 1, 0, 0, 0, 7173, 795, 1, 0, 0, 0, 7174, 7176, 5, 33, 0, 0, 7175, 7177, 5, 262, 0, 0, 7176, 7175, 1, 0, 0, 0, 7176, 7177, 1, 0, 0, 0, 7177, 7178, 1, 0, 0, 0, 7178, 7181, 5, 153, 0, 0, 7179, 7181, 1, 0, 0, 0, 7180, 7174, 1, 0, 0, 0, 7180, 7179, 1, 0, 0, 0, 7181, 797, 1, 0, 0, 0, 7182, 7185, 5, 46, 0, 0, 7183, 7184, 5, 82, 0, 0, 7184, 7186, 5, 304, 0, 0, 7185, 7183, 1, 0, 0, 0, 7185, 7186, 1, 0, 0, 0, 7186, 7187, 1, 0, 0, 0, 7187, 7201, 3, 174, 87, 0, 7188, 7189, 5, 369, 0, 0, 7189, 7190, 3, 1336, 668, 0, 7190, 7191, 3, 214, 107, 0, 7191, 7192, 3, 118, 59, 0, 7192, 7202, 1, 0, 0, 0, 7193, 7194, 5, 296, 0, 0, 7194, 7195, 5, 369, 0, 0, 7195, 7196, 3, 1336, 668, 0, 7196, 7197, 5, 2, 0, 0, 7197, 7198, 3, 216, 108, 0, 7198, 7199, 5, 3, 0, 0, 7199, 7200, 3, 118, 59, 0, 7200, 7202, 1, 0, 0, 0, 7201, 7188, 1, 0, 0, 0, 7201, 7193, 1, 0, 0, 0, 7202, 7203, 1, 0, 0, 0, 7203, 7204, 5, 36, 0, 0, 7204, 7205, 3, 960, 480, 0, 7205, 7206, 3, 800, 400, 0, 7206, 799, 1, 0, 0, 0, 7207, 7209, 5, 105, 0, 0, 7208, 7210, 7, 32, 0, 0, 7209, 7208, 1, 0, 0, 0, 7209, 7210, 1, 0, 0, 0, 7210, 7211, 1, 0, 0, 0, 7211, 7212, 5, 42, 0, 0, 7212, 7215, 5, 272, 0, 0, 7213, 7215, 1, 0, 0, 0, 7214, 7207, 1, 0, 0, 0, 7214, 7213, 1, 0, 0, 0, 7215, 801, 1, 0, 0, 0, 7216, 7217, 5, 244, 0, 0, 7217, 7218, 3, 1344, 672, 0, 7218, 803, 1, 0, 0, 0, 7219, 7220, 5, 46, 0, 0, 7220, 7221, 5, 175, 0, 0, 7221, 7222, 3, 1340, 670, 0, 7222, 7223, 3, 16, 8, 0, 7223, 7224, 3, 806, 403, 0, 7224, 805, 1, 0, 0, 0, 7225, 7228, 3, 808, 404, 0, 7226, 7228, 1, 0, 0, 0, 7227, 7225, 1, 0, 0, 0, 7227, 7226, 1, 0, 0, 0, 7228, 807, 1, 0, 0, 0, 7229, 7231, 3, 810, 405, 0, 7230, 7229, 1, 0, 0, 0, 7231, 7232, 1, 0, 0, 0, 7232, 7230, 1, 0, 0, 0, 7232, 7233, 1, 0, 0, 0, 7233, 809, 1, 0, 0, 0, 7234, 7235, 3, 812, 406, 0, 7235, 7239, 3, 814, 407, 0, 7236, 7240, 3, 1364, 682, 0, 7237, 7240, 3, 66, 33, 0, 7238, 7240, 5, 53, 0, 0, 7239, 7236, 1, 0, 0, 0, 7239, 7237, 1, 0, 0, 0, 7239, 7238, 1, 0, 0, 0, 7240, 811, 1, 0, 0, 0, 7241, 7250, 3, 1382, 691, 0, 7242, 7243, 5, 164, 0, 0, 7243, 7250, 5, 74, 0, 0, 7244, 7250, 5, 194, 0, 0, 7245, 7250, 5, 246, 0, 0, 7246, 7250, 5, 275, 0, 0, 7247, 7250, 5, 344, 0, 0, 7248, 7250, 5, 346, 0, 0, 7249, 7241, 1, 0, 0, 0, 7249, 7242, 1, 0, 0, 0, 7249, 7244, 1, 0, 0, 0, 7249, 7245, 1, 0, 0, 0, 7249, 7246, 1, 0, 0, 0, 7249, 7247, 1, 0, 0, 0, 7249, 7248, 1, 0, 0, 0, 7250, 813, 1, 0, 0, 0, 7251, 7254, 5, 10, 0, 0, 7252, 7254, 1, 0, 0, 0, 7253, 7251, 1, 0, 0, 0, 7253, 7252, 1, 0, 0, 0, 7254, 815, 1, 0, 0, 0, 7255, 7256, 5, 138, 0, 0, 7256, 7257, 5, 175, 0, 0, 7257, 7264, 3, 1340, 670, 0, 7258, 7259, 5, 105, 0, 0, 7259, 7265, 3, 806, 403, 0, 7260, 7265, 3, 806, 403, 0, 7261, 7262, 5, 326, 0, 0, 7262, 7263, 5, 344, 0, 0, 7263, 7265, 3, 1340, 670, 0, 7264, 7258, 1, 0, 0, 0, 7264, 7260, 1, 0, 0, 0, 7264, 7261, 1, 0, 0, 0, 7265, 817, 1, 0, 0, 0, 7266, 7267, 5, 138, 0, 0, 7267, 7268, 5, 175, 0, 0, 7268, 7269, 3, 1340, 670, 0, 7269, 7270, 3, 80, 40, 0, 7270, 819, 1, 0, 0, 0, 7271, 7272, 5, 191, 0, 0, 7272, 7275, 5, 175, 0, 0, 7273, 7274, 5, 220, 0, 0, 7274, 7276, 5, 389, 0, 0, 7275, 7273, 1, 0, 0, 0, 7275, 7276, 1, 0, 0, 0, 7276, 7277, 1, 0, 0, 0, 7277, 7283, 3, 1340, 670, 0, 7278, 7279, 3, 16, 8, 0, 7279, 7280, 5, 2, 0, 0, 7280, 7281, 3, 822, 411, 0, 7281, 7282, 5, 3, 0, 0, 7282, 7284, 1, 0, 0, 0, 7283, 7278, 1, 0, 0, 0, 7283, 7284, 1, 0, 0, 0, 7284, 821, 1, 0, 0, 0, 7285, 7290, 3, 824, 412, 0, 7286, 7287, 5, 6, 0, 0, 7287, 7289, 3, 824, 412, 0, 7288, 7286, 1, 0, 0, 0, 7289, 7292, 1, 0, 0, 0, 7290, 7288, 1, 0, 0, 0, 7290, 7291, 1, 0, 0, 0, 7291, 823, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7293, 7294, 5, 209, 0, 0, 7294, 825, 1, 0, 0, 0, 7295, 7296, 5, 138, 0, 0, 7296, 7297, 5, 108, 0, 0, 7297, 7298, 3, 524, 262, 0, 7298, 7299, 5, 298, 0, 0, 7299, 7300, 5, 368, 0, 0, 7300, 827, 1, 0, 0, 0, 7301, 7302, 5, 138, 0, 0, 7302, 7303, 5, 342, 0, 0, 7303, 7304, 7, 33, 0, 0, 7304, 7305, 3, 54, 27, 0, 7305, 829, 1, 0, 0, 0, 7306, 7307, 5, 46, 0, 0, 7307, 7308, 5, 189, 0, 0, 7308, 7309, 3, 524, 262, 0, 7309, 7310, 3, 834, 417, 0, 7310, 7311, 3, 1118, 559, 0, 7311, 7312, 3, 192, 96, 0, 7312, 831, 1, 0, 0, 0, 7313, 7314, 5, 138, 0, 0, 7314, 7315, 5, 189, 0, 0, 7315, 7337, 3, 524, 262, 0, 7316, 7338, 3, 106, 53, 0, 7317, 7318, 5, 191, 0, 0, 7318, 7319, 5, 77, 0, 0, 7319, 7338, 5, 78, 0, 0, 7320, 7321, 5, 326, 0, 0, 7321, 7322, 5, 77, 0, 0, 7322, 7338, 5, 78, 0, 0, 7323, 7324, 5, 133, 0, 0, 7324, 7338, 3, 208, 104, 0, 7325, 7326, 5, 191, 0, 0, 7326, 7329, 5, 45, 0, 0, 7327, 7328, 5, 220, 0, 0, 7328, 7330, 5, 389, 0, 0, 7329, 7327, 1, 0, 0, 0, 7329, 7330, 1, 0, 0, 0, 7330, 7331, 1, 0, 0, 0, 7331, 7332, 3, 1340, 670, 0, 7332, 7333, 3, 108, 54, 0, 7333, 7338, 1, 0, 0, 0, 7334, 7335, 5, 365, 0, 0, 7335, 7336, 5, 45, 0, 0, 7336, 7338, 3, 1340, 670, 0, 7337, 7316, 1, 0, 0, 0, 7337, 7317, 1, 0, 0, 0, 7337, 7320, 1, 0, 0, 0, 7337, 7323, 1, 0, 0, 0, 7337, 7325, 1, 0, 0, 0, 7337, 7334, 1, 0, 0, 0, 7338, 833, 1, 0, 0, 0, 7339, 7342, 5, 36, 0, 0, 7340, 7342, 1, 0, 0, 0, 7341, 7339, 1, 0, 0, 0, 7341, 7340, 1, 0, 0, 0, 7342, 835, 1, 0, 0, 0, 7343, 7344, 5, 138, 0, 0, 7344, 7345, 5, 348, 0, 0, 7345, 7346, 5, 318, 0, 0, 7346, 7347, 5, 185, 0, 0, 7347, 7348, 3, 524, 262, 0, 7348, 7349, 3, 460, 230, 0, 7349, 837, 1, 0, 0, 0, 7350, 7351, 5, 138, 0, 0, 7351, 7352, 5, 348, 0, 0, 7352, 7353, 5, 318, 0, 0, 7353, 7354, 5, 163, 0, 0, 7354, 7355, 3, 524, 262, 0, 7355, 7356, 5, 133, 0, 0, 7356, 7357, 5, 248, 0, 0, 7357, 7358, 5, 62, 0, 0, 7358, 7359, 3, 1338, 669, 0, 7359, 7360, 3, 840, 420, 0, 7360, 7361, 3, 522, 261, 0, 7361, 7423, 1, 0, 0, 0, 7362, 7363, 5, 138, 0, 0, 7363, 7364, 5, 348, 0, 0, 7364, 7365, 5, 318, 0, 0, 7365, 7366, 5, 163, 0, 0, 7366, 7367, 3, 524, 262, 0, 7367, 7368, 5, 138, 0, 0, 7368, 7369, 5, 248, 0, 0, 7369, 7370, 5, 62, 0, 0, 7370, 7371, 3, 1338, 669, 0, 7371, 7372, 3, 840, 420, 0, 7372, 7373, 3, 522, 261, 0, 7373, 7423, 1, 0, 0, 0, 7374, 7375, 5, 138, 0, 0, 7375, 7376, 5, 348, 0, 0, 7376, 7377, 5, 318, 0, 0, 7377, 7378, 5, 163, 0, 0, 7378, 7379, 3, 524, 262, 0, 7379, 7380, 5, 138, 0, 0, 7380, 7381, 5, 248, 0, 0, 7381, 7382, 5, 304, 0, 0, 7382, 7383, 3, 524, 262, 0, 7383, 7384, 3, 840, 420, 0, 7384, 7385, 3, 524, 262, 0, 7385, 7423, 1, 0, 0, 0, 7386, 7387, 5, 138, 0, 0, 7387, 7388, 5, 348, 0, 0, 7388, 7389, 5, 318, 0, 0, 7389, 7390, 5, 163, 0, 0, 7390, 7391, 3, 524, 262, 0, 7391, 7392, 5, 138, 0, 0, 7392, 7393, 5, 248, 0, 0, 7393, 7394, 5, 62, 0, 0, 7394, 7395, 3, 1338, 669, 0, 7395, 7396, 5, 304, 0, 0, 7396, 7397, 3, 524, 262, 0, 7397, 7398, 3, 840, 420, 0, 7398, 7399, 3, 524, 262, 0, 7399, 7423, 1, 0, 0, 0, 7400, 7401, 5, 138, 0, 0, 7401, 7402, 5, 348, 0, 0, 7402, 7403, 5, 318, 0, 0, 7403, 7404, 5, 163, 0, 0, 7404, 7405, 3, 524, 262, 0, 7405, 7406, 5, 191, 0, 0, 7406, 7407, 5, 248, 0, 0, 7407, 7408, 5, 62, 0, 0, 7408, 7409, 3, 1338, 669, 0, 7409, 7423, 1, 0, 0, 0, 7410, 7411, 5, 138, 0, 0, 7411, 7412, 5, 348, 0, 0, 7412, 7413, 5, 318, 0, 0, 7413, 7414, 5, 163, 0, 0, 7414, 7415, 3, 524, 262, 0, 7415, 7416, 5, 191, 0, 0, 7416, 7417, 5, 248, 0, 0, 7417, 7418, 5, 220, 0, 0, 7418, 7419, 5, 389, 0, 0, 7419, 7420, 5, 62, 0, 0, 7420, 7421, 3, 1338, 669, 0, 7421, 7423, 1, 0, 0, 0, 7422, 7350, 1, 0, 0, 0, 7422, 7362, 1, 0, 0, 0, 7422, 7374, 1, 0, 0, 0, 7422, 7386, 1, 0, 0, 0, 7422, 7400, 1, 0, 0, 0, 7422, 7410, 1, 0, 0, 0, 7423, 839, 1, 0, 0, 0, 7424, 7425, 5, 105, 0, 0, 7425, 841, 1, 0, 0, 0, 7426, 7427, 5, 46, 0, 0, 7427, 7428, 3, 488, 244, 0, 7428, 7429, 5, 168, 0, 0, 7429, 7430, 3, 524, 262, 0, 7430, 7431, 5, 62, 0, 0, 7431, 7432, 3, 1358, 679, 0, 7432, 7433, 5, 94, 0, 0, 7433, 7434, 3, 1358, 679, 0, 7434, 7435, 5, 64, 0, 0, 7435, 7436, 3, 524, 262, 0, 7436, 843, 1, 0, 0, 0, 7437, 7438, 5, 158, 0, 0, 7438, 7439, 3, 864, 432, 0, 7439, 7440, 3, 1336, 668, 0, 7440, 7441, 3, 846, 423, 0, 7441, 7451, 1, 0, 0, 0, 7442, 7443, 5, 158, 0, 0, 7443, 7451, 3, 864, 432, 0, 7444, 7445, 5, 158, 0, 0, 7445, 7446, 3, 864, 432, 0, 7446, 7447, 3, 1340, 670, 0, 7447, 7448, 5, 80, 0, 0, 7448, 7449, 3, 1336, 668, 0, 7449, 7451, 1, 0, 0, 0, 7450, 7437, 1, 0, 0, 0, 7450, 7442, 1, 0, 0, 0, 7450, 7444, 1, 0, 0, 0, 7451, 845, 1, 0, 0, 0, 7452, 7453, 5, 100, 0, 0, 7453, 7456, 3, 1340, 670, 0, 7454, 7456, 1, 0, 0, 0, 7455, 7452, 1, 0, 0, 0, 7455, 7454, 1, 0, 0, 0, 7456, 847, 1, 0, 0, 0, 7457, 7458, 5, 363, 0, 0, 7458, 7459, 3, 866, 433, 0, 7459, 7460, 3, 868, 434, 0, 7460, 7461, 3, 864, 432, 0, 7461, 7462, 3, 862, 431, 0, 7462, 7463, 3, 876, 438, 0, 7463, 7471, 1, 0, 0, 0, 7464, 7465, 5, 363, 0, 0, 7465, 7466, 5, 2, 0, 0, 7466, 7467, 3, 852, 426, 0, 7467, 7468, 5, 3, 0, 0, 7468, 7469, 3, 876, 438, 0, 7469, 7471, 1, 0, 0, 0, 7470, 7457, 1, 0, 0, 0, 7470, 7464, 1, 0, 0, 0, 7471, 849, 1, 0, 0, 0, 7472, 7473, 3, 854, 427, 0, 7473, 7474, 3, 864, 432, 0, 7474, 7475, 3, 876, 438, 0, 7475, 7483, 1, 0, 0, 0, 7476, 7477, 3, 854, 427, 0, 7477, 7478, 5, 2, 0, 0, 7478, 7479, 3, 852, 426, 0, 7479, 7480, 5, 3, 0, 0, 7480, 7481, 3, 876, 438, 0, 7481, 7483, 1, 0, 0, 0, 7482, 7472, 1, 0, 0, 0, 7482, 7476, 1, 0, 0, 0, 7483, 851, 1, 0, 0, 0, 7484, 7489, 3, 856, 428, 0, 7485, 7486, 5, 6, 0, 0, 7486, 7488, 3, 856, 428, 0, 7487, 7485, 1, 0, 0, 0, 7488, 7491, 1, 0, 0, 0, 7489, 7487, 1, 0, 0, 0, 7489, 7490, 1, 0, 0, 0, 7490, 853, 1, 0, 0, 0, 7491, 7489, 1, 0, 0, 0, 7492, 7493, 7, 34, 0, 0, 7493, 855, 1, 0, 0, 0, 7494, 7495, 3, 858, 429, 0, 7495, 7496, 3, 860, 430, 0, 7496, 857, 1, 0, 0, 0, 7497, 7500, 3, 1378, 689, 0, 7498, 7500, 3, 854, 427, 0, 7499, 7497, 1, 0, 0, 0, 7499, 7498, 1, 0, 0, 0, 7500, 859, 1, 0, 0, 0, 7501, 7505, 3, 66, 33, 0, 7502, 7505, 3, 292, 146, 0, 7503, 7505, 1, 0, 0, 0, 7504, 7501, 1, 0, 0, 0, 7504, 7502, 1, 0, 0, 0, 7504, 7503, 1, 0, 0, 0, 7505, 861, 1, 0, 0, 0, 7506, 7509, 3, 854, 427, 0, 7507, 7509, 1, 0, 0, 0, 7508, 7506, 1, 0, 0, 0, 7508, 7507, 1, 0, 0, 0, 7509, 863, 1, 0, 0, 0, 7510, 7513, 5, 128, 0, 0, 7511, 7513, 1, 0, 0, 0, 7512, 7510, 1, 0, 0, 0, 7512, 7511, 1, 0, 0, 0, 7513, 865, 1, 0, 0, 0, 7514, 7517, 5, 113, 0, 0, 7515, 7517, 1, 0, 0, 0, 7516, 7514, 1, 0, 0, 0, 7516, 7515, 1, 0, 0, 0, 7517, 867, 1, 0, 0, 0, 7518, 7521, 5, 112, 0, 0, 7519, 7521, 1, 0, 0, 0, 7520, 7518, 1, 0, 0, 0, 7520, 7519, 1, 0, 0, 0, 7521, 869, 1, 0, 0, 0, 7522, 7523, 5, 2, 0, 0, 7523, 7524, 3, 1338, 669, 0, 7524, 7525, 5, 3, 0, 0, 7525, 7528, 1, 0, 0, 0, 7526, 7528, 1, 0, 0, 0, 7527, 7522, 1, 0, 0, 0, 7527, 7526, 1, 0, 0, 0, 7528, 871, 1, 0, 0, 0, 7529, 7530, 3, 1336, 668, 0, 7530, 7531, 3, 870, 435, 0, 7531, 873, 1, 0, 0, 0, 7532, 7537, 3, 872, 436, 0, 7533, 7534, 5, 6, 0, 0, 7534, 7536, 3, 872, 436, 0, 7535, 7533, 1, 0, 0, 0, 7536, 7539, 1, 0, 0, 0, 7537, 7535, 1, 0, 0, 0, 7537, 7538, 1, 0, 0, 0, 7538, 875, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7540, 7543, 3, 874, 437, 0, 7541, 7543, 1, 0, 0, 0, 7542, 7540, 1, 0, 0, 0, 7542, 7541, 1, 0, 0, 0, 7543, 877, 1, 0, 0, 0, 7544, 7545, 5, 203, 0, 0, 7545, 7561, 3, 880, 440, 0, 7546, 7547, 5, 203, 0, 0, 7547, 7548, 3, 854, 427, 0, 7548, 7549, 3, 864, 432, 0, 7549, 7550, 3, 880, 440, 0, 7550, 7561, 1, 0, 0, 0, 7551, 7552, 5, 203, 0, 0, 7552, 7553, 5, 128, 0, 0, 7553, 7561, 3, 880, 440, 0, 7554, 7555, 5, 203, 0, 0, 7555, 7556, 5, 2, 0, 0, 7556, 7557, 3, 882, 441, 0, 7557, 7558, 5, 3, 0, 0, 7558, 7559, 3, 880, 440, 0, 7559, 7561, 1, 0, 0, 0, 7560, 7544, 1, 0, 0, 0, 7560, 7546, 1, 0, 0, 0, 7560, 7551, 1, 0, 0, 0, 7560, 7554, 1, 0, 0, 0, 7561, 879, 1, 0, 0, 0, 7562, 7572, 3, 960, 480, 0, 7563, 7572, 3, 902, 451, 0, 7564, 7572, 3, 942, 471, 0, 7565, 7572, 3, 928, 464, 0, 7566, 7572, 3, 952, 476, 0, 7567, 7572, 3, 264, 132, 0, 7568, 7572, 3, 270, 135, 0, 7569, 7572, 3, 276, 138, 0, 7570, 7572, 3, 896, 448, 0, 7571, 7562, 1, 0, 0, 0, 7571, 7563, 1, 0, 0, 0, 7571, 7564, 1, 0, 0, 0, 7571, 7565, 1, 0, 0, 0, 7571, 7566, 1, 0, 0, 0, 7571, 7567, 1, 0, 0, 0, 7571, 7568, 1, 0, 0, 0, 7571, 7569, 1, 0, 0, 0, 7571, 7570, 1, 0, 0, 0, 7572, 881, 1, 0, 0, 0, 7573, 7578, 3, 884, 442, 0, 7574, 7575, 5, 6, 0, 0, 7575, 7577, 3, 884, 442, 0, 7576, 7574, 1, 0, 0, 0, 7577, 7580, 1, 0, 0, 0, 7578, 7576, 1, 0, 0, 0, 7578, 7579, 1, 0, 0, 0, 7579, 883, 1, 0, 0, 0, 7580, 7578, 1, 0, 0, 0, 7581, 7582, 3, 886, 443, 0, 7582, 7583, 3, 888, 444, 0, 7583, 885, 1, 0, 0, 0, 7584, 7587, 3, 1378, 689, 0, 7585, 7587, 3, 854, 427, 0, 7586, 7584, 1, 0, 0, 0, 7586, 7585, 1, 0, 0, 0, 7587, 887, 1, 0, 0, 0, 7588, 7592, 3, 66, 33, 0, 7589, 7592, 3, 292, 146, 0, 7590, 7592, 1, 0, 0, 0, 7591, 7588, 1, 0, 0, 0, 7591, 7589, 1, 0, 0, 0, 7591, 7590, 1, 0, 0, 0, 7592, 889, 1, 0, 0, 0, 7593, 7594, 5, 283, 0, 0, 7594, 7595, 3, 1340, 670, 0, 7595, 7596, 3, 892, 446, 0, 7596, 7597, 5, 36, 0, 0, 7597, 7598, 3, 894, 447, 0, 7598, 891, 1, 0, 0, 0, 7599, 7600, 5, 2, 0, 0, 7600, 7601, 3, 1286, 643, 0, 7601, 7602, 5, 3, 0, 0, 7602, 7605, 1, 0, 0, 0, 7603, 7605, 1, 0, 0, 0, 7604, 7599, 1, 0, 0, 0, 7604, 7603, 1, 0, 0, 0, 7605, 893, 1, 0, 0, 0, 7606, 7611, 3, 960, 480, 0, 7607, 7611, 3, 902, 451, 0, 7608, 7611, 3, 942, 471, 0, 7609, 7611, 3, 928, 464, 0, 7610, 7606, 1, 0, 0, 0, 7610, 7607, 1, 0, 0, 0, 7610, 7608, 1, 0, 0, 0, 7610, 7609, 1, 0, 0, 0, 7611, 895, 1, 0, 0, 0, 7612, 7613, 5, 202, 0, 0, 7613, 7614, 3, 1340, 670, 0, 7614, 7615, 3, 898, 449, 0, 7615, 7640, 1, 0, 0, 0, 7616, 7617, 5, 46, 0, 0, 7617, 7618, 3, 174, 87, 0, 7618, 7619, 5, 92, 0, 0, 7619, 7620, 3, 266, 133, 0, 7620, 7621, 5, 36, 0, 0, 7621, 7622, 5, 202, 0, 0, 7622, 7623, 3, 1340, 670, 0, 7623, 7624, 3, 898, 449, 0, 7624, 7625, 3, 268, 134, 0, 7625, 7640, 1, 0, 0, 0, 7626, 7627, 5, 46, 0, 0, 7627, 7628, 3, 174, 87, 0, 7628, 7629, 5, 92, 0, 0, 7629, 7630, 5, 220, 0, 0, 7630, 7631, 5, 77, 0, 0, 7631, 7632, 5, 389, 0, 0, 7632, 7633, 3, 266, 133, 0, 7633, 7634, 5, 36, 0, 0, 7634, 7635, 5, 202, 0, 0, 7635, 7636, 3, 1340, 670, 0, 7636, 7637, 3, 898, 449, 0, 7637, 7638, 3, 268, 134, 0, 7638, 7640, 1, 0, 0, 0, 7639, 7612, 1, 0, 0, 0, 7639, 7616, 1, 0, 0, 0, 7639, 7626, 1, 0, 0, 0, 7640, 897, 1, 0, 0, 0, 7641, 7642, 5, 2, 0, 0, 7642, 7643, 3, 1280, 640, 0, 7643, 7644, 5, 3, 0, 0, 7644, 7647, 1, 0, 0, 0, 7645, 7647, 1, 0, 0, 0, 7646, 7641, 1, 0, 0, 0, 7646, 7645, 1, 0, 0, 0, 7647, 899, 1, 0, 0, 0, 7648, 7649, 5, 177, 0, 0, 7649, 7659, 3, 1340, 670, 0, 7650, 7651, 5, 177, 0, 0, 7651, 7652, 5, 283, 0, 0, 7652, 7659, 3, 1340, 670, 0, 7653, 7654, 5, 177, 0, 0, 7654, 7659, 5, 30, 0, 0, 7655, 7656, 5, 177, 0, 0, 7656, 7657, 5, 283, 0, 0, 7657, 7659, 5, 30, 0, 0, 7658, 7648, 1, 0, 0, 0, 7658, 7650, 1, 0, 0, 0, 7658, 7653, 1, 0, 0, 0, 7658, 7655, 1, 0, 0, 0, 7659, 901, 1, 0, 0, 0, 7660, 7661, 3, 980, 490, 0, 7661, 7662, 5, 232, 0, 0, 7662, 7663, 5, 71, 0, 0, 7663, 7664, 3, 904, 452, 0, 7664, 7665, 3, 906, 453, 0, 7665, 7666, 3, 914, 457, 0, 7666, 7667, 3, 918, 459, 0, 7667, 903, 1, 0, 0, 0, 7668, 7671, 3, 1336, 668, 0, 7669, 7670, 5, 36, 0, 0, 7670, 7672, 3, 1372, 686, 0, 7671, 7669, 1, 0, 0, 0, 7671, 7672, 1, 0, 0, 0, 7672, 905, 1, 0, 0, 0, 7673, 7693, 3, 960, 480, 0, 7674, 7675, 5, 463, 0, 0, 7675, 7676, 3, 908, 454, 0, 7676, 7677, 5, 450, 0, 0, 7677, 7678, 3, 960, 480, 0, 7678, 7693, 1, 0, 0, 0, 7679, 7680, 5, 2, 0, 0, 7680, 7681, 3, 910, 455, 0, 7681, 7686, 5, 3, 0, 0, 7682, 7683, 5, 463, 0, 0, 7683, 7684, 3, 908, 454, 0, 7684, 7685, 5, 450, 0, 0, 7685, 7687, 1, 0, 0, 0, 7686, 7682, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 1, 0, 0, 0, 7688, 7689, 3, 960, 480, 0, 7689, 7693, 1, 0, 0, 0, 7690, 7691, 5, 53, 0, 0, 7691, 7693, 5, 415, 0, 0, 7692, 7673, 1, 0, 0, 0, 7692, 7674, 1, 0, 0, 0, 7692, 7679, 1, 0, 0, 0, 7692, 7690, 1, 0, 0, 0, 7693, 907, 1, 0, 0, 0, 7694, 7695, 7, 35, 0, 0, 7695, 909, 1, 0, 0, 0, 7696, 7701, 3, 912, 456, 0, 7697, 7698, 5, 6, 0, 0, 7698, 7700, 3, 912, 456, 0, 7699, 7697, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7701, 7702, 1, 0, 0, 0, 7702, 911, 1, 0, 0, 0, 7703, 7701, 1, 0, 0, 0, 7704, 7705, 3, 1372, 686, 0, 7705, 7706, 3, 1326, 663, 0, 7706, 913, 1, 0, 0, 0, 7707, 7708, 5, 80, 0, 0, 7708, 7709, 5, 464, 0, 0, 7709, 7710, 3, 916, 458, 0, 7710, 7717, 5, 57, 0, 0, 7711, 7712, 5, 362, 0, 0, 7712, 7713, 5, 326, 0, 0, 7713, 7714, 3, 944, 472, 0, 7714, 7715, 3, 1094, 547, 0, 7715, 7718, 1, 0, 0, 0, 7716, 7718, 5, 263, 0, 0, 7717, 7711, 1, 0, 0, 0, 7717, 7716, 1, 0, 0, 0, 7718, 7721, 1, 0, 0, 0, 7719, 7721, 1, 0, 0, 0, 7720, 7707, 1, 0, 0, 0, 7720, 7719, 1, 0, 0, 0, 7721, 915, 1, 0, 0, 0, 7722, 7723, 5, 2, 0, 0, 7723, 7724, 3, 598, 299, 0, 7724, 7725, 5, 3, 0, 0, 7725, 7726, 3, 1094, 547, 0, 7726, 7732, 1, 0, 0, 0, 7727, 7728, 5, 80, 0, 0, 7728, 7729, 5, 45, 0, 0, 7729, 7732, 3, 1340, 670, 0, 7730, 7732, 1, 0, 0, 0, 7731, 7722, 1, 0, 0, 0, 7731, 7727, 1, 0, 0, 0, 7731, 7730, 1, 0, 0, 0, 7732, 917, 1, 0, 0, 0, 7733, 7734, 5, 87, 0, 0, 7734, 7737, 3, 1330, 665, 0, 7735, 7737, 1, 0, 0, 0, 7736, 7733, 1, 0, 0, 0, 7736, 7735, 1, 0, 0, 0, 7737, 919, 1, 0, 0, 0, 7738, 7740, 5, 253, 0, 0, 7739, 7741, 5, 71, 0, 0, 7740, 7739, 1, 0, 0, 0, 7740, 7741, 1, 0, 0, 0, 7741, 7742, 1, 0, 0, 0, 7742, 7744, 3, 1336, 668, 0, 7743, 7745, 3, 1062, 531, 0, 7744, 7743, 1, 0, 0, 0, 7744, 7745, 1, 0, 0, 0, 7745, 7746, 1, 0, 0, 0, 7746, 7749, 5, 100, 0, 0, 7747, 7750, 3, 962, 481, 0, 7748, 7750, 3, 1336, 668, 0, 7749, 7747, 1, 0, 0, 0, 7749, 7748, 1, 0, 0, 0, 7750, 7752, 1, 0, 0, 0, 7751, 7753, 3, 1062, 531, 0, 7752, 7751, 1, 0, 0, 0, 7752, 7753, 1, 0, 0, 0, 7753, 7754, 1, 0, 0, 0, 7754, 7755, 5, 80, 0, 0, 7755, 7764, 3, 1162, 581, 0, 7756, 7758, 3, 922, 461, 0, 7757, 7759, 3, 924, 462, 0, 7758, 7757, 1, 0, 0, 0, 7758, 7759, 1, 0, 0, 0, 7759, 7765, 1, 0, 0, 0, 7760, 7762, 3, 924, 462, 0, 7761, 7763, 3, 922, 461, 0, 7762, 7761, 1, 0, 0, 0, 7762, 7763, 1, 0, 0, 0, 7763, 7765, 1, 0, 0, 0, 7764, 7756, 1, 0, 0, 0, 7764, 7760, 1, 0, 0, 0, 7765, 7767, 1, 0, 0, 0, 7766, 7768, 3, 926, 463, 0, 7767, 7766, 1, 0, 0, 0, 7767, 7768, 1, 0, 0, 0, 7768, 921, 1, 0, 0, 0, 7769, 7770, 5, 102, 0, 0, 7770, 7771, 5, 77, 0, 0, 7771, 7774, 5, 250, 0, 0, 7772, 7773, 5, 33, 0, 0, 7773, 7775, 3, 1162, 581, 0, 7774, 7772, 1, 0, 0, 0, 7774, 7775, 1, 0, 0, 0, 7775, 7777, 1, 0, 0, 0, 7776, 7778, 5, 93, 0, 0, 7777, 7776, 1, 0, 0, 0, 7777, 7778, 1, 0, 0, 0, 7778, 7779, 1, 0, 0, 0, 7779, 7784, 5, 232, 0, 0, 7780, 7781, 5, 2, 0, 0, 7781, 7782, 3, 910, 455, 0, 7782, 7783, 5, 3, 0, 0, 7783, 7785, 1, 0, 0, 0, 7784, 7780, 1, 0, 0, 0, 7784, 7785, 1, 0, 0, 0, 7785, 7786, 1, 0, 0, 0, 7786, 7787, 3, 1052, 526, 0, 7787, 923, 1, 0, 0, 0, 7788, 7789, 5, 102, 0, 0, 7789, 7792, 5, 250, 0, 0, 7790, 7791, 5, 33, 0, 0, 7791, 7793, 3, 1162, 581, 0, 7792, 7790, 1, 0, 0, 0, 7792, 7793, 1, 0, 0, 0, 7793, 7795, 1, 0, 0, 0, 7794, 7796, 5, 93, 0, 0, 7795, 7794, 1, 0, 0, 0, 7795, 7796, 1, 0, 0, 0, 7796, 7797, 1, 0, 0, 0, 7797, 7798, 5, 362, 0, 0, 7798, 7799, 5, 326, 0, 0, 7799, 7800, 3, 944, 472, 0, 7800, 925, 1, 0, 0, 0, 7801, 7802, 5, 102, 0, 0, 7802, 7804, 5, 250, 0, 0, 7803, 7805, 5, 93, 0, 0, 7804, 7803, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7806, 1, 0, 0, 0, 7806, 7807, 5, 182, 0, 0, 7807, 927, 1, 0, 0, 0, 7808, 7809, 3, 980, 490, 0, 7809, 7810, 5, 182, 0, 0, 7810, 7811, 5, 64, 0, 0, 7811, 7812, 3, 1078, 539, 0, 7812, 7813, 3, 930, 465, 0, 7813, 7814, 3, 1096, 548, 0, 7814, 7815, 3, 918, 459, 0, 7815, 929, 1, 0, 0, 0, 7816, 7817, 5, 100, 0, 0, 7817, 7820, 3, 1056, 528, 0, 7818, 7820, 1, 0, 0, 0, 7819, 7816, 1, 0, 0, 0, 7819, 7818, 1, 0, 0, 0, 7820, 931, 1, 0, 0, 0, 7821, 7822, 5, 247, 0, 0, 7822, 7823, 3, 988, 494, 0, 7823, 7824, 3, 1076, 538, 0, 7824, 7825, 3, 934, 467, 0, 7825, 7826, 3, 938, 469, 0, 7826, 933, 1, 0, 0, 0, 7827, 7828, 5, 68, 0, 0, 7828, 7829, 3, 936, 468, 0, 7829, 7830, 5, 256, 0, 0, 7830, 7833, 1, 0, 0, 0, 7831, 7833, 1, 0, 0, 0, 7832, 7827, 1, 0, 0, 0, 7832, 7831, 1, 0, 0, 0, 7833, 935, 1, 0, 0, 0, 7834, 7835, 5, 131, 0, 0, 7835, 7847, 7, 36, 0, 0, 7836, 7837, 5, 407, 0, 0, 7837, 7847, 7, 36, 0, 0, 7838, 7843, 5, 327, 0, 0, 7839, 7840, 5, 362, 0, 0, 7840, 7844, 5, 201, 0, 0, 7841, 7842, 5, 407, 0, 0, 7842, 7844, 5, 201, 0, 0, 7843, 7839, 1, 0, 0, 0, 7843, 7841, 1, 0, 0, 0, 7843, 7844, 1, 0, 0, 0, 7844, 7847, 1, 0, 0, 0, 7845, 7847, 5, 201, 0, 0, 7846, 7834, 1, 0, 0, 0, 7846, 7836, 1, 0, 0, 0, 7846, 7838, 1, 0, 0, 0, 7846, 7845, 1, 0, 0, 0, 7847, 937, 1, 0, 0, 0, 7848, 7851, 5, 265, 0, 0, 7849, 7851, 1, 0, 0, 0, 7850, 7848, 1, 0, 0, 0, 7850, 7849, 1, 0, 0, 0, 7851, 939, 1, 0, 0, 0, 7852, 7857, 5, 265, 0, 0, 7853, 7854, 5, 465, 0, 0, 7854, 7857, 5, 466, 0, 0, 7855, 7857, 1, 0, 0, 0, 7856, 7852, 1, 0, 0, 0, 7856, 7853, 1, 0, 0, 0, 7856, 7855, 1, 0, 0, 0, 7857, 941, 1, 0, 0, 0, 7858, 7859, 3, 980, 490, 0, 7859, 7860, 5, 362, 0, 0, 7860, 7861, 3, 1078, 539, 0, 7861, 7862, 5, 326, 0, 0, 7862, 7863, 3, 944, 472, 0, 7863, 7864, 3, 1054, 527, 0, 7864, 7865, 3, 1096, 548, 0, 7865, 7866, 3, 918, 459, 0, 7866, 943, 1, 0, 0, 0, 7867, 7872, 3, 946, 473, 0, 7868, 7869, 5, 6, 0, 0, 7869, 7871, 3, 946, 473, 0, 7870, 7868, 1, 0, 0, 0, 7871, 7874, 1, 0, 0, 0, 7872, 7870, 1, 0, 0, 0, 7872, 7873, 1, 0, 0, 0, 7873, 945, 1, 0, 0, 0, 7874, 7872, 1, 0, 0, 0, 7875, 7876, 3, 948, 474, 0, 7876, 7877, 5, 10, 0, 0, 7877, 7878, 3, 1162, 581, 0, 7878, 7886, 1, 0, 0, 0, 7879, 7880, 5, 2, 0, 0, 7880, 7881, 3, 950, 475, 0, 7881, 7882, 5, 3, 0, 0, 7882, 7883, 5, 10, 0, 0, 7883, 7884, 3, 1162, 581, 0, 7884, 7886, 1, 0, 0, 0, 7885, 7875, 1, 0, 0, 0, 7885, 7879, 1, 0, 0, 0, 7886, 947, 1, 0, 0, 0, 7887, 7888, 3, 1372, 686, 0, 7888, 7889, 3, 1326, 663, 0, 7889, 949, 1, 0, 0, 0, 7890, 7895, 3, 948, 474, 0, 7891, 7892, 5, 6, 0, 0, 7892, 7894, 3, 948, 474, 0, 7893, 7891, 1, 0, 0, 0, 7894, 7897, 1, 0, 0, 0, 7895, 7893, 1, 0, 0, 0, 7895, 7896, 1, 0, 0, 0, 7896, 951, 1, 0, 0, 0, 7897, 7895, 1, 0, 0, 0, 7898, 7899, 5, 178, 0, 0, 7899, 7900, 3, 954, 477, 0, 7900, 7901, 3, 956, 478, 0, 7901, 7902, 5, 172, 0, 0, 7902, 7903, 3, 958, 479, 0, 7903, 7904, 5, 62, 0, 0, 7904, 7905, 3, 960, 480, 0, 7905, 953, 1, 0, 0, 0, 7906, 7907, 3, 1340, 670, 0, 7907, 955, 1, 0, 0, 0, 7908, 7909, 5, 262, 0, 0, 7909, 7914, 5, 317, 0, 0, 7910, 7914, 5, 317, 0, 0, 7911, 7914, 5, 107, 0, 0, 7912, 7914, 5, 231, 0, 0, 7913, 7908, 1, 0, 0, 0, 7913, 7910, 1, 0, 0, 0, 7913, 7911, 1, 0, 0, 0, 7913, 7912, 1, 0, 0, 0, 7914, 7917, 1, 0, 0, 0, 7915, 7913, 1, 0, 0, 0, 7915, 7916, 1, 0, 0, 0, 7916, 957, 1, 0, 0, 0, 7917, 7915, 1, 0, 0, 0, 7918, 7924, 1, 0, 0, 0, 7919, 7920, 5, 105, 0, 0, 7920, 7924, 5, 217, 0, 0, 7921, 7922, 5, 372, 0, 0, 7922, 7924, 5, 217, 0, 0, 7923, 7918, 1, 0, 0, 0, 7923, 7919, 1, 0, 0, 0, 7923, 7921, 1, 0, 0, 0, 7924, 959, 1, 0, 0, 0, 7925, 7928, 3, 964, 482, 0, 7926, 7928, 3, 962, 481, 0, 7927, 7925, 1, 0, 0, 0, 7927, 7926, 1, 0, 0, 0, 7928, 961, 1, 0, 0, 0, 7929, 7930, 5, 2, 0, 0, 7930, 7931, 3, 964, 482, 0, 7931, 7932, 5, 3, 0, 0, 7932, 7938, 1, 0, 0, 0, 7933, 7934, 5, 2, 0, 0, 7934, 7935, 3, 962, 481, 0, 7935, 7936, 5, 3, 0, 0, 7936, 7938, 1, 0, 0, 0, 7937, 7929, 1, 0, 0, 0, 7937, 7933, 1, 0, 0, 0, 7938, 963, 1, 0, 0, 0, 7939, 7940, 3, 966, 483, 0, 7940, 7947, 3, 996, 498, 0, 7941, 7942, 3, 1040, 520, 0, 7942, 7943, 3, 1006, 503, 0, 7943, 7948, 1, 0, 0, 0, 7944, 7945, 3, 1004, 502, 0, 7945, 7946, 3, 1042, 521, 0, 7946, 7948, 1, 0, 0, 0, 7947, 7941, 1, 0, 0, 0, 7947, 7944, 1, 0, 0, 0, 7947, 7948, 1, 0, 0, 0, 7948, 7961, 1, 0, 0, 0, 7949, 7950, 3, 972, 486, 0, 7950, 7951, 3, 966, 483, 0, 7951, 7958, 3, 996, 498, 0, 7952, 7953, 3, 1040, 520, 0, 7953, 7954, 3, 1006, 503, 0, 7954, 7959, 1, 0, 0, 0, 7955, 7956, 3, 1004, 502, 0, 7956, 7957, 3, 1042, 521, 0, 7957, 7959, 1, 0, 0, 0, 7958, 7952, 1, 0, 0, 0, 7958, 7955, 1, 0, 0, 0, 7958, 7959, 1, 0, 0, 0, 7959, 7961, 1, 0, 0, 0, 7960, 7939, 1, 0, 0, 0, 7960, 7949, 1, 0, 0, 0, 7961, 965, 1, 0, 0, 0, 7962, 7969, 3, 968, 484, 0, 7963, 7964, 7, 37, 0, 0, 7964, 7965, 3, 990, 495, 0, 7965, 7966, 3, 968, 484, 0, 7966, 7968, 1, 0, 0, 0, 7967, 7963, 1, 0, 0, 0, 7968, 7971, 1, 0, 0, 0, 7969, 7967, 1, 0, 0, 0, 7969, 7970, 1, 0, 0, 0, 7970, 967, 1, 0, 0, 0, 7971, 7969, 1, 0, 0, 0, 7972, 7979, 3, 970, 485, 0, 7973, 7974, 5, 70, 0, 0, 7974, 7975, 3, 990, 495, 0, 7975, 7976, 3, 970, 485, 0, 7976, 7978, 1, 0, 0, 0, 7977, 7973, 1, 0, 0, 0, 7978, 7981, 1, 0, 0, 0, 7979, 7977, 1, 0, 0, 0, 7979, 7980, 1, 0, 0, 0, 7980, 969, 1, 0, 0, 0, 7981, 7979, 1, 0, 0, 0, 7982, 7990, 5, 88, 0, 0, 7983, 7984, 3, 994, 497, 0, 7984, 7985, 3, 982, 491, 0, 7985, 7986, 3, 1328, 664, 0, 7986, 7991, 1, 0, 0, 0, 7987, 7988, 3, 992, 496, 0, 7988, 7989, 3, 1330, 665, 0, 7989, 7991, 1, 0, 0, 0, 7990, 7983, 1, 0, 0, 0, 7990, 7987, 1, 0, 0, 0, 7991, 7992, 1, 0, 0, 0, 7992, 7993, 3, 982, 491, 0, 7993, 7994, 3, 1054, 527, 0, 7994, 7995, 3, 1094, 547, 0, 7995, 7996, 3, 1024, 512, 0, 7996, 7997, 3, 1038, 519, 0, 7997, 7998, 3, 1240, 620, 0, 7998, 8004, 1, 0, 0, 0, 7999, 8004, 3, 1052, 526, 0, 8000, 8001, 5, 92, 0, 0, 8001, 8004, 3, 1074, 537, 0, 8002, 8004, 3, 962, 481, 0, 8003, 7982, 1, 0, 0, 0, 8003, 7999, 1, 0, 0, 0, 8003, 8000, 1, 0, 0, 0, 8003, 8002, 1, 0, 0, 0, 8004, 971, 1, 0, 0, 0, 8005, 8007, 5, 105, 0, 0, 8006, 8008, 5, 296, 0, 0, 8007, 8006, 1, 0, 0, 0, 8007, 8008, 1, 0, 0, 0, 8008, 8009, 1, 0, 0, 0, 8009, 8010, 3, 974, 487, 0, 8010, 973, 1, 0, 0, 0, 8011, 8016, 3, 976, 488, 0, 8012, 8013, 5, 6, 0, 0, 8013, 8015, 3, 976, 488, 0, 8014, 8012, 1, 0, 0, 0, 8015, 8018, 1, 0, 0, 0, 8016, 8014, 1, 0, 0, 0, 8016, 8017, 1, 0, 0, 0, 8017, 975, 1, 0, 0, 0, 8018, 8016, 1, 0, 0, 0, 8019, 8020, 3, 1340, 670, 0, 8020, 8021, 3, 870, 435, 0, 8021, 8022, 5, 36, 0, 0, 8022, 8023, 3, 978, 489, 0, 8023, 8024, 5, 2, 0, 0, 8024, 8025, 3, 894, 447, 0, 8025, 8026, 5, 3, 0, 0, 8026, 977, 1, 0, 0, 0, 8027, 8032, 5, 251, 0, 0, 8028, 8029, 5, 77, 0, 0, 8029, 8032, 5, 251, 0, 0, 8030, 8032, 1, 0, 0, 0, 8031, 8027, 1, 0, 0, 0, 8031, 8028, 1, 0, 0, 0, 8031, 8030, 1, 0, 0, 0, 8032, 979, 1, 0, 0, 0, 8033, 8036, 3, 972, 486, 0, 8034, 8036, 1, 0, 0, 0, 8035, 8033, 1, 0, 0, 0, 8035, 8034, 1, 0, 0, 0, 8036, 981, 1, 0, 0, 0, 8037, 8042, 5, 71, 0, 0, 8038, 8039, 3, 984, 492, 0, 8039, 8040, 3, 986, 493, 0, 8040, 8043, 1, 0, 0, 0, 8041, 8043, 3, 1566, 783, 0, 8042, 8038, 1, 0, 0, 0, 8042, 8041, 1, 0, 0, 0, 8043, 8046, 1, 0, 0, 0, 8044, 8046, 1, 0, 0, 0, 8045, 8037, 1, 0, 0, 0, 8045, 8044, 1, 0, 0, 0, 8046, 983, 1, 0, 0, 0, 8047, 8050, 1, 0, 0, 0, 8048, 8050, 5, 339, 0, 0, 8049, 8047, 1, 0, 0, 0, 8049, 8048, 1, 0, 0, 0, 8050, 985, 1, 0, 0, 0, 8051, 8053, 7, 38, 0, 0, 8052, 8051, 1, 0, 0, 0, 8052, 8053, 1, 0, 0, 0, 8053, 8054, 1, 0, 0, 0, 8054, 8055, 7, 11, 0, 0, 8055, 8056, 3, 988, 494, 0, 8056, 8057, 3, 1336, 668, 0, 8057, 8066, 1, 0, 0, 0, 8058, 8059, 5, 360, 0, 0, 8059, 8060, 3, 988, 494, 0, 8060, 8061, 3, 1336, 668, 0, 8061, 8066, 1, 0, 0, 0, 8062, 8063, 5, 92, 0, 0, 8063, 8066, 3, 1336, 668, 0, 8064, 8066, 3, 1336, 668, 0, 8065, 8052, 1, 0, 0, 0, 8065, 8058, 1, 0, 0, 0, 8065, 8062, 1, 0, 0, 0, 8065, 8064, 1, 0, 0, 0, 8066, 987, 1, 0, 0, 0, 8067, 8070, 5, 92, 0, 0, 8068, 8070, 1, 0, 0, 0, 8069, 8067, 1, 0, 0, 0, 8069, 8068, 1, 0, 0, 0, 8070, 989, 1, 0, 0, 0, 8071, 8075, 5, 30, 0, 0, 8072, 8075, 5, 56, 0, 0, 8073, 8075, 1, 0, 0, 0, 8074, 8071, 1, 0, 0, 0, 8074, 8072, 1, 0, 0, 0, 8074, 8073, 1, 0, 0, 0, 8075, 991, 1, 0, 0, 0, 8076, 8082, 5, 56, 0, 0, 8077, 8078, 5, 80, 0, 0, 8078, 8079, 5, 2, 0, 0, 8079, 8080, 3, 1280, 640, 0, 8080, 8081, 5, 3, 0, 0, 8081, 8083, 1, 0, 0, 0, 8082, 8077, 1, 0, 0, 0, 8082, 8083, 1, 0, 0, 0, 8083, 993, 1, 0, 0, 0, 8084, 8087, 5, 30, 0, 0, 8085, 8087, 1, 0, 0, 0, 8086, 8084, 1, 0, 0, 0, 8086, 8085, 1, 0, 0, 0, 8087, 995, 1, 0, 0, 0, 8088, 8091, 3, 998, 499, 0, 8089, 8091, 1, 0, 0, 0, 8090, 8088, 1, 0, 0, 0, 8090, 8089, 1, 0, 0, 0, 8091, 997, 1, 0, 0, 0, 8092, 8093, 5, 83, 0, 0, 8093, 8094, 5, 147, 0, 0, 8094, 8095, 3, 1000, 500, 0, 8095, 999, 1, 0, 0, 0, 8096, 8101, 3, 1002, 501, 0, 8097, 8098, 5, 6, 0, 0, 8098, 8100, 3, 1002, 501, 0, 8099, 8097, 1, 0, 0, 0, 8100, 8103, 1, 0, 0, 0, 8101, 8099, 1, 0, 0, 0, 8101, 8102, 1, 0, 0, 0, 8102, 1001, 1, 0, 0, 0, 8103, 8101, 1, 0, 0, 0, 8104, 8108, 3, 1162, 581, 0, 8105, 8106, 5, 100, 0, 0, 8106, 8109, 3, 1276, 638, 0, 8107, 8109, 3, 612, 306, 0, 8108, 8105, 1, 0, 0, 0, 8108, 8107, 1, 0, 0, 0, 8109, 8110, 1, 0, 0, 0, 8110, 8111, 3, 614, 307, 0, 8111, 1003, 1, 0, 0, 0, 8112, 8114, 3, 1008, 504, 0, 8113, 8115, 3, 1010, 505, 0, 8114, 8113, 1, 0, 0, 0, 8114, 8115, 1, 0, 0, 0, 8115, 8121, 1, 0, 0, 0, 8116, 8118, 3, 1010, 505, 0, 8117, 8119, 3, 1008, 504, 0, 8118, 8117, 1, 0, 0, 0, 8118, 8119, 1, 0, 0, 0, 8119, 8121, 1, 0, 0, 0, 8120, 8112, 1, 0, 0, 0, 8120, 8116, 1, 0, 0, 0, 8121, 1005, 1, 0, 0, 0, 8122, 8125, 3, 1004, 502, 0, 8123, 8125, 1, 0, 0, 0, 8124, 8122, 1, 0, 0, 0, 8124, 8123, 1, 0, 0, 0, 8125, 1007, 1, 0, 0, 0, 8126, 8127, 5, 74, 0, 0, 8127, 8130, 3, 1012, 506, 0, 8128, 8129, 5, 6, 0, 0, 8129, 8131, 3, 1014, 507, 0, 8130, 8128, 1, 0, 0, 0, 8130, 8131, 1, 0, 0, 0, 8131, 8150, 1, 0, 0, 0, 8132, 8133, 5, 61, 0, 0, 8133, 8147, 3, 1022, 511, 0, 8134, 8135, 3, 1016, 508, 0, 8135, 8139, 3, 1020, 510, 0, 8136, 8140, 5, 81, 0, 0, 8137, 8138, 5, 105, 0, 0, 8138, 8140, 5, 467, 0, 0, 8139, 8136, 1, 0, 0, 0, 8139, 8137, 1, 0, 0, 0, 8140, 8148, 1, 0, 0, 0, 8141, 8145, 3, 1020, 510, 0, 8142, 8146, 5, 81, 0, 0, 8143, 8144, 5, 105, 0, 0, 8144, 8146, 5, 467, 0, 0, 8145, 8142, 1, 0, 0, 0, 8145, 8143, 1, 0, 0, 0, 8146, 8148, 1, 0, 0, 0, 8147, 8134, 1, 0, 0, 0, 8147, 8141, 1, 0, 0, 0, 8148, 8150, 1, 0, 0, 0, 8149, 8126, 1, 0, 0, 0, 8149, 8132, 1, 0, 0, 0, 8150, 1009, 1, 0, 0, 0, 8151, 8156, 5, 79, 0, 0, 8152, 8157, 3, 1014, 507, 0, 8153, 8154, 3, 1016, 508, 0, 8154, 8155, 3, 1020, 510, 0, 8155, 8157, 1, 0, 0, 0, 8156, 8152, 1, 0, 0, 0, 8156, 8153, 1, 0, 0, 0, 8157, 1011, 1, 0, 0, 0, 8158, 8161, 3, 1162, 581, 0, 8159, 8161, 5, 30, 0, 0, 8160, 8158, 1, 0, 0, 0, 8160, 8159, 1, 0, 0, 0, 8161, 1013, 1, 0, 0, 0, 8162, 8163, 3, 1162, 581, 0, 8163, 1015, 1, 0, 0, 0, 8164, 8170, 3, 1206, 603, 0, 8165, 8166, 5, 12, 0, 0, 8166, 8170, 3, 1018, 509, 0, 8167, 8168, 5, 13, 0, 0, 8168, 8170, 3, 1018, 509, 0, 8169, 8164, 1, 0, 0, 0, 8169, 8165, 1, 0, 0, 0, 8169, 8167, 1, 0, 0, 0, 8170, 1017, 1, 0, 0, 0, 8171, 8174, 3, 1356, 678, 0, 8172, 8174, 3, 1354, 677, 0, 8173, 8171, 1, 0, 0, 0, 8173, 8172, 1, 0, 0, 0, 8174, 1019, 1, 0, 0, 0, 8175, 8176, 7, 39, 0, 0, 8176, 1021, 1, 0, 0, 0, 8177, 8178, 7, 40, 0, 0, 8178, 1023, 1, 0, 0, 0, 8179, 8180, 5, 66, 0, 0, 8180, 8181, 5, 147, 0, 0, 8181, 8184, 3, 1026, 513, 0, 8182, 8184, 1, 0, 0, 0, 8183, 8179, 1, 0, 0, 0, 8183, 8182, 1, 0, 0, 0, 8184, 1025, 1, 0, 0, 0, 8185, 8190, 3, 1028, 514, 0, 8186, 8187, 5, 6, 0, 0, 8187, 8189, 3, 1028, 514, 0, 8188, 8186, 1, 0, 0, 0, 8189, 8192, 1, 0, 0, 0, 8190, 8188, 1, 0, 0, 0, 8190, 8191, 1, 0, 0, 0, 8191, 1027, 1, 0, 0, 0, 8192, 8190, 1, 0, 0, 0, 8193, 8199, 3, 1030, 515, 0, 8194, 8199, 3, 1034, 517, 0, 8195, 8199, 3, 1032, 516, 0, 8196, 8199, 3, 1036, 518, 0, 8197, 8199, 3, 1162, 581, 0, 8198, 8193, 1, 0, 0, 0, 8198, 8194, 1, 0, 0, 0, 8198, 8195, 1, 0, 0, 0, 8198, 8196, 1, 0, 0, 0, 8198, 8197, 1, 0, 0, 0, 8199, 1029, 1, 0, 0, 0, 8200, 8201, 5, 2, 0, 0, 8201, 8202, 5, 3, 0, 0, 8202, 1031, 1, 0, 0, 0, 8203, 8204, 5, 468, 0, 0, 8204, 8205, 5, 2, 0, 0, 8205, 8206, 3, 1280, 640, 0, 8206, 8207, 5, 3, 0, 0, 8207, 1033, 1, 0, 0, 0, 8208, 8209, 5, 469, 0, 0, 8209, 8210, 5, 2, 0, 0, 8210, 8211, 3, 1280, 640, 0, 8211, 8212, 5, 3, 0, 0, 8212, 1035, 1, 0, 0, 0, 8213, 8214, 5, 470, 0, 0, 8214, 8215, 5, 471, 0, 0, 8215, 8216, 5, 2, 0, 0, 8216, 8217, 3, 1026, 513, 0, 8217, 8218, 5, 3, 0, 0, 8218, 1037, 1, 0, 0, 0, 8219, 8220, 5, 67, 0, 0, 8220, 8223, 3, 1162, 581, 0, 8221, 8223, 1, 0, 0, 0, 8222, 8219, 1, 0, 0, 0, 8222, 8221, 1, 0, 0, 0, 8223, 1039, 1, 0, 0, 0, 8224, 8229, 3, 1044, 522, 0, 8225, 8226, 5, 62, 0, 0, 8226, 8227, 5, 293, 0, 0, 8227, 8229, 5, 81, 0, 0, 8228, 8224, 1, 0, 0, 0, 8228, 8225, 1, 0, 0, 0, 8229, 1041, 1, 0, 0, 0, 8230, 8233, 3, 1040, 520, 0, 8231, 8233, 1, 0, 0, 0, 8232, 8230, 1, 0, 0, 0, 8232, 8231, 1, 0, 0, 0, 8233, 1043, 1, 0, 0, 0, 8234, 8236, 3, 1046, 523, 0, 8235, 8234, 1, 0, 0, 0, 8236, 8237, 1, 0, 0, 0, 8237, 8235, 1, 0, 0, 0, 8237, 8238, 1, 0, 0, 0, 8238, 1045, 1, 0, 0, 0, 8239, 8240, 3, 1048, 524, 0, 8240, 8241, 3, 1050, 525, 0, 8241, 8242, 3, 940, 470, 0, 8242, 1047, 1, 0, 0, 0, 8243, 8253, 5, 62, 0, 0, 8244, 8245, 5, 262, 0, 0, 8245, 8247, 5, 236, 0, 0, 8246, 8244, 1, 0, 0, 0, 8246, 8247, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8254, 5, 362, 0, 0, 8249, 8251, 5, 236, 0, 0, 8250, 8249, 1, 0, 0, 0, 8250, 8251, 1, 0, 0, 0, 8251, 8252, 1, 0, 0, 0, 8252, 8254, 5, 327, 0, 0, 8253, 8246, 1, 0, 0, 0, 8253, 8250, 1, 0, 0, 0, 8254, 1049, 1, 0, 0, 0, 8255, 8256, 5, 268, 0, 0, 8256, 8259, 3, 1334, 667, 0, 8257, 8259, 1, 0, 0, 0, 8258, 8255, 1, 0, 0, 0, 8258, 8257, 1, 0, 0, 0, 8259, 1051, 1, 0, 0, 0, 8260, 8261, 5, 415, 0, 0, 8261, 8262, 5, 2, 0, 0, 8262, 8263, 3, 1280, 640, 0, 8263, 8271, 5, 3, 0, 0, 8264, 8265, 5, 6, 0, 0, 8265, 8266, 5, 2, 0, 0, 8266, 8267, 3, 1280, 640, 0, 8267, 8268, 5, 3, 0, 0, 8268, 8270, 1, 0, 0, 0, 8269, 8264, 1, 0, 0, 0, 8270, 8273, 1, 0, 0, 0, 8271, 8269, 1, 0, 0, 0, 8271, 8272, 1, 0, 0, 0, 8272, 1053, 1, 0, 0, 0, 8273, 8271, 1, 0, 0, 0, 8274, 8275, 5, 64, 0, 0, 8275, 8278, 3, 1056, 528, 0, 8276, 8278, 1, 0, 0, 0, 8277, 8274, 1, 0, 0, 0, 8277, 8276, 1, 0, 0, 0, 8278, 1055, 1, 0, 0, 0, 8279, 8289, 3, 1058, 529, 0, 8280, 8285, 3, 1060, 530, 0, 8281, 8282, 5, 6, 0, 0, 8282, 8284, 3, 1060, 530, 0, 8283, 8281, 1, 0, 0, 0, 8284, 8287, 1, 0, 0, 0, 8285, 8283, 1, 0, 0, 0, 8285, 8286, 1, 0, 0, 0, 8286, 8289, 1, 0, 0, 0, 8287, 8285, 1, 0, 0, 0, 8288, 8279, 1, 0, 0, 0, 8288, 8280, 1, 0, 0, 0, 8289, 1057, 1, 0, 0, 0, 8290, 8293, 3, 1060, 530, 0, 8291, 8292, 5, 6, 0, 0, 8292, 8294, 3, 1060, 530, 0, 8293, 8291, 1, 0, 0, 0, 8294, 8295, 1, 0, 0, 0, 8295, 8293, 1, 0, 0, 0, 8295, 8296, 1, 0, 0, 0, 8296, 1059, 1, 0, 0, 0, 8297, 8298, 3, 1074, 537, 0, 8298, 8300, 3, 1064, 532, 0, 8299, 8301, 3, 1080, 540, 0, 8300, 8299, 1, 0, 0, 0, 8300, 8301, 1, 0, 0, 0, 8301, 8347, 1, 0, 0, 0, 8302, 8303, 3, 1084, 542, 0, 8303, 8304, 3, 1068, 534, 0, 8304, 8347, 1, 0, 0, 0, 8305, 8306, 3, 1104, 552, 0, 8306, 8307, 3, 1064, 532, 0, 8307, 8347, 1, 0, 0, 0, 8308, 8309, 3, 962, 481, 0, 8309, 8310, 3, 1064, 532, 0, 8310, 8347, 1, 0, 0, 0, 8311, 8321, 5, 72, 0, 0, 8312, 8313, 3, 1104, 552, 0, 8313, 8314, 3, 1064, 532, 0, 8314, 8322, 1, 0, 0, 0, 8315, 8316, 3, 1084, 542, 0, 8316, 8317, 3, 1068, 534, 0, 8317, 8322, 1, 0, 0, 0, 8318, 8319, 3, 962, 481, 0, 8319, 8320, 3, 1064, 532, 0, 8320, 8322, 1, 0, 0, 0, 8321, 8312, 1, 0, 0, 0, 8321, 8315, 1, 0, 0, 0, 8321, 8318, 1, 0, 0, 0, 8322, 8347, 1, 0, 0, 0, 8323, 8324, 5, 2, 0, 0, 8324, 8341, 3, 1060, 530, 0, 8325, 8326, 5, 110, 0, 0, 8326, 8327, 5, 118, 0, 0, 8327, 8342, 3, 1060, 530, 0, 8328, 8330, 5, 121, 0, 0, 8329, 8331, 3, 1070, 535, 0, 8330, 8329, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 8332, 1, 0, 0, 0, 8332, 8333, 5, 118, 0, 0, 8333, 8342, 3, 1060, 530, 0, 8334, 8336, 3, 1070, 535, 0, 8335, 8334, 1, 0, 0, 0, 8335, 8336, 1, 0, 0, 0, 8336, 8337, 1, 0, 0, 0, 8337, 8338, 5, 118, 0, 0, 8338, 8339, 3, 1060, 530, 0, 8339, 8340, 3, 1072, 536, 0, 8340, 8342, 1, 0, 0, 0, 8341, 8325, 1, 0, 0, 0, 8341, 8328, 1, 0, 0, 0, 8341, 8335, 1, 0, 0, 0, 8341, 8342, 1, 0, 0, 0, 8342, 8343, 1, 0, 0, 0, 8343, 8344, 5, 3, 0, 0, 8344, 8345, 3, 1064, 532, 0, 8345, 8347, 1, 0, 0, 0, 8346, 8297, 1, 0, 0, 0, 8346, 8302, 1, 0, 0, 0, 8346, 8305, 1, 0, 0, 0, 8346, 8308, 1, 0, 0, 0, 8346, 8311, 1, 0, 0, 0, 8346, 8323, 1, 0, 0, 0, 8347, 8366, 1, 0, 0, 0, 8348, 8349, 5, 110, 0, 0, 8349, 8350, 5, 118, 0, 0, 8350, 8365, 3, 1060, 530, 0, 8351, 8353, 5, 121, 0, 0, 8352, 8354, 3, 1070, 535, 0, 8353, 8352, 1, 0, 0, 0, 8353, 8354, 1, 0, 0, 0, 8354, 8355, 1, 0, 0, 0, 8355, 8356, 5, 118, 0, 0, 8356, 8365, 3, 1060, 530, 0, 8357, 8359, 3, 1070, 535, 0, 8358, 8357, 1, 0, 0, 0, 8358, 8359, 1, 0, 0, 0, 8359, 8360, 1, 0, 0, 0, 8360, 8361, 5, 118, 0, 0, 8361, 8362, 3, 1060, 530, 0, 8362, 8363, 3, 1072, 536, 0, 8363, 8365, 1, 0, 0, 0, 8364, 8348, 1, 0, 0, 0, 8364, 8351, 1, 0, 0, 0, 8364, 8358, 1, 0, 0, 0, 8365, 8368, 1, 0, 0, 0, 8366, 8364, 1, 0, 0, 0, 8366, 8367, 1, 0, 0, 0, 8367, 1061, 1, 0, 0, 0, 8368, 8366, 1, 0, 0, 0, 8369, 8371, 5, 36, 0, 0, 8370, 8369, 1, 0, 0, 0, 8370, 8371, 1, 0, 0, 0, 8371, 8372, 1, 0, 0, 0, 8372, 8377, 3, 1372, 686, 0, 8373, 8374, 5, 2, 0, 0, 8374, 8375, 3, 1338, 669, 0, 8375, 8376, 5, 3, 0, 0, 8376, 8378, 1, 0, 0, 0, 8377, 8373, 1, 0, 0, 0, 8377, 8378, 1, 0, 0, 0, 8378, 1063, 1, 0, 0, 0, 8379, 8382, 3, 1066, 533, 0, 8380, 8382, 1, 0, 0, 0, 8381, 8379, 1, 0, 0, 0, 8381, 8380, 1, 0, 0, 0, 8382, 1065, 1, 0, 0, 0, 8383, 8385, 5, 36, 0, 0, 8384, 8383, 1, 0, 0, 0, 8384, 8385, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8391, 3, 1374, 687, 0, 8387, 8388, 5, 2, 0, 0, 8388, 8389, 3, 1338, 669, 0, 8389, 8390, 5, 3, 0, 0, 8390, 8392, 1, 0, 0, 0, 8391, 8387, 1, 0, 0, 0, 8391, 8392, 1, 0, 0, 0, 8392, 1067, 1, 0, 0, 0, 8393, 8407, 3, 1062, 531, 0, 8394, 8396, 5, 36, 0, 0, 8395, 8397, 3, 1372, 686, 0, 8396, 8395, 1, 0, 0, 0, 8396, 8397, 1, 0, 0, 0, 8397, 8400, 1, 0, 0, 0, 8398, 8400, 3, 1372, 686, 0, 8399, 8394, 1, 0, 0, 0, 8399, 8398, 1, 0, 0, 0, 8400, 8401, 1, 0, 0, 0, 8401, 8402, 5, 2, 0, 0, 8402, 8403, 3, 1100, 550, 0, 8403, 8404, 5, 3, 0, 0, 8404, 8407, 1, 0, 0, 0, 8405, 8407, 1, 0, 0, 0, 8406, 8393, 1, 0, 0, 0, 8406, 8399, 1, 0, 0, 0, 8406, 8405, 1, 0, 0, 0, 8407, 1069, 1, 0, 0, 0, 8408, 8410, 7, 41, 0, 0, 8409, 8411, 5, 123, 0, 0, 8410, 8409, 1, 0, 0, 0, 8410, 8411, 1, 0, 0, 0, 8411, 1071, 1, 0, 0, 0, 8412, 8413, 5, 100, 0, 0, 8413, 8414, 5, 2, 0, 0, 8414, 8415, 3, 1338, 669, 0, 8415, 8416, 5, 3, 0, 0, 8416, 8420, 1, 0, 0, 0, 8417, 8418, 5, 80, 0, 0, 8418, 8420, 3, 1162, 581, 0, 8419, 8412, 1, 0, 0, 0, 8419, 8417, 1, 0, 0, 0, 8420, 1073, 1, 0, 0, 0, 8421, 8423, 3, 1336, 668, 0, 8422, 8424, 5, 9, 0, 0, 8423, 8422, 1, 0, 0, 0, 8423, 8424, 1, 0, 0, 0, 8424, 8434, 1, 0, 0, 0, 8425, 8431, 5, 81, 0, 0, 8426, 8432, 3, 1336, 668, 0, 8427, 8428, 5, 2, 0, 0, 8428, 8429, 3, 1336, 668, 0, 8429, 8430, 5, 3, 0, 0, 8430, 8432, 1, 0, 0, 0, 8431, 8426, 1, 0, 0, 0, 8431, 8427, 1, 0, 0, 0, 8432, 8434, 1, 0, 0, 0, 8433, 8421, 1, 0, 0, 0, 8433, 8425, 1, 0, 0, 0, 8434, 1075, 1, 0, 0, 0, 8435, 8440, 3, 1074, 537, 0, 8436, 8437, 5, 6, 0, 0, 8437, 8439, 3, 1074, 537, 0, 8438, 8436, 1, 0, 0, 0, 8439, 8442, 1, 0, 0, 0, 8440, 8438, 1, 0, 0, 0, 8440, 8441, 1, 0, 0, 0, 8441, 1077, 1, 0, 0, 0, 8442, 8440, 1, 0, 0, 0, 8443, 8448, 3, 1074, 537, 0, 8444, 8446, 5, 36, 0, 0, 8445, 8444, 1, 0, 0, 0, 8445, 8446, 1, 0, 0, 0, 8446, 8447, 1, 0, 0, 0, 8447, 8449, 3, 1372, 686, 0, 8448, 8445, 1, 0, 0, 0, 8448, 8449, 1, 0, 0, 0, 8449, 1079, 1, 0, 0, 0, 8450, 8451, 5, 472, 0, 0, 8451, 8452, 3, 1346, 673, 0, 8452, 8453, 5, 2, 0, 0, 8453, 8454, 3, 1280, 640, 0, 8454, 8455, 5, 3, 0, 0, 8455, 8456, 3, 1082, 541, 0, 8456, 1081, 1, 0, 0, 0, 8457, 8458, 5, 303, 0, 0, 8458, 8459, 5, 2, 0, 0, 8459, 8460, 3, 1162, 581, 0, 8460, 8461, 5, 3, 0, 0, 8461, 8464, 1, 0, 0, 0, 8462, 8464, 1, 0, 0, 0, 8463, 8457, 1, 0, 0, 0, 8463, 8462, 1, 0, 0, 0, 8464, 1083, 1, 0, 0, 0, 8465, 8466, 3, 1214, 607, 0, 8466, 8467, 3, 1092, 546, 0, 8467, 8476, 1, 0, 0, 0, 8468, 8469, 5, 313, 0, 0, 8469, 8470, 5, 64, 0, 0, 8470, 8471, 5, 2, 0, 0, 8471, 8472, 3, 1088, 544, 0, 8472, 8473, 5, 3, 0, 0, 8473, 8474, 3, 1092, 546, 0, 8474, 8476, 1, 0, 0, 0, 8475, 8465, 1, 0, 0, 0, 8475, 8468, 1, 0, 0, 0, 8476, 1085, 1, 0, 0, 0, 8477, 8478, 3, 1214, 607, 0, 8478, 8479, 3, 1090, 545, 0, 8479, 1087, 1, 0, 0, 0, 8480, 8485, 3, 1086, 543, 0, 8481, 8482, 5, 6, 0, 0, 8482, 8484, 3, 1086, 543, 0, 8483, 8481, 1, 0, 0, 0, 8484, 8487, 1, 0, 0, 0, 8485, 8483, 1, 0, 0, 0, 8485, 8486, 1, 0, 0, 0, 8486, 1089, 1, 0, 0, 0, 8487, 8485, 1, 0, 0, 0, 8488, 8489, 5, 36, 0, 0, 8489, 8490, 5, 2, 0, 0, 8490, 8491, 3, 1100, 550, 0, 8491, 8492, 5, 3, 0, 0, 8492, 8495, 1, 0, 0, 0, 8493, 8495, 1, 0, 0, 0, 8494, 8488, 1, 0, 0, 0, 8494, 8493, 1, 0, 0, 0, 8495, 1091, 1, 0, 0, 0, 8496, 8497, 5, 105, 0, 0, 8497, 8500, 5, 473, 0, 0, 8498, 8500, 1, 0, 0, 0, 8499, 8496, 1, 0, 0, 0, 8499, 8498, 1, 0, 0, 0, 8500, 1093, 1, 0, 0, 0, 8501, 8502, 5, 103, 0, 0, 8502, 8505, 3, 1162, 581, 0, 8503, 8505, 1, 0, 0, 0, 8504, 8501, 1, 0, 0, 0, 8504, 8503, 1, 0, 0, 0, 8505, 1095, 1, 0, 0, 0, 8506, 8511, 5, 103, 0, 0, 8507, 8508, 5, 434, 0, 0, 8508, 8509, 5, 268, 0, 0, 8509, 8512, 3, 954, 477, 0, 8510, 8512, 3, 1162, 581, 0, 8511, 8507, 1, 0, 0, 0, 8511, 8510, 1, 0, 0, 0, 8512, 8515, 1, 0, 0, 0, 8513, 8515, 1, 0, 0, 0, 8514, 8506, 1, 0, 0, 0, 8514, 8513, 1, 0, 0, 0, 8515, 1097, 1, 0, 0, 0, 8516, 8519, 3, 1100, 550, 0, 8517, 8519, 1, 0, 0, 0, 8518, 8516, 1, 0, 0, 0, 8518, 8517, 1, 0, 0, 0, 8519, 1099, 1, 0, 0, 0, 8520, 8525, 3, 1102, 551, 0, 8521, 8522, 5, 6, 0, 0, 8522, 8524, 3, 1102, 551, 0, 8523, 8521, 1, 0, 0, 0, 8524, 8527, 1, 0, 0, 0, 8525, 8523, 1, 0, 0, 0, 8525, 8526, 1, 0, 0, 0, 8526, 1101, 1, 0, 0, 0, 8527, 8525, 1, 0, 0, 0, 8528, 8529, 3, 1372, 686, 0, 8529, 8530, 3, 1118, 559, 0, 8530, 8531, 3, 110, 55, 0, 8531, 1103, 1, 0, 0, 0, 8532, 8533, 5, 474, 0, 0, 8533, 8549, 5, 2, 0, 0, 8534, 8535, 3, 1206, 603, 0, 8535, 8536, 3, 1232, 616, 0, 8536, 8537, 5, 475, 0, 0, 8537, 8538, 3, 1106, 553, 0, 8538, 8550, 1, 0, 0, 0, 8539, 8540, 5, 476, 0, 0, 8540, 8541, 5, 2, 0, 0, 8541, 8542, 3, 1114, 557, 0, 8542, 8543, 5, 3, 0, 0, 8543, 8544, 5, 6, 0, 0, 8544, 8545, 3, 1206, 603, 0, 8545, 8546, 3, 1232, 616, 0, 8546, 8547, 5, 475, 0, 0, 8547, 8548, 3, 1106, 553, 0, 8548, 8550, 1, 0, 0, 0, 8549, 8534, 1, 0, 0, 0, 8549, 8539, 1, 0, 0, 0, 8550, 8551, 1, 0, 0, 0, 8551, 8552, 5, 3, 0, 0, 8552, 1105, 1, 0, 0, 0, 8553, 8558, 3, 1108, 554, 0, 8554, 8555, 5, 6, 0, 0, 8555, 8557, 3, 1108, 554, 0, 8556, 8554, 1, 0, 0, 0, 8557, 8560, 1, 0, 0, 0, 8558, 8556, 1, 0, 0, 0, 8558, 8559, 1, 0, 0, 0, 8559, 1107, 1, 0, 0, 0, 8560, 8558, 1, 0, 0, 0, 8561, 8568, 3, 1372, 686, 0, 8562, 8564, 3, 1118, 559, 0, 8563, 8565, 3, 1110, 555, 0, 8564, 8563, 1, 0, 0, 0, 8564, 8565, 1, 0, 0, 0, 8565, 8569, 1, 0, 0, 0, 8566, 8567, 5, 62, 0, 0, 8567, 8569, 5, 473, 0, 0, 8568, 8562, 1, 0, 0, 0, 8568, 8566, 1, 0, 0, 0, 8569, 1109, 1, 0, 0, 0, 8570, 8572, 3, 1112, 556, 0, 8571, 8570, 1, 0, 0, 0, 8572, 8573, 1, 0, 0, 0, 8573, 8571, 1, 0, 0, 0, 8573, 8574, 1, 0, 0, 0, 8574, 1111, 1, 0, 0, 0, 8575, 8576, 5, 53, 0, 0, 8576, 8584, 3, 1162, 581, 0, 8577, 8578, 3, 1382, 691, 0, 8578, 8579, 3, 1162, 581, 0, 8579, 8584, 1, 0, 0, 0, 8580, 8581, 5, 77, 0, 0, 8581, 8584, 5, 78, 0, 0, 8582, 8584, 5, 78, 0, 0, 8583, 8575, 1, 0, 0, 0, 8583, 8577, 1, 0, 0, 0, 8583, 8580, 1, 0, 0, 0, 8583, 8582, 1, 0, 0, 0, 8584, 1113, 1, 0, 0, 0, 8585, 8590, 3, 1116, 558, 0, 8586, 8587, 5, 6, 0, 0, 8587, 8589, 3, 1116, 558, 0, 8588, 8586, 1, 0, 0, 0, 8589, 8592, 1, 0, 0, 0, 8590, 8588, 1, 0, 0, 0, 8590, 8591, 1, 0, 0, 0, 8591, 1115, 1, 0, 0, 0, 8592, 8590, 1, 0, 0, 0, 8593, 8594, 3, 1204, 602, 0, 8594, 8595, 5, 36, 0, 0, 8595, 8596, 3, 1380, 690, 0, 8596, 8600, 1, 0, 0, 0, 8597, 8598, 5, 53, 0, 0, 8598, 8600, 3, 1204, 602, 0, 8599, 8593, 1, 0, 0, 0, 8599, 8597, 1, 0, 0, 0, 8600, 1117, 1, 0, 0, 0, 8601, 8603, 5, 408, 0, 0, 8602, 8601, 1, 0, 0, 0, 8602, 8603, 1, 0, 0, 0, 8603, 8604, 1, 0, 0, 0, 8604, 8613, 3, 1122, 561, 0, 8605, 8614, 3, 1120, 560, 0, 8606, 8611, 5, 35, 0, 0, 8607, 8608, 5, 4, 0, 0, 8608, 8609, 3, 1356, 678, 0, 8609, 8610, 5, 5, 0, 0, 8610, 8612, 1, 0, 0, 0, 8611, 8607, 1, 0, 0, 0, 8611, 8612, 1, 0, 0, 0, 8612, 8614, 1, 0, 0, 0, 8613, 8605, 1, 0, 0, 0, 8613, 8606, 1, 0, 0, 0, 8614, 8620, 1, 0, 0, 0, 8615, 8616, 3, 1336, 668, 0, 8616, 8617, 5, 27, 0, 0, 8617, 8618, 7, 42, 0, 0, 8618, 8620, 1, 0, 0, 0, 8619, 8602, 1, 0, 0, 0, 8619, 8615, 1, 0, 0, 0, 8620, 1119, 1, 0, 0, 0, 8621, 8623, 5, 4, 0, 0, 8622, 8624, 3, 1356, 678, 0, 8623, 8622, 1, 0, 0, 0, 8623, 8624, 1, 0, 0, 0, 8624, 8625, 1, 0, 0, 0, 8625, 8627, 5, 5, 0, 0, 8626, 8621, 1, 0, 0, 0, 8627, 8630, 1, 0, 0, 0, 8628, 8626, 1, 0, 0, 0, 8628, 8629, 1, 0, 0, 0, 8629, 1121, 1, 0, 0, 0, 8630, 8628, 1, 0, 0, 0, 8631, 8645, 3, 1126, 563, 0, 8632, 8645, 3, 1130, 565, 0, 8633, 8645, 3, 1134, 567, 0, 8634, 8645, 3, 1142, 571, 0, 8635, 8645, 3, 1150, 575, 0, 8636, 8642, 3, 1152, 576, 0, 8637, 8643, 3, 1156, 578, 0, 8638, 8639, 5, 2, 0, 0, 8639, 8640, 3, 1356, 678, 0, 8640, 8641, 5, 3, 0, 0, 8641, 8643, 1, 0, 0, 0, 8642, 8637, 1, 0, 0, 0, 8642, 8638, 1, 0, 0, 0, 8643, 8645, 1, 0, 0, 0, 8644, 8631, 1, 0, 0, 0, 8644, 8632, 1, 0, 0, 0, 8644, 8633, 1, 0, 0, 0, 8644, 8634, 1, 0, 0, 0, 8644, 8635, 1, 0, 0, 0, 8644, 8636, 1, 0, 0, 0, 8645, 1123, 1, 0, 0, 0, 8646, 8651, 3, 1130, 565, 0, 8647, 8651, 3, 1136, 568, 0, 8648, 8651, 3, 1144, 572, 0, 8649, 8651, 3, 1150, 575, 0, 8650, 8646, 1, 0, 0, 0, 8650, 8647, 1, 0, 0, 0, 8650, 8648, 1, 0, 0, 0, 8650, 8649, 1, 0, 0, 0, 8651, 1125, 1, 0, 0, 0, 8652, 8657, 3, 1394, 697, 0, 8653, 8657, 3, 1376, 688, 0, 8654, 8657, 5, 119, 0, 0, 8655, 8657, 5, 126, 0, 0, 8656, 8652, 1, 0, 0, 0, 8656, 8653, 1, 0, 0, 0, 8656, 8654, 1, 0, 0, 0, 8656, 8655, 1, 0, 0, 0, 8657, 8659, 1, 0, 0, 0, 8658, 8660, 3, 526, 263, 0, 8659, 8658, 1, 0, 0, 0, 8659, 8660, 1, 0, 0, 0, 8660, 8661, 1, 0, 0, 0, 8661, 8662, 3, 1128, 564, 0, 8662, 1127, 1, 0, 0, 0, 8663, 8664, 5, 2, 0, 0, 8664, 8665, 3, 1280, 640, 0, 8665, 8666, 5, 3, 0, 0, 8666, 8669, 1, 0, 0, 0, 8667, 8669, 1, 0, 0, 0, 8668, 8663, 1, 0, 0, 0, 8668, 8667, 1, 0, 0, 0, 8669, 1129, 1, 0, 0, 0, 8670, 8687, 5, 394, 0, 0, 8671, 8687, 5, 395, 0, 0, 8672, 8687, 5, 409, 0, 0, 8673, 8687, 5, 381, 0, 0, 8674, 8687, 5, 406, 0, 0, 8675, 8676, 5, 391, 0, 0, 8676, 8687, 3, 1132, 566, 0, 8677, 8678, 5, 190, 0, 0, 8678, 8687, 5, 405, 0, 0, 8679, 8680, 5, 388, 0, 0, 8680, 8687, 3, 1128, 564, 0, 8681, 8682, 5, 387, 0, 0, 8682, 8687, 3, 1128, 564, 0, 8683, 8684, 5, 402, 0, 0, 8684, 8687, 3, 1128, 564, 0, 8685, 8687, 5, 383, 0, 0, 8686, 8670, 1, 0, 0, 0, 8686, 8671, 1, 0, 0, 0, 8686, 8672, 1, 0, 0, 0, 8686, 8673, 1, 0, 0, 0, 8686, 8674, 1, 0, 0, 0, 8686, 8675, 1, 0, 0, 0, 8686, 8677, 1, 0, 0, 0, 8686, 8679, 1, 0, 0, 0, 8686, 8681, 1, 0, 0, 0, 8686, 8683, 1, 0, 0, 0, 8686, 8685, 1, 0, 0, 0, 8687, 1131, 1, 0, 0, 0, 8688, 8689, 5, 2, 0, 0, 8689, 8690, 3, 1356, 678, 0, 8690, 8691, 5, 3, 0, 0, 8691, 8694, 1, 0, 0, 0, 8692, 8694, 1, 0, 0, 0, 8693, 8688, 1, 0, 0, 0, 8693, 8692, 1, 0, 0, 0, 8694, 1133, 1, 0, 0, 0, 8695, 8698, 3, 1138, 569, 0, 8696, 8698, 3, 1140, 570, 0, 8697, 8695, 1, 0, 0, 0, 8697, 8696, 1, 0, 0, 0, 8698, 1135, 1, 0, 0, 0, 8699, 8702, 3, 1138, 569, 0, 8700, 8702, 3, 1140, 570, 0, 8701, 8699, 1, 0, 0, 0, 8701, 8700, 1, 0, 0, 0, 8702, 1137, 1, 0, 0, 0, 8703, 8704, 5, 382, 0, 0, 8704, 8705, 3, 1148, 574, 0, 8705, 8706, 5, 2, 0, 0, 8706, 8707, 3, 1280, 640, 0, 8707, 8708, 5, 3, 0, 0, 8708, 1139, 1, 0, 0, 0, 8709, 8710, 5, 382, 0, 0, 8710, 8711, 3, 1148, 574, 0, 8711, 1141, 1, 0, 0, 0, 8712, 8717, 3, 1146, 573, 0, 8713, 8714, 5, 2, 0, 0, 8714, 8715, 3, 1356, 678, 0, 8715, 8716, 5, 3, 0, 0, 8716, 8718, 1, 0, 0, 0, 8717, 8713, 1, 0, 0, 0, 8717, 8718, 1, 0, 0, 0, 8718, 1143, 1, 0, 0, 0, 8719, 8724, 3, 1146, 573, 0, 8720, 8721, 5, 2, 0, 0, 8721, 8722, 3, 1356, 678, 0, 8722, 8723, 5, 3, 0, 0, 8723, 8725, 1, 0, 0, 0, 8724, 8720, 1, 0, 0, 0, 8724, 8725, 1, 0, 0, 0, 8725, 1145, 1, 0, 0, 0, 8726, 8727, 7, 43, 0, 0, 8727, 8733, 3, 1148, 574, 0, 8728, 8733, 5, 416, 0, 0, 8729, 8730, 5, 398, 0, 0, 8730, 8731, 7, 44, 0, 0, 8731, 8733, 3, 1148, 574, 0, 8732, 8726, 1, 0, 0, 0, 8732, 8728, 1, 0, 0, 0, 8732, 8729, 1, 0, 0, 0, 8733, 1147, 1, 0, 0, 0, 8734, 8737, 5, 367, 0, 0, 8735, 8737, 1, 0, 0, 0, 8736, 8734, 1, 0, 0, 0, 8736, 8735, 1, 0, 0, 0, 8737, 1149, 1, 0, 0, 0, 8738, 8743, 7, 45, 0, 0, 8739, 8740, 5, 2, 0, 0, 8740, 8741, 3, 1356, 678, 0, 8741, 8742, 5, 3, 0, 0, 8742, 8744, 1, 0, 0, 0, 8743, 8739, 1, 0, 0, 0, 8743, 8744, 1, 0, 0, 0, 8744, 8745, 1, 0, 0, 0, 8745, 8746, 3, 1154, 577, 0, 8746, 1151, 1, 0, 0, 0, 8747, 8748, 5, 396, 0, 0, 8748, 1153, 1, 0, 0, 0, 8749, 8750, 5, 105, 0, 0, 8750, 8751, 5, 411, 0, 0, 8751, 8757, 5, 379, 0, 0, 8752, 8753, 5, 372, 0, 0, 8753, 8754, 5, 411, 0, 0, 8754, 8757, 5, 379, 0, 0, 8755, 8757, 1, 0, 0, 0, 8756, 8749, 1, 0, 0, 0, 8756, 8752, 1, 0, 0, 0, 8756, 8755, 1, 0, 0, 0, 8757, 1155, 1, 0, 0, 0, 8758, 8785, 5, 377, 0, 0, 8759, 8785, 5, 257, 0, 0, 8760, 8785, 5, 176, 0, 0, 8761, 8785, 5, 218, 0, 0, 8762, 8785, 5, 254, 0, 0, 8763, 8785, 3, 1158, 579, 0, 8764, 8765, 5, 377, 0, 0, 8765, 8766, 5, 94, 0, 0, 8766, 8785, 5, 257, 0, 0, 8767, 8768, 5, 176, 0, 0, 8768, 8772, 5, 94, 0, 0, 8769, 8773, 5, 218, 0, 0, 8770, 8773, 5, 254, 0, 0, 8771, 8773, 3, 1158, 579, 0, 8772, 8769, 1, 0, 0, 0, 8772, 8770, 1, 0, 0, 0, 8772, 8771, 1, 0, 0, 0, 8773, 8785, 1, 0, 0, 0, 8774, 8775, 5, 218, 0, 0, 8775, 8778, 5, 94, 0, 0, 8776, 8779, 5, 254, 0, 0, 8777, 8779, 3, 1158, 579, 0, 8778, 8776, 1, 0, 0, 0, 8778, 8777, 1, 0, 0, 0, 8779, 8785, 1, 0, 0, 0, 8780, 8781, 5, 254, 0, 0, 8781, 8782, 5, 94, 0, 0, 8782, 8785, 3, 1158, 579, 0, 8783, 8785, 1, 0, 0, 0, 8784, 8758, 1, 0, 0, 0, 8784, 8759, 1, 0, 0, 0, 8784, 8760, 1, 0, 0, 0, 8784, 8761, 1, 0, 0, 0, 8784, 8762, 1, 0, 0, 0, 8784, 8763, 1, 0, 0, 0, 8784, 8764, 1, 0, 0, 0, 8784, 8767, 1, 0, 0, 0, 8784, 8774, 1, 0, 0, 0, 8784, 8780, 1, 0, 0, 0, 8784, 8783, 1, 0, 0, 0, 8785, 1157, 1, 0, 0, 0, 8786, 8791, 5, 319, 0, 0, 8787, 8788, 5, 2, 0, 0, 8788, 8789, 3, 1356, 678, 0, 8789, 8790, 5, 3, 0, 0, 8790, 8792, 1, 0, 0, 0, 8791, 8787, 1, 0, 0, 0, 8791, 8792, 1, 0, 0, 0, 8792, 1159, 1, 0, 0, 0, 8793, 8794, 5, 197, 0, 0, 8794, 8797, 3, 1162, 581, 0, 8795, 8797, 1, 0, 0, 0, 8796, 8793, 1, 0, 0, 0, 8796, 8795, 1, 0, 0, 0, 8797, 1161, 1, 0, 0, 0, 8798, 8799, 3, 1164, 582, 0, 8799, 1163, 1, 0, 0, 0, 8800, 8802, 3, 1166, 583, 0, 8801, 8803, 3, 1274, 637, 0, 8802, 8801, 1, 0, 0, 0, 8802, 8803, 1, 0, 0, 0, 8803, 1165, 1, 0, 0, 0, 8804, 8809, 3, 1168, 584, 0, 8805, 8806, 7, 46, 0, 0, 8806, 8808, 3, 1168, 584, 0, 8807, 8805, 1, 0, 0, 0, 8808, 8811, 1, 0, 0, 0, 8809, 8807, 1, 0, 0, 0, 8809, 8810, 1, 0, 0, 0, 8810, 1167, 1, 0, 0, 0, 8811, 8809, 1, 0, 0, 0, 8812, 8817, 3, 1170, 585, 0, 8813, 8814, 5, 82, 0, 0, 8814, 8816, 3, 1170, 585, 0, 8815, 8813, 1, 0, 0, 0, 8816, 8819, 1, 0, 0, 0, 8817, 8815, 1, 0, 0, 0, 8817, 8818, 1, 0, 0, 0, 8818, 1169, 1, 0, 0, 0, 8819, 8817, 1, 0, 0, 0, 8820, 8825, 3, 1172, 586, 0, 8821, 8822, 5, 33, 0, 0, 8822, 8824, 3, 1172, 586, 0, 8823, 8821, 1, 0, 0, 0, 8824, 8827, 1, 0, 0, 0, 8825, 8823, 1, 0, 0, 0, 8825, 8826, 1, 0, 0, 0, 8826, 1171, 1, 0, 0, 0, 8827, 8825, 1, 0, 0, 0, 8828, 8840, 3, 1174, 587, 0, 8829, 8831, 5, 77, 0, 0, 8830, 8829, 1, 0, 0, 0, 8830, 8831, 1, 0, 0, 0, 8831, 8832, 1, 0, 0, 0, 8832, 8834, 5, 380, 0, 0, 8833, 8835, 5, 91, 0, 0, 8834, 8833, 1, 0, 0, 0, 8834, 8835, 1, 0, 0, 0, 8835, 8836, 1, 0, 0, 0, 8836, 8837, 3, 1174, 587, 0, 8837, 8838, 5, 33, 0, 0, 8838, 8839, 3, 1174, 587, 0, 8839, 8841, 1, 0, 0, 0, 8840, 8830, 1, 0, 0, 0, 8840, 8841, 1, 0, 0, 0, 8841, 1173, 1, 0, 0, 0, 8842, 8848, 3, 1176, 588, 0, 8843, 8845, 5, 77, 0, 0, 8844, 8843, 1, 0, 0, 0, 8844, 8845, 1, 0, 0, 0, 8845, 8846, 1, 0, 0, 0, 8846, 8847, 5, 68, 0, 0, 8847, 8849, 3, 1306, 653, 0, 8848, 8844, 1, 0, 0, 0, 8848, 8849, 1, 0, 0, 0, 8849, 1175, 1, 0, 0, 0, 8850, 8852, 5, 77, 0, 0, 8851, 8850, 1, 0, 0, 0, 8851, 8852, 1, 0, 0, 0, 8852, 8853, 1, 0, 0, 0, 8853, 8854, 3, 1178, 589, 0, 8854, 1177, 1, 0, 0, 0, 8855, 8857, 3, 1180, 590, 0, 8856, 8858, 7, 47, 0, 0, 8857, 8856, 1, 0, 0, 0, 8857, 8858, 1, 0, 0, 0, 8858, 1179, 1, 0, 0, 0, 8859, 8883, 3, 1182, 591, 0, 8860, 8862, 5, 116, 0, 0, 8861, 8863, 5, 77, 0, 0, 8862, 8861, 1, 0, 0, 0, 8862, 8863, 1, 0, 0, 0, 8863, 8881, 1, 0, 0, 0, 8864, 8882, 5, 78, 0, 0, 8865, 8882, 5, 96, 0, 0, 8866, 8882, 5, 60, 0, 0, 8867, 8882, 5, 358, 0, 0, 8868, 8869, 5, 56, 0, 0, 8869, 8870, 5, 64, 0, 0, 8870, 8882, 3, 1162, 581, 0, 8871, 8872, 5, 268, 0, 0, 8872, 8873, 5, 2, 0, 0, 8873, 8874, 3, 1286, 643, 0, 8874, 8875, 5, 3, 0, 0, 8875, 8882, 1, 0, 0, 0, 8876, 8882, 5, 188, 0, 0, 8877, 8879, 3, 1296, 648, 0, 8878, 8877, 1, 0, 0, 0, 8878, 8879, 1, 0, 0, 0, 8879, 8880, 1, 0, 0, 0, 8880, 8882, 5, 478, 0, 0, 8881, 8864, 1, 0, 0, 0, 8881, 8865, 1, 0, 0, 0, 8881, 8866, 1, 0, 0, 0, 8881, 8867, 1, 0, 0, 0, 8881, 8868, 1, 0, 0, 0, 8881, 8871, 1, 0, 0, 0, 8881, 8876, 1, 0, 0, 0, 8881, 8878, 1, 0, 0, 0, 8882, 8884, 1, 0, 0, 0, 8883, 8860, 1, 0, 0, 0, 8883, 8884, 1, 0, 0, 0, 8884, 1181, 1, 0, 0, 0, 8885, 8897, 3, 1184, 592, 0, 8886, 8887, 7, 48, 0, 0, 8887, 8898, 3, 1184, 592, 0, 8888, 8889, 3, 1278, 639, 0, 8889, 8895, 3, 1268, 634, 0, 8890, 8896, 3, 962, 481, 0, 8891, 8892, 5, 2, 0, 0, 8892, 8893, 3, 1162, 581, 0, 8893, 8894, 5, 3, 0, 0, 8894, 8896, 1, 0, 0, 0, 8895, 8890, 1, 0, 0, 0, 8895, 8891, 1, 0, 0, 0, 8896, 8898, 1, 0, 0, 0, 8897, 8886, 1, 0, 0, 0, 8897, 8888, 1, 0, 0, 0, 8897, 8898, 1, 0, 0, 0, 8898, 1183, 1, 0, 0, 0, 8899, 8912, 3, 1186, 593, 0, 8900, 8902, 5, 77, 0, 0, 8901, 8900, 1, 0, 0, 0, 8901, 8902, 1, 0, 0, 0, 8902, 8907, 1, 0, 0, 0, 8903, 8908, 5, 120, 0, 0, 8904, 8908, 5, 114, 0, 0, 8905, 8906, 5, 127, 0, 0, 8906, 8908, 5, 94, 0, 0, 8907, 8903, 1, 0, 0, 0, 8907, 8904, 1, 0, 0, 0, 8907, 8905, 1, 0, 0, 0, 8908, 8909, 1, 0, 0, 0, 8909, 8910, 3, 1186, 593, 0, 8910, 8911, 3, 1160, 580, 0, 8911, 8913, 1, 0, 0, 0, 8912, 8901, 1, 0, 0, 0, 8912, 8913, 1, 0, 0, 0, 8913, 1185, 1, 0, 0, 0, 8914, 8920, 3, 1188, 594, 0, 8915, 8916, 3, 1274, 637, 0, 8916, 8917, 3, 1188, 594, 0, 8917, 8919, 1, 0, 0, 0, 8918, 8915, 1, 0, 0, 0, 8919, 8922, 1, 0, 0, 0, 8920, 8918, 1, 0, 0, 0, 8920, 8921, 1, 0, 0, 0, 8921, 1187, 1, 0, 0, 0, 8922, 8920, 1, 0, 0, 0, 8923, 8925, 3, 1274, 637, 0, 8924, 8923, 1, 0, 0, 0, 8924, 8925, 1, 0, 0, 0, 8925, 8926, 1, 0, 0, 0, 8926, 8927, 3, 1190, 595, 0, 8927, 1189, 1, 0, 0, 0, 8928, 8933, 3, 1192, 596, 0, 8929, 8930, 7, 49, 0, 0, 8930, 8932, 3, 1192, 596, 0, 8931, 8929, 1, 0, 0, 0, 8932, 8935, 1, 0, 0, 0, 8933, 8931, 1, 0, 0, 0, 8933, 8934, 1, 0, 0, 0, 8934, 1191, 1, 0, 0, 0, 8935, 8933, 1, 0, 0, 0, 8936, 8941, 3, 1194, 597, 0, 8937, 8938, 7, 50, 0, 0, 8938, 8940, 3, 1194, 597, 0, 8939, 8937, 1, 0, 0, 0, 8940, 8943, 1, 0, 0, 0, 8941, 8939, 1, 0, 0, 0, 8941, 8942, 1, 0, 0, 0, 8942, 1193, 1, 0, 0, 0, 8943, 8941, 1, 0, 0, 0, 8944, 8947, 3, 1196, 598, 0, 8945, 8946, 5, 15, 0, 0, 8946, 8948, 3, 1162, 581, 0, 8947, 8945, 1, 0, 0, 0, 8947, 8948, 1, 0, 0, 0, 8948, 1195, 1, 0, 0, 0, 8949, 8951, 7, 49, 0, 0, 8950, 8949, 1, 0, 0, 0, 8950, 8951, 1, 0, 0, 0, 8951, 8952, 1, 0, 0, 0, 8952, 8953, 3, 1198, 599, 0, 8953, 1197, 1, 0, 0, 0, 8954, 8959, 3, 1200, 600, 0, 8955, 8956, 5, 142, 0, 0, 8956, 8957, 5, 411, 0, 0, 8957, 8958, 5, 379, 0, 0, 8958, 8960, 3, 1162, 581, 0, 8959, 8955, 1, 0, 0, 0, 8959, 8960, 1, 0, 0, 0, 8960, 1199, 1, 0, 0, 0, 8961, 8964, 3, 1202, 601, 0, 8962, 8963, 5, 43, 0, 0, 8963, 8965, 3, 524, 262, 0, 8964, 8962, 1, 0, 0, 0, 8964, 8965, 1, 0, 0, 0, 8965, 1201, 1, 0, 0, 0, 8966, 8971, 3, 1206, 603, 0, 8967, 8968, 5, 26, 0, 0, 8968, 8970, 3, 1118, 559, 0, 8969, 8967, 1, 0, 0, 0, 8970, 8973, 1, 0, 0, 0, 8971, 8969, 1, 0, 0, 0, 8971, 8972, 1, 0, 0, 0, 8972, 1203, 1, 0, 0, 0, 8973, 8971, 1, 0, 0, 0, 8974, 8975, 6, 602, -1, 0, 8975, 8982, 3, 1206, 603, 0, 8976, 8977, 7, 49, 0, 0, 8977, 8982, 3, 1204, 602, 9, 8978, 8979, 3, 1274, 637, 0, 8979, 8980, 3, 1204, 602, 3, 8980, 8982, 1, 0, 0, 0, 8981, 8974, 1, 0, 0, 0, 8981, 8976, 1, 0, 0, 0, 8981, 8978, 1, 0, 0, 0, 8982, 9022, 1, 0, 0, 0, 8983, 8984, 10, 8, 0, 0, 8984, 8985, 5, 15, 0, 0, 8985, 9021, 3, 1204, 602, 9, 8986, 8987, 10, 7, 0, 0, 8987, 8988, 7, 50, 0, 0, 8988, 9021, 3, 1204, 602, 8, 8989, 8990, 10, 6, 0, 0, 8990, 8991, 7, 49, 0, 0, 8991, 9021, 3, 1204, 602, 7, 8992, 8993, 10, 5, 0, 0, 8993, 8994, 3, 1274, 637, 0, 8994, 8995, 3, 1204, 602, 6, 8995, 9021, 1, 0, 0, 0, 8996, 8997, 10, 4, 0, 0, 8997, 8998, 7, 48, 0, 0, 8998, 9021, 3, 1204, 602, 5, 8999, 9000, 10, 10, 0, 0, 9000, 9001, 5, 26, 0, 0, 9001, 9021, 3, 1118, 559, 0, 9002, 9003, 10, 2, 0, 0, 9003, 9021, 3, 1274, 637, 0, 9004, 9005, 10, 1, 0, 0, 9005, 9007, 5, 116, 0, 0, 9006, 9008, 5, 77, 0, 0, 9007, 9006, 1, 0, 0, 0, 9007, 9008, 1, 0, 0, 0, 9008, 9018, 1, 0, 0, 0, 9009, 9010, 5, 56, 0, 0, 9010, 9011, 5, 64, 0, 0, 9011, 9019, 3, 1204, 602, 0, 9012, 9013, 5, 268, 0, 0, 9013, 9014, 5, 2, 0, 0, 9014, 9015, 3, 1286, 643, 0, 9015, 9016, 5, 3, 0, 0, 9016, 9019, 1, 0, 0, 0, 9017, 9019, 5, 188, 0, 0, 9018, 9009, 1, 0, 0, 0, 9018, 9012, 1, 0, 0, 0, 9018, 9017, 1, 0, 0, 0, 9019, 9021, 1, 0, 0, 0, 9020, 8983, 1, 0, 0, 0, 9020, 8986, 1, 0, 0, 0, 9020, 8989, 1, 0, 0, 0, 9020, 8992, 1, 0, 0, 0, 9020, 8996, 1, 0, 0, 0, 9020, 8999, 1, 0, 0, 0, 9020, 9002, 1, 0, 0, 0, 9020, 9004, 1, 0, 0, 0, 9021, 9024, 1, 0, 0, 0, 9022, 9020, 1, 0, 0, 0, 9022, 9023, 1, 0, 0, 0, 9023, 1205, 1, 0, 0, 0, 9024, 9022, 1, 0, 0, 0, 9025, 9026, 5, 389, 0, 0, 9026, 9062, 3, 962, 481, 0, 9027, 9030, 5, 35, 0, 0, 9028, 9031, 3, 962, 481, 0, 9029, 9031, 3, 1288, 644, 0, 9030, 9028, 1, 0, 0, 0, 9030, 9029, 1, 0, 0, 0, 9031, 9062, 1, 0, 0, 0, 9032, 9033, 5, 28, 0, 0, 9033, 9062, 3, 1326, 663, 0, 9034, 9035, 5, 470, 0, 0, 9035, 9036, 5, 2, 0, 0, 9036, 9037, 3, 1280, 640, 0, 9037, 9038, 5, 3, 0, 0, 9038, 9062, 1, 0, 0, 0, 9039, 9040, 5, 98, 0, 0, 9040, 9062, 3, 962, 481, 0, 9041, 9062, 3, 1318, 659, 0, 9042, 9062, 3, 1348, 674, 0, 9043, 9062, 3, 1208, 604, 0, 9044, 9045, 5, 2, 0, 0, 9045, 9046, 3, 1162, 581, 0, 9046, 9047, 5, 3, 0, 0, 9047, 9048, 3, 1326, 663, 0, 9048, 9062, 1, 0, 0, 0, 9049, 9062, 3, 1308, 654, 0, 9050, 9062, 3, 1212, 606, 0, 9051, 9053, 3, 962, 481, 0, 9052, 9054, 3, 1324, 662, 0, 9053, 9052, 1, 0, 0, 0, 9053, 9054, 1, 0, 0, 0, 9054, 9062, 1, 0, 0, 0, 9055, 9062, 3, 1264, 632, 0, 9056, 9062, 3, 1266, 633, 0, 9057, 9058, 3, 1262, 631, 0, 9058, 9059, 5, 125, 0, 0, 9059, 9060, 3, 1262, 631, 0, 9060, 9062, 1, 0, 0, 0, 9061, 9025, 1, 0, 0, 0, 9061, 9027, 1, 0, 0, 0, 9061, 9032, 1, 0, 0, 0, 9061, 9034, 1, 0, 0, 0, 9061, 9039, 1, 0, 0, 0, 9061, 9041, 1, 0, 0, 0, 9061, 9042, 1, 0, 0, 0, 9061, 9043, 1, 0, 0, 0, 9061, 9044, 1, 0, 0, 0, 9061, 9049, 1, 0, 0, 0, 9061, 9050, 1, 0, 0, 0, 9061, 9051, 1, 0, 0, 0, 9061, 9055, 1, 0, 0, 0, 9061, 9056, 1, 0, 0, 0, 9061, 9057, 1, 0, 0, 0, 9062, 1207, 1, 0, 0, 0, 9063, 9064, 5, 661, 0, 0, 9064, 1209, 1, 0, 0, 0, 9065, 9066, 3, 1346, 673, 0, 9066, 9085, 5, 2, 0, 0, 9067, 9071, 3, 1282, 641, 0, 9068, 9069, 5, 6, 0, 0, 9069, 9070, 5, 101, 0, 0, 9070, 9072, 3, 1284, 642, 0, 9071, 9068, 1, 0, 0, 0, 9071, 9072, 1, 0, 0, 0, 9072, 9073, 1, 0, 0, 0, 9073, 9074, 3, 996, 498, 0, 9074, 9086, 1, 0, 0, 0, 9075, 9076, 5, 101, 0, 0, 9076, 9077, 3, 1284, 642, 0, 9077, 9078, 3, 996, 498, 0, 9078, 9086, 1, 0, 0, 0, 9079, 9080, 7, 51, 0, 0, 9080, 9081, 3, 1282, 641, 0, 9081, 9082, 3, 996, 498, 0, 9082, 9086, 1, 0, 0, 0, 9083, 9086, 5, 9, 0, 0, 9084, 9086, 1, 0, 0, 0, 9085, 9067, 1, 0, 0, 0, 9085, 9075, 1, 0, 0, 0, 9085, 9079, 1, 0, 0, 0, 9085, 9083, 1, 0, 0, 0, 9085, 9084, 1, 0, 0, 0, 9086, 9087, 1, 0, 0, 0, 9087, 9088, 5, 3, 0, 0, 9088, 1211, 1, 0, 0, 0, 9089, 9090, 3, 1210, 605, 0, 9090, 9091, 3, 1236, 618, 0, 9091, 9092, 3, 1238, 619, 0, 9092, 9093, 3, 1246, 623, 0, 9093, 9096, 1, 0, 0, 0, 9094, 9096, 3, 1216, 608, 0, 9095, 9089, 1, 0, 0, 0, 9095, 9094, 1, 0, 0, 0, 9096, 1213, 1, 0, 0, 0, 9097, 9100, 3, 1210, 605, 0, 9098, 9100, 3, 1216, 608, 0, 9099, 9097, 1, 0, 0, 0, 9099, 9098, 1, 0, 0, 0, 9100, 1215, 1, 0, 0, 0, 9101, 9102, 5, 108, 0, 0, 9102, 9103, 5, 62, 0, 0, 9103, 9104, 5, 2, 0, 0, 9104, 9105, 3, 1162, 581, 0, 9105, 9106, 5, 3, 0, 0, 9106, 9279, 1, 0, 0, 0, 9107, 9279, 5, 48, 0, 0, 9108, 9113, 5, 50, 0, 0, 9109, 9110, 5, 2, 0, 0, 9110, 9111, 3, 1356, 678, 0, 9111, 9112, 5, 3, 0, 0, 9112, 9114, 1, 0, 0, 0, 9113, 9109, 1, 0, 0, 0, 9113, 9114, 1, 0, 0, 0, 9114, 9279, 1, 0, 0, 0, 9115, 9120, 5, 51, 0, 0, 9116, 9117, 5, 2, 0, 0, 9117, 9118, 3, 1356, 678, 0, 9118, 9119, 5, 3, 0, 0, 9119, 9121, 1, 0, 0, 0, 9120, 9116, 1, 0, 0, 0, 9120, 9121, 1, 0, 0, 0, 9121, 9279, 1, 0, 0, 0, 9122, 9127, 5, 75, 0, 0, 9123, 9124, 5, 2, 0, 0, 9124, 9125, 3, 1356, 678, 0, 9125, 9126, 5, 3, 0, 0, 9126, 9128, 1, 0, 0, 0, 9127, 9123, 1, 0, 0, 0, 9127, 9128, 1, 0, 0, 0, 9128, 9279, 1, 0, 0, 0, 9129, 9134, 5, 76, 0, 0, 9130, 9131, 5, 2, 0, 0, 9131, 9132, 3, 1356, 678, 0, 9132, 9133, 5, 3, 0, 0, 9133, 9135, 1, 0, 0, 0, 9134, 9130, 1, 0, 0, 0, 9134, 9135, 1, 0, 0, 0, 9135, 9279, 1, 0, 0, 0, 9136, 9279, 5, 49, 0, 0, 9137, 9279, 5, 52, 0, 0, 9138, 9279, 5, 89, 0, 0, 9139, 9279, 5, 99, 0, 0, 9140, 9279, 5, 47, 0, 0, 9141, 9279, 5, 111, 0, 0, 9142, 9143, 5, 41, 0, 0, 9143, 9144, 5, 2, 0, 0, 9144, 9145, 3, 1162, 581, 0, 9145, 9146, 5, 36, 0, 0, 9146, 9147, 3, 1118, 559, 0, 9147, 9148, 5, 3, 0, 0, 9148, 9279, 1, 0, 0, 0, 9149, 9150, 5, 390, 0, 0, 9150, 9151, 5, 2, 0, 0, 9151, 9152, 3, 1292, 646, 0, 9152, 9153, 5, 3, 0, 0, 9153, 9279, 1, 0, 0, 0, 9154, 9155, 5, 489, 0, 0, 9155, 9156, 5, 2, 0, 0, 9156, 9159, 3, 1162, 581, 0, 9157, 9158, 5, 6, 0, 0, 9158, 9160, 3, 1296, 648, 0, 9159, 9157, 1, 0, 0, 0, 9159, 9160, 1, 0, 0, 0, 9160, 9161, 1, 0, 0, 0, 9161, 9162, 5, 3, 0, 0, 9162, 9279, 1, 0, 0, 0, 9163, 9164, 5, 403, 0, 0, 9164, 9165, 5, 2, 0, 0, 9165, 9166, 3, 1298, 649, 0, 9166, 9167, 5, 3, 0, 0, 9167, 9279, 1, 0, 0, 0, 9168, 9169, 5, 404, 0, 0, 9169, 9170, 5, 2, 0, 0, 9170, 9171, 3, 1300, 650, 0, 9171, 9172, 5, 3, 0, 0, 9172, 9279, 1, 0, 0, 0, 9173, 9174, 5, 410, 0, 0, 9174, 9175, 5, 2, 0, 0, 9175, 9176, 3, 1302, 651, 0, 9176, 9177, 5, 3, 0, 0, 9177, 9279, 1, 0, 0, 0, 9178, 9179, 5, 413, 0, 0, 9179, 9180, 5, 2, 0, 0, 9180, 9181, 3, 1162, 581, 0, 9181, 9182, 5, 36, 0, 0, 9182, 9183, 3, 1118, 559, 0, 9183, 9184, 5, 3, 0, 0, 9184, 9279, 1, 0, 0, 0, 9185, 9186, 5, 414, 0, 0, 9186, 9188, 5, 2, 0, 0, 9187, 9189, 7, 52, 0, 0, 9188, 9187, 1, 0, 0, 0, 9188, 9189, 1, 0, 0, 0, 9189, 9190, 1, 0, 0, 0, 9190, 9191, 3, 1304, 652, 0, 9191, 9192, 5, 3, 0, 0, 9192, 9279, 1, 0, 0, 0, 9193, 9194, 5, 401, 0, 0, 9194, 9195, 5, 2, 0, 0, 9195, 9196, 3, 1162, 581, 0, 9196, 9197, 5, 6, 0, 0, 9197, 9198, 3, 1162, 581, 0, 9198, 9199, 5, 3, 0, 0, 9199, 9279, 1, 0, 0, 0, 9200, 9201, 5, 386, 0, 0, 9201, 9202, 5, 2, 0, 0, 9202, 9203, 3, 1280, 640, 0, 9203, 9204, 5, 3, 0, 0, 9204, 9279, 1, 0, 0, 0, 9205, 9206, 5, 392, 0, 0, 9206, 9207, 5, 2, 0, 0, 9207, 9208, 3, 1280, 640, 0, 9208, 9209, 5, 3, 0, 0, 9209, 9279, 1, 0, 0, 0, 9210, 9211, 5, 397, 0, 0, 9211, 9212, 5, 2, 0, 0, 9212, 9213, 3, 1280, 640, 0, 9213, 9214, 5, 3, 0, 0, 9214, 9279, 1, 0, 0, 0, 9215, 9216, 5, 425, 0, 0, 9216, 9217, 5, 2, 0, 0, 9217, 9218, 3, 1280, 640, 0, 9218, 9219, 5, 3, 0, 0, 9219, 9279, 1, 0, 0, 0, 9220, 9221, 5, 426, 0, 0, 9221, 9222, 5, 2, 0, 0, 9222, 9223, 5, 259, 0, 0, 9223, 9229, 3, 1380, 690, 0, 9224, 9227, 5, 6, 0, 0, 9225, 9228, 3, 1222, 611, 0, 9226, 9228, 3, 1280, 640, 0, 9227, 9225, 1, 0, 0, 0, 9227, 9226, 1, 0, 0, 0, 9228, 9230, 1, 0, 0, 0, 9229, 9224, 1, 0, 0, 0, 9229, 9230, 1, 0, 0, 0, 9230, 9231, 1, 0, 0, 0, 9231, 9232, 5, 3, 0, 0, 9232, 9279, 1, 0, 0, 0, 9233, 9234, 5, 427, 0, 0, 9234, 9235, 5, 2, 0, 0, 9235, 9236, 3, 1206, 603, 0, 9236, 9237, 3, 1232, 616, 0, 9237, 9238, 5, 3, 0, 0, 9238, 9279, 1, 0, 0, 0, 9239, 9240, 5, 428, 0, 0, 9240, 9241, 5, 2, 0, 0, 9241, 9242, 3, 1224, 612, 0, 9242, 9243, 5, 3, 0, 0, 9243, 9279, 1, 0, 0, 0, 9244, 9245, 5, 429, 0, 0, 9245, 9246, 5, 2, 0, 0, 9246, 9247, 3, 1228, 614, 0, 9247, 9248, 3, 1162, 581, 0, 9248, 9249, 3, 1230, 615, 0, 9249, 9250, 5, 3, 0, 0, 9250, 9279, 1, 0, 0, 0, 9251, 9252, 5, 430, 0, 0, 9252, 9253, 5, 2, 0, 0, 9253, 9254, 5, 259, 0, 0, 9254, 9257, 3, 1380, 690, 0, 9255, 9256, 5, 6, 0, 0, 9256, 9258, 3, 1162, 581, 0, 9257, 9255, 1, 0, 0, 0, 9257, 9258, 1, 0, 0, 0, 9258, 9259, 1, 0, 0, 0, 9259, 9260, 5, 3, 0, 0, 9260, 9279, 1, 0, 0, 0, 9261, 9262, 5, 431, 0, 0, 9262, 9263, 5, 2, 0, 0, 9263, 9264, 5, 376, 0, 0, 9264, 9265, 3, 1162, 581, 0, 9265, 9266, 5, 6, 0, 0, 9266, 9267, 3, 1218, 609, 0, 9267, 9268, 3, 1220, 610, 0, 9268, 9269, 5, 3, 0, 0, 9269, 9279, 1, 0, 0, 0, 9270, 9271, 5, 432, 0, 0, 9271, 9272, 5, 2, 0, 0, 9272, 9273, 3, 1228, 614, 0, 9273, 9274, 3, 1162, 581, 0, 9274, 9275, 5, 36, 0, 0, 9275, 9276, 3, 1122, 561, 0, 9276, 9277, 5, 3, 0, 0, 9277, 9279, 1, 0, 0, 0, 9278, 9101, 1, 0, 0, 0, 9278, 9107, 1, 0, 0, 0, 9278, 9108, 1, 0, 0, 0, 9278, 9115, 1, 0, 0, 0, 9278, 9122, 1, 0, 0, 0, 9278, 9129, 1, 0, 0, 0, 9278, 9136, 1, 0, 0, 0, 9278, 9137, 1, 0, 0, 0, 9278, 9138, 1, 0, 0, 0, 9278, 9139, 1, 0, 0, 0, 9278, 9140, 1, 0, 0, 0, 9278, 9141, 1, 0, 0, 0, 9278, 9142, 1, 0, 0, 0, 9278, 9149, 1, 0, 0, 0, 9278, 9154, 1, 0, 0, 0, 9278, 9163, 1, 0, 0, 0, 9278, 9168, 1, 0, 0, 0, 9278, 9173, 1, 0, 0, 0, 9278, 9178, 1, 0, 0, 0, 9278, 9185, 1, 0, 0, 0, 9278, 9193, 1, 0, 0, 0, 9278, 9200, 1, 0, 0, 0, 9278, 9205, 1, 0, 0, 0, 9278, 9210, 1, 0, 0, 0, 9278, 9215, 1, 0, 0, 0, 9278, 9220, 1, 0, 0, 0, 9278, 9233, 1, 0, 0, 0, 9278, 9239, 1, 0, 0, 0, 9278, 9244, 1, 0, 0, 0, 9278, 9251, 1, 0, 0, 0, 9278, 9261, 1, 0, 0, 0, 9278, 9270, 1, 0, 0, 0, 9279, 1217, 1, 0, 0, 0, 9280, 9281, 5, 368, 0, 0, 9281, 9286, 3, 1162, 581, 0, 9282, 9283, 5, 368, 0, 0, 9283, 9284, 5, 262, 0, 0, 9284, 9286, 5, 450, 0, 0, 9285, 9280, 1, 0, 0, 0, 9285, 9282, 1, 0, 0, 0, 9286, 1219, 1, 0, 0, 0, 9287, 9288, 5, 6, 0, 0, 9288, 9289, 5, 332, 0, 0, 9289, 9299, 5, 378, 0, 0, 9290, 9291, 5, 6, 0, 0, 9291, 9292, 5, 332, 0, 0, 9292, 9299, 5, 262, 0, 0, 9293, 9294, 5, 6, 0, 0, 9294, 9295, 5, 332, 0, 0, 9295, 9296, 5, 262, 0, 0, 9296, 9299, 5, 450, 0, 0, 9297, 9299, 1, 0, 0, 0, 9298, 9287, 1, 0, 0, 0, 9298, 9290, 1, 0, 0, 0, 9298, 9293, 1, 0, 0, 0, 9298, 9297, 1, 0, 0, 0, 9299, 1221, 1, 0, 0, 0, 9300, 9301, 5, 417, 0, 0, 9301, 9302, 5, 2, 0, 0, 9302, 9303, 3, 1224, 612, 0, 9303, 9304, 5, 3, 0, 0, 9304, 1223, 1, 0, 0, 0, 9305, 9310, 3, 1226, 613, 0, 9306, 9307, 5, 6, 0, 0, 9307, 9309, 3, 1226, 613, 0, 9308, 9306, 1, 0, 0, 0, 9309, 9312, 1, 0, 0, 0, 9310, 9308, 1, 0, 0, 0, 9310, 9311, 1, 0, 0, 0, 9311, 1225, 1, 0, 0, 0, 9312, 9310, 1, 0, 0, 0, 9313, 9316, 3, 1162, 581, 0, 9314, 9315, 5, 36, 0, 0, 9315, 9317, 3, 1380, 690, 0, 9316, 9314, 1, 0, 0, 0, 9316, 9317, 1, 0, 0, 0, 9317, 1227, 1, 0, 0, 0, 9318, 9319, 7, 53, 0, 0, 9319, 1229, 1, 0, 0, 0, 9320, 9321, 5, 285, 0, 0, 9321, 9326, 5, 371, 0, 0, 9322, 9323, 5, 340, 0, 0, 9323, 9326, 5, 371, 0, 0, 9324, 9326, 1, 0, 0, 0, 9325, 9320, 1, 0, 0, 0, 9325, 9322, 1, 0, 0, 0, 9325, 9324, 1, 0, 0, 0, 9326, 1231, 1, 0, 0, 0, 9327, 9328, 5, 279, 0, 0, 9328, 9343, 3, 1206, 603, 0, 9329, 9330, 5, 279, 0, 0, 9330, 9331, 3, 1206, 603, 0, 9331, 9332, 3, 1234, 617, 0, 9332, 9343, 1, 0, 0, 0, 9333, 9334, 5, 279, 0, 0, 9334, 9335, 3, 1234, 617, 0, 9335, 9336, 3, 1206, 603, 0, 9336, 9343, 1, 0, 0, 0, 9337, 9338, 5, 279, 0, 0, 9338, 9339, 3, 1234, 617, 0, 9339, 9340, 3, 1206, 603, 0, 9340, 9341, 3, 1234, 617, 0, 9341, 9343, 1, 0, 0, 0, 9342, 9327, 1, 0, 0, 0, 9342, 9329, 1, 0, 0, 0, 9342, 9333, 1, 0, 0, 0, 9342, 9337, 1, 0, 0, 0, 9343, 1233, 1, 0, 0, 0, 9344, 9345, 5, 147, 0, 0, 9345, 9346, 7, 54, 0, 0, 9346, 1235, 1, 0, 0, 0, 9347, 9348, 5, 479, 0, 0, 9348, 9349, 5, 66, 0, 0, 9349, 9350, 5, 2, 0, 0, 9350, 9351, 3, 998, 499, 0, 9351, 9352, 5, 3, 0, 0, 9352, 9355, 1, 0, 0, 0, 9353, 9355, 1, 0, 0, 0, 9354, 9347, 1, 0, 0, 0, 9354, 9353, 1, 0, 0, 0, 9355, 1237, 1, 0, 0, 0, 9356, 9357, 5, 480, 0, 0, 9357, 9358, 5, 2, 0, 0, 9358, 9359, 5, 103, 0, 0, 9359, 9360, 3, 1162, 581, 0, 9360, 9361, 5, 3, 0, 0, 9361, 9364, 1, 0, 0, 0, 9362, 9364, 1, 0, 0, 0, 9363, 9356, 1, 0, 0, 0, 9363, 9362, 1, 0, 0, 0, 9364, 1239, 1, 0, 0, 0, 9365, 9366, 5, 104, 0, 0, 9366, 9369, 3, 1242, 621, 0, 9367, 9369, 1, 0, 0, 0, 9368, 9365, 1, 0, 0, 0, 9368, 9367, 1, 0, 0, 0, 9369, 1241, 1, 0, 0, 0, 9370, 9375, 3, 1244, 622, 0, 9371, 9372, 5, 6, 0, 0, 9372, 9374, 3, 1244, 622, 0, 9373, 9371, 1, 0, 0, 0, 9374, 9377, 1, 0, 0, 0, 9375, 9373, 1, 0, 0, 0, 9375, 9376, 1, 0, 0, 0, 9376, 1243, 1, 0, 0, 0, 9377, 9375, 1, 0, 0, 0, 9378, 9379, 3, 1372, 686, 0, 9379, 9380, 5, 36, 0, 0, 9380, 9381, 3, 1248, 624, 0, 9381, 1245, 1, 0, 0, 0, 9382, 9385, 5, 124, 0, 0, 9383, 9386, 3, 1248, 624, 0, 9384, 9386, 3, 1372, 686, 0, 9385, 9383, 1, 0, 0, 0, 9385, 9384, 1, 0, 0, 0, 9386, 9389, 1, 0, 0, 0, 9387, 9389, 1, 0, 0, 0, 9388, 9382, 1, 0, 0, 0, 9388, 9387, 1, 0, 0, 0, 9389, 1247, 1, 0, 0, 0, 9390, 9391, 5, 2, 0, 0, 9391, 9392, 3, 1250, 625, 0, 9392, 9393, 3, 1252, 626, 0, 9393, 9394, 3, 996, 498, 0, 9394, 9395, 3, 1254, 627, 0, 9395, 9396, 5, 3, 0, 0, 9396, 1249, 1, 0, 0, 0, 9397, 9400, 3, 1372, 686, 0, 9398, 9400, 1, 0, 0, 0, 9399, 9397, 1, 0, 0, 0, 9399, 9398, 1, 0, 0, 0, 9400, 1251, 1, 0, 0, 0, 9401, 9402, 5, 278, 0, 0, 9402, 9403, 5, 147, 0, 0, 9403, 9406, 3, 1280, 640, 0, 9404, 9406, 1, 0, 0, 0, 9405, 9401, 1, 0, 0, 0, 9405, 9404, 1, 0, 0, 0, 9406, 1253, 1, 0, 0, 0, 9407, 9408, 5, 292, 0, 0, 9408, 9409, 3, 1256, 628, 0, 9409, 9410, 3, 1260, 630, 0, 9410, 9421, 1, 0, 0, 0, 9411, 9412, 5, 313, 0, 0, 9412, 9413, 3, 1256, 628, 0, 9413, 9414, 3, 1260, 630, 0, 9414, 9421, 1, 0, 0, 0, 9415, 9416, 5, 481, 0, 0, 9416, 9417, 3, 1256, 628, 0, 9417, 9418, 3, 1260, 630, 0, 9418, 9421, 1, 0, 0, 0, 9419, 9421, 1, 0, 0, 0, 9420, 9407, 1, 0, 0, 0, 9420, 9411, 1, 0, 0, 0, 9420, 9415, 1, 0, 0, 0, 9420, 9419, 1, 0, 0, 0, 9421, 1255, 1, 0, 0, 0, 9422, 9429, 3, 1258, 629, 0, 9423, 9424, 5, 380, 0, 0, 9424, 9425, 3, 1258, 629, 0, 9425, 9426, 5, 33, 0, 0, 9426, 9427, 3, 1258, 629, 0, 9427, 9429, 1, 0, 0, 0, 9428, 9422, 1, 0, 0, 0, 9428, 9423, 1, 0, 0, 0, 9429, 1257, 1, 0, 0, 0, 9430, 9431, 5, 355, 0, 0, 9431, 9438, 7, 55, 0, 0, 9432, 9433, 5, 434, 0, 0, 9433, 9438, 5, 407, 0, 0, 9434, 9435, 3, 1162, 581, 0, 9435, 9436, 7, 55, 0, 0, 9436, 9438, 1, 0, 0, 0, 9437, 9430, 1, 0, 0, 0, 9437, 9432, 1, 0, 0, 0, 9437, 9434, 1, 0, 0, 0, 9438, 1259, 1, 0, 0, 0, 9439, 9446, 5, 199, 0, 0, 9440, 9441, 5, 434, 0, 0, 9441, 9447, 5, 407, 0, 0, 9442, 9447, 5, 66, 0, 0, 9443, 9447, 5, 467, 0, 0, 9444, 9445, 5, 262, 0, 0, 9445, 9447, 5, 482, 0, 0, 9446, 9440, 1, 0, 0, 0, 9446, 9442, 1, 0, 0, 0, 9446, 9443, 1, 0, 0, 0, 9446, 9444, 1, 0, 0, 0, 9447, 9450, 1, 0, 0, 0, 9448, 9450, 1, 0, 0, 0, 9449, 9439, 1, 0, 0, 0, 9449, 9448, 1, 0, 0, 0, 9450, 1261, 1, 0, 0, 0, 9451, 9452, 5, 407, 0, 0, 9452, 9454, 5, 2, 0, 0, 9453, 9455, 3, 1280, 640, 0, 9454, 9453, 1, 0, 0, 0, 9454, 9455, 1, 0, 0, 0, 9455, 9456, 1, 0, 0, 0, 9456, 9464, 5, 3, 0, 0, 9457, 9458, 5, 2, 0, 0, 9458, 9459, 3, 1280, 640, 0, 9459, 9460, 5, 6, 0, 0, 9460, 9461, 3, 1162, 581, 0, 9461, 9462, 5, 3, 0, 0, 9462, 9464, 1, 0, 0, 0, 9463, 9451, 1, 0, 0, 0, 9463, 9457, 1, 0, 0, 0, 9464, 1263, 1, 0, 0, 0, 9465, 9466, 5, 407, 0, 0, 9466, 9468, 5, 2, 0, 0, 9467, 9469, 3, 1280, 640, 0, 9468, 9467, 1, 0, 0, 0, 9468, 9469, 1, 0, 0, 0, 9469, 9470, 1, 0, 0, 0, 9470, 9471, 5, 3, 0, 0, 9471, 1265, 1, 0, 0, 0, 9472, 9473, 5, 2, 0, 0, 9473, 9474, 3, 1280, 640, 0, 9474, 9475, 5, 6, 0, 0, 9475, 9476, 3, 1162, 581, 0, 9476, 9477, 5, 3, 0, 0, 9477, 1267, 1, 0, 0, 0, 9478, 9479, 7, 56, 0, 0, 9479, 1269, 1, 0, 0, 0, 9480, 9483, 5, 29, 0, 0, 9481, 9483, 3, 1272, 636, 0, 9482, 9480, 1, 0, 0, 0, 9482, 9481, 1, 0, 0, 0, 9483, 1271, 1, 0, 0, 0, 9484, 9485, 7, 57, 0, 0, 9485, 1273, 1, 0, 0, 0, 9486, 9493, 5, 29, 0, 0, 9487, 9488, 5, 271, 0, 0, 9488, 9489, 5, 2, 0, 0, 9489, 9490, 3, 684, 342, 0, 9490, 9491, 5, 3, 0, 0, 9491, 9493, 1, 0, 0, 0, 9492, 9486, 1, 0, 0, 0, 9492, 9487, 1, 0, 0, 0, 9493, 1275, 1, 0, 0, 0, 9494, 9501, 3, 1270, 635, 0, 9495, 9496, 5, 271, 0, 0, 9496, 9497, 5, 2, 0, 0, 9497, 9498, 3, 684, 342, 0, 9498, 9499, 5, 3, 0, 0, 9499, 9501, 1, 0, 0, 0, 9500, 9494, 1, 0, 0, 0, 9500, 9495, 1, 0, 0, 0, 9501, 1277, 1, 0, 0, 0, 9502, 9515, 3, 1270, 635, 0, 9503, 9504, 5, 271, 0, 0, 9504, 9505, 5, 2, 0, 0, 9505, 9506, 3, 684, 342, 0, 9506, 9507, 5, 3, 0, 0, 9507, 9515, 1, 0, 0, 0, 9508, 9515, 5, 120, 0, 0, 9509, 9510, 5, 77, 0, 0, 9510, 9515, 5, 120, 0, 0, 9511, 9515, 5, 114, 0, 0, 9512, 9513, 5, 77, 0, 0, 9513, 9515, 5, 114, 0, 0, 9514, 9502, 1, 0, 0, 0, 9514, 9503, 1, 0, 0, 0, 9514, 9508, 1, 0, 0, 0, 9514, 9509, 1, 0, 0, 0, 9514, 9511, 1, 0, 0, 0, 9514, 9512, 1, 0, 0, 0, 9515, 1279, 1, 0, 0, 0, 9516, 9521, 3, 1162, 581, 0, 9517, 9518, 5, 6, 0, 0, 9518, 9520, 3, 1162, 581, 0, 9519, 9517, 1, 0, 0, 0, 9520, 9523, 1, 0, 0, 0, 9521, 9519, 1, 0, 0, 0, 9521, 9522, 1, 0, 0, 0, 9522, 1281, 1, 0, 0, 0, 9523, 9521, 1, 0, 0, 0, 9524, 9529, 3, 1284, 642, 0, 9525, 9526, 5, 6, 0, 0, 9526, 9528, 3, 1284, 642, 0, 9527, 9525, 1, 0, 0, 0, 9528, 9531, 1, 0, 0, 0, 9529, 9527, 1, 0, 0, 0, 9529, 9530, 1, 0, 0, 0, 9530, 1283, 1, 0, 0, 0, 9531, 9529, 1, 0, 0, 0, 9532, 9538, 3, 1162, 581, 0, 9533, 9534, 3, 636, 318, 0, 9534, 9535, 7, 58, 0, 0, 9535, 9536, 3, 1162, 581, 0, 9536, 9538, 1, 0, 0, 0, 9537, 9532, 1, 0, 0, 0, 9537, 9533, 1, 0, 0, 0, 9538, 1285, 1, 0, 0, 0, 9539, 9544, 3, 1118, 559, 0, 9540, 9541, 5, 6, 0, 0, 9541, 9543, 3, 1118, 559, 0, 9542, 9540, 1, 0, 0, 0, 9543, 9546, 1, 0, 0, 0, 9544, 9542, 1, 0, 0, 0, 9544, 9545, 1, 0, 0, 0, 9545, 1287, 1, 0, 0, 0, 9546, 9544, 1, 0, 0, 0, 9547, 9550, 5, 4, 0, 0, 9548, 9551, 3, 1280, 640, 0, 9549, 9551, 3, 1290, 645, 0, 9550, 9548, 1, 0, 0, 0, 9550, 9549, 1, 0, 0, 0, 9550, 9551, 1, 0, 0, 0, 9551, 9552, 1, 0, 0, 0, 9552, 9553, 5, 5, 0, 0, 9553, 1289, 1, 0, 0, 0, 9554, 9559, 3, 1288, 644, 0, 9555, 9556, 5, 6, 0, 0, 9556, 9558, 3, 1288, 644, 0, 9557, 9555, 1, 0, 0, 0, 9558, 9561, 1, 0, 0, 0, 9559, 9557, 1, 0, 0, 0, 9559, 9560, 1, 0, 0, 0, 9560, 1291, 1, 0, 0, 0, 9561, 9559, 1, 0, 0, 0, 9562, 9563, 3, 1294, 647, 0, 9563, 9564, 5, 64, 0, 0, 9564, 9565, 3, 1162, 581, 0, 9565, 9568, 1, 0, 0, 0, 9566, 9568, 1, 0, 0, 0, 9567, 9562, 1, 0, 0, 0, 9567, 9566, 1, 0, 0, 0, 9568, 1293, 1, 0, 0, 0, 9569, 9578, 3, 1382, 691, 0, 9570, 9578, 5, 377, 0, 0, 9571, 9578, 5, 257, 0, 0, 9572, 9578, 5, 176, 0, 0, 9573, 9578, 5, 218, 0, 0, 9574, 9578, 5, 254, 0, 0, 9575, 9578, 5, 319, 0, 0, 9576, 9578, 3, 1358, 679, 0, 9577, 9569, 1, 0, 0, 0, 9577, 9570, 1, 0, 0, 0, 9577, 9571, 1, 0, 0, 0, 9577, 9572, 1, 0, 0, 0, 9577, 9573, 1, 0, 0, 0, 9577, 9574, 1, 0, 0, 0, 9577, 9575, 1, 0, 0, 0, 9577, 9576, 1, 0, 0, 0, 9578, 1295, 1, 0, 0, 0, 9579, 9580, 7, 59, 0, 0, 9580, 1297, 1, 0, 0, 0, 9581, 9582, 3, 1162, 581, 0, 9582, 9583, 5, 84, 0, 0, 9583, 9584, 3, 1162, 581, 0, 9584, 9585, 5, 64, 0, 0, 9585, 9588, 3, 1162, 581, 0, 9586, 9587, 5, 62, 0, 0, 9587, 9589, 3, 1162, 581, 0, 9588, 9586, 1, 0, 0, 0, 9588, 9589, 1, 0, 0, 0, 9589, 1299, 1, 0, 0, 0, 9590, 9591, 3, 1204, 602, 0, 9591, 9592, 5, 68, 0, 0, 9592, 9593, 3, 1204, 602, 0, 9593, 9596, 1, 0, 0, 0, 9594, 9596, 1, 0, 0, 0, 9595, 9590, 1, 0, 0, 0, 9595, 9594, 1, 0, 0, 0, 9596, 1301, 1, 0, 0, 0, 9597, 9598, 3, 1162, 581, 0, 9598, 9599, 5, 64, 0, 0, 9599, 9600, 3, 1162, 581, 0, 9600, 9601, 5, 62, 0, 0, 9601, 9602, 3, 1162, 581, 0, 9602, 9625, 1, 0, 0, 0, 9603, 9604, 3, 1162, 581, 0, 9604, 9605, 5, 62, 0, 0, 9605, 9606, 3, 1162, 581, 0, 9606, 9607, 5, 64, 0, 0, 9607, 9608, 3, 1162, 581, 0, 9608, 9625, 1, 0, 0, 0, 9609, 9610, 3, 1162, 581, 0, 9610, 9611, 5, 64, 0, 0, 9611, 9612, 3, 1162, 581, 0, 9612, 9625, 1, 0, 0, 0, 9613, 9614, 3, 1162, 581, 0, 9614, 9615, 5, 62, 0, 0, 9615, 9616, 3, 1162, 581, 0, 9616, 9625, 1, 0, 0, 0, 9617, 9618, 3, 1162, 581, 0, 9618, 9619, 5, 127, 0, 0, 9619, 9620, 3, 1162, 581, 0, 9620, 9621, 5, 197, 0, 0, 9621, 9622, 3, 1162, 581, 0, 9622, 9625, 1, 0, 0, 0, 9623, 9625, 3, 1280, 640, 0, 9624, 9597, 1, 0, 0, 0, 9624, 9603, 1, 0, 0, 0, 9624, 9609, 1, 0, 0, 0, 9624, 9613, 1, 0, 0, 0, 9624, 9617, 1, 0, 0, 0, 9624, 9623, 1, 0, 0, 0, 9625, 1303, 1, 0, 0, 0, 9626, 9627, 3, 1162, 581, 0, 9627, 9628, 5, 64, 0, 0, 9628, 9629, 3, 1280, 640, 0, 9629, 9634, 1, 0, 0, 0, 9630, 9631, 5, 64, 0, 0, 9631, 9634, 3, 1280, 640, 0, 9632, 9634, 3, 1280, 640, 0, 9633, 9626, 1, 0, 0, 0, 9633, 9630, 1, 0, 0, 0, 9633, 9632, 1, 0, 0, 0, 9634, 1305, 1, 0, 0, 0, 9635, 9641, 3, 962, 481, 0, 9636, 9637, 5, 2, 0, 0, 9637, 9638, 3, 1280, 640, 0, 9638, 9639, 5, 3, 0, 0, 9639, 9641, 1, 0, 0, 0, 9640, 9635, 1, 0, 0, 0, 9640, 9636, 1, 0, 0, 0, 9641, 1307, 1, 0, 0, 0, 9642, 9643, 5, 40, 0, 0, 9643, 9644, 3, 1316, 658, 0, 9644, 9645, 3, 1310, 655, 0, 9645, 9646, 3, 1314, 657, 0, 9646, 9647, 5, 454, 0, 0, 9647, 1309, 1, 0, 0, 0, 9648, 9650, 3, 1312, 656, 0, 9649, 9648, 1, 0, 0, 0, 9650, 9651, 1, 0, 0, 0, 9651, 9649, 1, 0, 0, 0, 9651, 9652, 1, 0, 0, 0, 9652, 1311, 1, 0, 0, 0, 9653, 9654, 5, 102, 0, 0, 9654, 9655, 3, 1162, 581, 0, 9655, 9656, 5, 93, 0, 0, 9656, 9657, 3, 1162, 581, 0, 9657, 1313, 1, 0, 0, 0, 9658, 9659, 5, 58, 0, 0, 9659, 9662, 3, 1162, 581, 0, 9660, 9662, 1, 0, 0, 0, 9661, 9658, 1, 0, 0, 0, 9661, 9660, 1, 0, 0, 0, 9662, 1315, 1, 0, 0, 0, 9663, 9666, 3, 1162, 581, 0, 9664, 9666, 1, 0, 0, 0, 9665, 9663, 1, 0, 0, 0, 9665, 9664, 1, 0, 0, 0, 9666, 1317, 1, 0, 0, 0, 9667, 9669, 3, 1372, 686, 0, 9668, 9670, 3, 1324, 662, 0, 9669, 9668, 1, 0, 0, 0, 9669, 9670, 1, 0, 0, 0, 9670, 1319, 1, 0, 0, 0, 9671, 9674, 5, 11, 0, 0, 9672, 9675, 3, 1342, 671, 0, 9673, 9675, 5, 9, 0, 0, 9674, 9672, 1, 0, 0, 0, 9674, 9673, 1, 0, 0, 0, 9675, 9687, 1, 0, 0, 0, 9676, 9682, 5, 4, 0, 0, 9677, 9683, 3, 1162, 581, 0, 9678, 9679, 3, 1322, 661, 0, 9679, 9680, 5, 8, 0, 0, 9680, 9681, 3, 1322, 661, 0, 9681, 9683, 1, 0, 0, 0, 9682, 9677, 1, 0, 0, 0, 9682, 9678, 1, 0, 0, 0, 9683, 9684, 1, 0, 0, 0, 9684, 9685, 5, 5, 0, 0, 9685, 9687, 1, 0, 0, 0, 9686, 9671, 1, 0, 0, 0, 9686, 9676, 1, 0, 0, 0, 9687, 1321, 1, 0, 0, 0, 9688, 9691, 3, 1162, 581, 0, 9689, 9691, 1, 0, 0, 0, 9690, 9688, 1, 0, 0, 0, 9690, 9689, 1, 0, 0, 0, 9691, 1323, 1, 0, 0, 0, 9692, 9694, 3, 1320, 660, 0, 9693, 9692, 1, 0, 0, 0, 9694, 9695, 1, 0, 0, 0, 9695, 9693, 1, 0, 0, 0, 9695, 9696, 1, 0, 0, 0, 9696, 1325, 1, 0, 0, 0, 9697, 9699, 3, 1320, 660, 0, 9698, 9697, 1, 0, 0, 0, 9699, 9702, 1, 0, 0, 0, 9700, 9698, 1, 0, 0, 0, 9700, 9701, 1, 0, 0, 0, 9701, 1327, 1, 0, 0, 0, 9702, 9700, 1, 0, 0, 0, 9703, 9706, 3, 1330, 665, 0, 9704, 9706, 1, 0, 0, 0, 9705, 9703, 1, 0, 0, 0, 9705, 9704, 1, 0, 0, 0, 9706, 1329, 1, 0, 0, 0, 9707, 9712, 3, 1332, 666, 0, 9708, 9709, 5, 6, 0, 0, 9709, 9711, 3, 1332, 666, 0, 9710, 9708, 1, 0, 0, 0, 9711, 9714, 1, 0, 0, 0, 9712, 9710, 1, 0, 0, 0, 9712, 9713, 1, 0, 0, 0, 9713, 1331, 1, 0, 0, 0, 9714, 9712, 1, 0, 0, 0, 9715, 9720, 3, 1162, 581, 0, 9716, 9717, 5, 36, 0, 0, 9717, 9721, 3, 1380, 690, 0, 9718, 9721, 3, 1382, 691, 0, 9719, 9721, 1, 0, 0, 0, 9720, 9716, 1, 0, 0, 0, 9720, 9718, 1, 0, 0, 0, 9720, 9719, 1, 0, 0, 0, 9721, 9724, 1, 0, 0, 0, 9722, 9724, 5, 9, 0, 0, 9723, 9715, 1, 0, 0, 0, 9723, 9722, 1, 0, 0, 0, 9724, 1333, 1, 0, 0, 0, 9725, 9730, 3, 1336, 668, 0, 9726, 9727, 5, 6, 0, 0, 9727, 9729, 3, 1336, 668, 0, 9728, 9726, 1, 0, 0, 0, 9729, 9732, 1, 0, 0, 0, 9730, 9728, 1, 0, 0, 0, 9730, 9731, 1, 0, 0, 0, 9731, 1335, 1, 0, 0, 0, 9732, 9730, 1, 0, 0, 0, 9733, 9735, 3, 1372, 686, 0, 9734, 9736, 3, 1324, 662, 0, 9735, 9734, 1, 0, 0, 0, 9735, 9736, 1, 0, 0, 0, 9736, 1337, 1, 0, 0, 0, 9737, 9742, 3, 1340, 670, 0, 9738, 9739, 5, 6, 0, 0, 9739, 9741, 3, 1340, 670, 0, 9740, 9738, 1, 0, 0, 0, 9741, 9744, 1, 0, 0, 0, 9742, 9740, 1, 0, 0, 0, 9742, 9743, 1, 0, 0, 0, 9743, 1339, 1, 0, 0, 0, 9744, 9742, 1, 0, 0, 0, 9745, 9746, 3, 1372, 686, 0, 9746, 1341, 1, 0, 0, 0, 9747, 9748, 3, 1380, 690, 0, 9748, 1343, 1, 0, 0, 0, 9749, 9750, 3, 1358, 679, 0, 9750, 1345, 1, 0, 0, 0, 9751, 9759, 3, 1394, 697, 0, 9752, 9759, 3, 1376, 688, 0, 9753, 9754, 3, 1372, 686, 0, 9754, 9755, 3, 1324, 662, 0, 9755, 9759, 1, 0, 0, 0, 9756, 9759, 5, 119, 0, 0, 9757, 9759, 5, 126, 0, 0, 9758, 9751, 1, 0, 0, 0, 9758, 9752, 1, 0, 0, 0, 9758, 9753, 1, 0, 0, 0, 9758, 9756, 1, 0, 0, 0, 9758, 9757, 1, 0, 0, 0, 9759, 1347, 1, 0, 0, 0, 9760, 9793, 3, 1356, 678, 0, 9761, 9793, 3, 1354, 677, 0, 9762, 9793, 3, 1358, 679, 0, 9763, 9793, 3, 1352, 676, 0, 9764, 9793, 3, 1350, 675, 0, 9765, 9773, 3, 1346, 673, 0, 9766, 9774, 3, 1358, 679, 0, 9767, 9768, 5, 2, 0, 0, 9768, 9769, 3, 1282, 641, 0, 9769, 9770, 3, 996, 498, 0, 9770, 9771, 5, 3, 0, 0, 9771, 9772, 3, 1358, 679, 0, 9772, 9774, 1, 0, 0, 0, 9773, 9766, 1, 0, 0, 0, 9773, 9767, 1, 0, 0, 0, 9774, 9793, 1, 0, 0, 0, 9775, 9776, 3, 1124, 562, 0, 9776, 9777, 3, 1358, 679, 0, 9777, 9793, 1, 0, 0, 0, 9778, 9787, 3, 1152, 576, 0, 9779, 9780, 3, 1358, 679, 0, 9780, 9781, 3, 1156, 578, 0, 9781, 9788, 1, 0, 0, 0, 9782, 9783, 5, 2, 0, 0, 9783, 9784, 3, 1356, 678, 0, 9784, 9785, 5, 3, 0, 0, 9785, 9786, 3, 1358, 679, 0, 9786, 9788, 1, 0, 0, 0, 9787, 9779, 1, 0, 0, 0, 9787, 9782, 1, 0, 0, 0, 9788, 9793, 1, 0, 0, 0, 9789, 9793, 5, 96, 0, 0, 9790, 9793, 5, 60, 0, 0, 9791, 9793, 5, 78, 0, 0, 9792, 9760, 1, 0, 0, 0, 9792, 9761, 1, 0, 0, 0, 9792, 9762, 1, 0, 0, 0, 9792, 9763, 1, 0, 0, 0, 9792, 9764, 1, 0, 0, 0, 9792, 9765, 1, 0, 0, 0, 9792, 9775, 1, 0, 0, 0, 9792, 9778, 1, 0, 0, 0, 9792, 9789, 1, 0, 0, 0, 9792, 9790, 1, 0, 0, 0, 9792, 9791, 1, 0, 0, 0, 9793, 1349, 1, 0, 0, 0, 9794, 9795, 5, 654, 0, 0, 9795, 1351, 1, 0, 0, 0, 9796, 9797, 5, 650, 0, 0, 9797, 1353, 1, 0, 0, 0, 9798, 9799, 5, 660, 0, 0, 9799, 1355, 1, 0, 0, 0, 9800, 9801, 5, 658, 0, 0, 9801, 1357, 1, 0, 0, 0, 9802, 9803, 3, 1360, 680, 0, 9803, 9804, 3, 1362, 681, 0, 9804, 1359, 1, 0, 0, 0, 9805, 9817, 5, 645, 0, 0, 9806, 9817, 5, 647, 0, 0, 9807, 9811, 5, 649, 0, 0, 9808, 9810, 5, 677, 0, 0, 9809, 9808, 1, 0, 0, 0, 9810, 9813, 1, 0, 0, 0, 9811, 9809, 1, 0, 0, 0, 9811, 9812, 1, 0, 0, 0, 9812, 9814, 1, 0, 0, 0, 9813, 9811, 1, 0, 0, 0, 9814, 9817, 5, 678, 0, 0, 9815, 9817, 5, 671, 0, 0, 9816, 9805, 1, 0, 0, 0, 9816, 9806, 1, 0, 0, 0, 9816, 9807, 1, 0, 0, 0, 9816, 9815, 1, 0, 0, 0, 9817, 1361, 1, 0, 0, 0, 9818, 9819, 5, 487, 0, 0, 9819, 9822, 3, 1360, 680, 0, 9820, 9822, 1, 0, 0, 0, 9821, 9818, 1, 0, 0, 0, 9821, 9820, 1, 0, 0, 0, 9822, 1363, 1, 0, 0, 0, 9823, 9829, 3, 1356, 678, 0, 9824, 9825, 5, 12, 0, 0, 9825, 9829, 3, 1356, 678, 0, 9826, 9827, 5, 13, 0, 0, 9827, 9829, 3, 1356, 678, 0, 9828, 9823, 1, 0, 0, 0, 9828, 9824, 1, 0, 0, 0, 9828, 9826, 1, 0, 0, 0, 9829, 1365, 1, 0, 0, 0, 9830, 9831, 3, 1368, 684, 0, 9831, 1367, 1, 0, 0, 0, 9832, 9836, 3, 1378, 689, 0, 9833, 9836, 5, 52, 0, 0, 9834, 9836, 5, 89, 0, 0, 9835, 9832, 1, 0, 0, 0, 9835, 9833, 1, 0, 0, 0, 9835, 9834, 1, 0, 0, 0, 9836, 1369, 1, 0, 0, 0, 9837, 9842, 3, 1368, 684, 0, 9838, 9839, 5, 6, 0, 0, 9839, 9841, 3, 1368, 684, 0, 9840, 9838, 1, 0, 0, 0, 9841, 9844, 1, 0, 0, 0, 9842, 9840, 1, 0, 0, 0, 9842, 9843, 1, 0, 0, 0, 9843, 1371, 1, 0, 0, 0, 9844, 9842, 1, 0, 0, 0, 9845, 9852, 3, 1382, 691, 0, 9846, 9852, 3, 1386, 693, 0, 9847, 9852, 3, 1388, 694, 0, 9848, 9852, 3, 1608, 804, 0, 9849, 9852, 5, 119, 0, 0, 9850, 9852, 5, 126, 0, 0, 9851, 9845, 1, 0, 0, 0, 9851, 9846, 1, 0, 0, 0, 9851, 9847, 1, 0, 0, 0, 9851, 9848, 1, 0, 0, 0, 9851, 9849, 1, 0, 0, 0, 9851, 9850, 1, 0, 0, 0, 9852, 1373, 1, 0, 0, 0, 9853, 9858, 3, 1382, 691, 0, 9854, 9858, 3, 1386, 693, 0, 9855, 9858, 3, 1388, 694, 0, 9856, 9858, 3, 1608, 804, 0, 9857, 9853, 1, 0, 0, 0, 9857, 9854, 1, 0, 0, 0, 9857, 9855, 1, 0, 0, 0, 9857, 9856, 1, 0, 0, 0, 9858, 1375, 1, 0, 0, 0, 9859, 9864, 3, 1382, 691, 0, 9860, 9864, 3, 1386, 693, 0, 9861, 9864, 3, 1608, 804, 0, 9862, 9864, 3, 1390, 695, 0, 9863, 9859, 1, 0, 0, 0, 9863, 9860, 1, 0, 0, 0, 9863, 9861, 1, 0, 0, 0, 9863, 9862, 1, 0, 0, 0, 9864, 1377, 1, 0, 0, 0, 9865, 9870, 3, 1382, 691, 0, 9866, 9870, 3, 1386, 693, 0, 9867, 9870, 3, 1388, 694, 0, 9868, 9870, 3, 1390, 695, 0, 9869, 9865, 1, 0, 0, 0, 9869, 9866, 1, 0, 0, 0, 9869, 9867, 1, 0, 0, 0, 9869, 9868, 1, 0, 0, 0, 9870, 1379, 1, 0, 0, 0, 9871, 9878, 3, 1382, 691, 0, 9872, 9878, 3, 1608, 804, 0, 9873, 9878, 3, 1386, 693, 0, 9874, 9878, 3, 1388, 694, 0, 9875, 9878, 3, 1390, 695, 0, 9876, 9878, 3, 1392, 696, 0, 9877, 9871, 1, 0, 0, 0, 9877, 9872, 1, 0, 0, 0, 9877, 9873, 1, 0, 0, 0, 9877, 9874, 1, 0, 0, 0, 9877, 9875, 1, 0, 0, 0, 9877, 9876, 1, 0, 0, 0, 9878, 1381, 1, 0, 0, 0, 9879, 9880, 5, 636, 0, 0, 9880, 9887, 3, 1362, 681, 0, 9881, 9887, 5, 637, 0, 0, 9882, 9887, 5, 641, 0, 0, 9883, 9887, 3, 1208, 604, 0, 9884, 9887, 3, 1384, 692, 0, 9885, 9887, 3, 1608, 804, 0, 9886, 9879, 1, 0, 0, 0, 9886, 9881, 1, 0, 0, 0, 9886, 9882, 1, 0, 0, 0, 9886, 9883, 1, 0, 0, 0, 9886, 9884, 1, 0, 0, 0, 9886, 9885, 1, 0, 0, 0, 9887, 1383, 1, 0, 0, 0, 9888, 9889, 5, 662, 0, 0, 9889, 1385, 1, 0, 0, 0, 9890, 9891, 7, 60, 0, 0, 9891, 1387, 1, 0, 0, 0, 9892, 9945, 5, 380, 0, 0, 9893, 9945, 5, 381, 0, 0, 9894, 9945, 3, 1134, 567, 0, 9895, 9945, 5, 383, 0, 0, 9896, 9945, 5, 384, 0, 0, 9897, 9945, 3, 1142, 571, 0, 9898, 9945, 5, 386, 0, 0, 9899, 9945, 5, 387, 0, 0, 9900, 9945, 5, 388, 0, 0, 9901, 9945, 5, 389, 0, 0, 9902, 9945, 5, 390, 0, 0, 9903, 9945, 5, 391, 0, 0, 9904, 9945, 5, 392, 0, 0, 9905, 9945, 5, 470, 0, 0, 9906, 9945, 5, 393, 0, 0, 9907, 9945, 5, 394, 0, 0, 9908, 9945, 5, 395, 0, 0, 9909, 9945, 5, 396, 0, 0, 9910, 9945, 5, 397, 0, 0, 9911, 9945, 5, 398, 0, 0, 9912, 9945, 5, 399, 0, 0, 9913, 9945, 5, 400, 0, 0, 9914, 9945, 5, 489, 0, 0, 9915, 9945, 5, 401, 0, 0, 9916, 9945, 3, 1130, 565, 0, 9917, 9945, 5, 453, 0, 0, 9918, 9945, 5, 403, 0, 0, 9919, 9945, 5, 404, 0, 0, 9920, 9945, 5, 405, 0, 0, 9921, 9945, 5, 406, 0, 0, 9922, 9945, 5, 407, 0, 0, 9923, 9945, 5, 408, 0, 0, 9924, 9945, 5, 409, 0, 0, 9925, 9945, 5, 410, 0, 0, 9926, 9945, 5, 411, 0, 0, 9927, 9945, 5, 412, 0, 0, 9928, 9945, 5, 413, 0, 0, 9929, 9945, 5, 414, 0, 0, 9930, 9945, 5, 415, 0, 0, 9931, 9945, 5, 416, 0, 0, 9932, 9945, 5, 417, 0, 0, 9933, 9945, 5, 425, 0, 0, 9934, 9945, 5, 426, 0, 0, 9935, 9945, 5, 427, 0, 0, 9936, 9945, 5, 428, 0, 0, 9937, 9945, 5, 476, 0, 0, 9938, 9945, 5, 429, 0, 0, 9939, 9945, 5, 430, 0, 0, 9940, 9945, 5, 431, 0, 0, 9941, 9945, 5, 432, 0, 0, 9942, 9945, 5, 474, 0, 0, 9943, 9945, 3, 1394, 697, 0, 9944, 9892, 1, 0, 0, 0, 9944, 9893, 1, 0, 0, 0, 9944, 9894, 1, 0, 0, 0, 9944, 9895, 1, 0, 0, 0, 9944, 9896, 1, 0, 0, 0, 9944, 9897, 1, 0, 0, 0, 9944, 9898, 1, 0, 0, 0, 9944, 9899, 1, 0, 0, 0, 9944, 9900, 1, 0, 0, 0, 9944, 9901, 1, 0, 0, 0, 9944, 9902, 1, 0, 0, 0, 9944, 9903, 1, 0, 0, 0, 9944, 9904, 1, 0, 0, 0, 9944, 9905, 1, 0, 0, 0, 9944, 9906, 1, 0, 0, 0, 9944, 9907, 1, 0, 0, 0, 9944, 9908, 1, 0, 0, 0, 9944, 9909, 1, 0, 0, 0, 9944, 9910, 1, 0, 0, 0, 9944, 9911, 1, 0, 0, 0, 9944, 9912, 1, 0, 0, 0, 9944, 9913, 1, 0, 0, 0, 9944, 9914, 1, 0, 0, 0, 9944, 9915, 1, 0, 0, 0, 9944, 9916, 1, 0, 0, 0, 9944, 9917, 1, 0, 0, 0, 9944, 9918, 1, 0, 0, 0, 9944, 9919, 1, 0, 0, 0, 9944, 9920, 1, 0, 0, 0, 9944, 9921, 1, 0, 0, 0, 9944, 9922, 1, 0, 0, 0, 9944, 9923, 1, 0, 0, 0, 9944, 9924, 1, 0, 0, 0, 9944, 9925, 1, 0, 0, 0, 9944, 9926, 1, 0, 0, 0, 9944, 9927, 1, 0, 0, 0, 9944, 9928, 1, 0, 0, 0, 9944, 9929, 1, 0, 0, 0, 9944, 9930, 1, 0, 0, 0, 9944, 9931, 1, 0, 0, 0, 9944, 9932, 1, 0, 0, 0, 9944, 9933, 1, 0, 0, 0, 9944, 9934, 1, 0, 0, 0, 9944, 9935, 1, 0, 0, 0, 9944, 9936, 1, 0, 0, 0, 9944, 9937, 1, 0, 0, 0, 9944, 9938, 1, 0, 0, 0, 9944, 9939, 1, 0, 0, 0, 9944, 9940, 1, 0, 0, 0, 9944, 9941, 1, 0, 0, 0, 9944, 9942, 1, 0, 0, 0, 9944, 9943, 1, 0, 0, 0, 9945, 1389, 1, 0, 0, 0, 9946, 9947, 7, 61, 0, 0, 9947, 1391, 1, 0, 0, 0, 9948, 9949, 7, 62, 0, 0, 9949, 1393, 1, 0, 0, 0, 9950, 9951, 7, 63, 0, 0, 9951, 1395, 1, 0, 0, 0, 9952, 9953, 3, 1398, 699, 0, 9953, 9954, 3, 1408, 704, 0, 9954, 9955, 3, 1406, 703, 0, 9955, 1397, 1, 0, 0, 0, 9956, 9958, 3, 1400, 700, 0, 9957, 9956, 1, 0, 0, 0, 9958, 9961, 1, 0, 0, 0, 9959, 9957, 1, 0, 0, 0, 9959, 9960, 1, 0, 0, 0, 9960, 1399, 1, 0, 0, 0, 9961, 9959, 1, 0, 0, 0, 9962, 9963, 3, 1402, 701, 0, 9963, 9964, 5, 272, 0, 0, 9964, 9965, 5, 490, 0, 0, 9965, 9983, 1, 0, 0, 0, 9966, 9967, 3, 1402, 701, 0, 9967, 9968, 5, 491, 0, 0, 9968, 9969, 3, 1404, 702, 0, 9969, 9983, 1, 0, 0, 0, 9970, 9971, 3, 1402, 701, 0, 9971, 9972, 5, 492, 0, 0, 9972, 9973, 5, 493, 0, 0, 9973, 9983, 1, 0, 0, 0, 9974, 9975, 3, 1402, 701, 0, 9975, 9976, 5, 492, 0, 0, 9976, 9977, 5, 494, 0, 0, 9977, 9983, 1, 0, 0, 0, 9978, 9979, 3, 1402, 701, 0, 9979, 9980, 5, 492, 0, 0, 9980, 9981, 5, 495, 0, 0, 9981, 9983, 1, 0, 0, 0, 9982, 9962, 1, 0, 0, 0, 9982, 9966, 1, 0, 0, 0, 9982, 9970, 1, 0, 0, 0, 9982, 9974, 1, 0, 0, 0, 9982, 9978, 1, 0, 0, 0, 9983, 1401, 1, 0, 0, 0, 9984, 9985, 5, 29, 0, 0, 9985, 1403, 1, 0, 0, 0, 9986, 9991, 3, 1358, 679, 0, 9987, 9991, 3, 1392, 696, 0, 9988, 9991, 3, 1608, 804, 0, 9989, 9991, 3, 1386, 693, 0, 9990, 9986, 1, 0, 0, 0, 9990, 9987, 1, 0, 0, 0, 9990, 9988, 1, 0, 0, 0, 9990, 9989, 1, 0, 0, 0, 9991, 1405, 1, 0, 0, 0, 9992, 9995, 1, 0, 0, 0, 9993, 9995, 5, 7, 0, 0, 9994, 9992, 1, 0, 0, 0, 9994, 9993, 1, 0, 0, 0, 9995, 1407, 1, 0, 0, 0, 9996, 9997, 3, 1410, 705, 0, 9997, 9998, 5, 146, 0, 0, 9998, 9999, 3, 1452, 726, 0, 9999, 10000, 3, 1588, 794, 0, 10000, 10001, 5, 454, 0, 0, 10001, 10002, 3, 1602, 801, 0, 10002, 1409, 1, 0, 0, 0, 10003, 10008, 3, 1598, 799, 0, 10004, 10006, 3, 1412, 706, 0, 10005, 10007, 3, 1414, 707, 0, 10006, 10005, 1, 0, 0, 0, 10006, 10007, 1, 0, 0, 0, 10007, 10009, 1, 0, 0, 0, 10008, 10004, 1, 0, 0, 0, 10008, 10009, 1, 0, 0, 0, 10009, 1411, 1, 0, 0, 0, 10010, 10011, 5, 178, 0, 0, 10011, 1413, 1, 0, 0, 0, 10012, 10014, 3, 1418, 709, 0, 10013, 10012, 1, 0, 0, 0, 10014, 10015, 1, 0, 0, 0, 10015, 10013, 1, 0, 0, 0, 10015, 10016, 1, 0, 0, 0, 10016, 1415, 1, 0, 0, 0, 10017, 10018, 5, 18, 0, 0, 10018, 10019, 3, 1606, 803, 0, 10019, 10020, 5, 19, 0, 0, 10020, 1417, 1, 0, 0, 0, 10021, 10025, 3, 1420, 710, 0, 10022, 10025, 5, 178, 0, 0, 10023, 10025, 3, 1416, 708, 0, 10024, 10021, 1, 0, 0, 0, 10024, 10022, 1, 0, 0, 0, 10024, 10023, 1, 0, 0, 0, 10025, 1419, 1, 0, 0, 0, 10026, 10042, 3, 1436, 718, 0, 10027, 10028, 5, 496, 0, 0, 10028, 10029, 5, 62, 0, 0, 10029, 10043, 3, 1434, 717, 0, 10030, 10031, 3, 1438, 719, 0, 10031, 10032, 3, 1440, 720, 0, 10032, 10033, 3, 1442, 721, 0, 10033, 10034, 3, 1444, 722, 0, 10034, 10035, 3, 1446, 723, 0, 10035, 10043, 1, 0, 0, 0, 10036, 10037, 3, 1422, 711, 0, 10037, 10038, 5, 172, 0, 0, 10038, 10039, 3, 1426, 713, 0, 10039, 10040, 3, 1432, 716, 0, 10040, 10041, 3, 1424, 712, 0, 10041, 10043, 1, 0, 0, 0, 10042, 10027, 1, 0, 0, 0, 10042, 10030, 1, 0, 0, 0, 10042, 10036, 1, 0, 0, 0, 10043, 10044, 1, 0, 0, 0, 10044, 10045, 5, 7, 0, 0, 10045, 1421, 1, 0, 0, 0, 10046, 10051, 1, 0, 0, 0, 10047, 10048, 5, 262, 0, 0, 10048, 10051, 5, 317, 0, 0, 10049, 10051, 5, 317, 0, 0, 10050, 10046, 1, 0, 0, 0, 10050, 10047, 1, 0, 0, 0, 10050, 10049, 1, 0, 0, 0, 10051, 1423, 1, 0, 0, 0, 10052, 10053, 3, 960, 480, 0, 10053, 1425, 1, 0, 0, 0, 10054, 10060, 1, 0, 0, 0, 10055, 10056, 5, 2, 0, 0, 10056, 10057, 3, 1428, 714, 0, 10057, 10058, 5, 3, 0, 0, 10058, 10060, 1, 0, 0, 0, 10059, 10054, 1, 0, 0, 0, 10059, 10055, 1, 0, 0, 0, 10060, 1427, 1, 0, 0, 0, 10061, 10066, 3, 1430, 715, 0, 10062, 10063, 5, 6, 0, 0, 10063, 10065, 3, 1430, 715, 0, 10064, 10062, 1, 0, 0, 0, 10065, 10068, 1, 0, 0, 0, 10066, 10064, 1, 0, 0, 0, 10066, 10067, 1, 0, 0, 0, 10067, 1429, 1, 0, 0, 0, 10068, 10066, 1, 0, 0, 0, 10069, 10070, 3, 1436, 718, 0, 10070, 10071, 3, 1440, 720, 0, 10071, 1431, 1, 0, 0, 0, 10072, 10073, 7, 64, 0, 0, 10073, 1433, 1, 0, 0, 0, 10074, 10077, 5, 28, 0, 0, 10075, 10077, 3, 1372, 686, 0, 10076, 10074, 1, 0, 0, 0, 10076, 10075, 1, 0, 0, 0, 10077, 1435, 1, 0, 0, 0, 10078, 10079, 3, 1606, 803, 0, 10079, 1437, 1, 0, 0, 0, 10080, 10083, 1, 0, 0, 0, 10081, 10083, 5, 497, 0, 0, 10082, 10080, 1, 0, 0, 0, 10082, 10081, 1, 0, 0, 0, 10083, 1439, 1, 0, 0, 0, 10084, 10085, 3, 1118, 559, 0, 10085, 1441, 1, 0, 0, 0, 10086, 10090, 1, 0, 0, 0, 10087, 10088, 5, 43, 0, 0, 10088, 10090, 3, 524, 262, 0, 10089, 10086, 1, 0, 0, 0, 10089, 10087, 1, 0, 0, 0, 10090, 1443, 1, 0, 0, 0, 10091, 10095, 1, 0, 0, 0, 10092, 10093, 5, 77, 0, 0, 10093, 10095, 5, 78, 0, 0, 10094, 10091, 1, 0, 0, 0, 10094, 10092, 1, 0, 0, 0, 10095, 1445, 1, 0, 0, 0, 10096, 10101, 1, 0, 0, 0, 10097, 10098, 3, 1448, 724, 0, 10098, 10099, 3, 1610, 805, 0, 10099, 10101, 1, 0, 0, 0, 10100, 10096, 1, 0, 0, 0, 10100, 10097, 1, 0, 0, 0, 10101, 1447, 1, 0, 0, 0, 10102, 10105, 3, 1450, 725, 0, 10103, 10105, 5, 53, 0, 0, 10104, 10102, 1, 0, 0, 0, 10104, 10103, 1, 0, 0, 0, 10105, 1449, 1, 0, 0, 0, 10106, 10107, 7, 65, 0, 0, 10107, 1451, 1, 0, 0, 0, 10108, 10110, 3, 1454, 727, 0, 10109, 10108, 1, 0, 0, 0, 10110, 10113, 1, 0, 0, 0, 10111, 10109, 1, 0, 0, 0, 10111, 10112, 1, 0, 0, 0, 10112, 1453, 1, 0, 0, 0, 10113, 10111, 1, 0, 0, 0, 10114, 10115, 3, 1408, 704, 0, 10115, 10116, 5, 7, 0, 0, 10116, 10142, 1, 0, 0, 0, 10117, 10142, 3, 1520, 760, 0, 10118, 10142, 3, 1524, 762, 0, 10119, 10142, 3, 1462, 731, 0, 10120, 10142, 3, 1478, 739, 0, 10121, 10142, 3, 1484, 742, 0, 10122, 10142, 3, 1494, 747, 0, 10123, 10142, 3, 1496, 748, 0, 10124, 10142, 3, 1498, 749, 0, 10125, 10142, 3, 1512, 756, 0, 10126, 10142, 3, 1516, 758, 0, 10127, 10142, 3, 1536, 768, 0, 10128, 10142, 3, 1542, 771, 0, 10129, 10142, 3, 1544, 772, 0, 10130, 10142, 3, 1456, 728, 0, 10131, 10142, 3, 1458, 729, 0, 10132, 10142, 3, 1464, 732, 0, 10133, 10142, 3, 1552, 776, 0, 10134, 10142, 3, 1564, 782, 0, 10135, 10142, 3, 1572, 786, 0, 10136, 10142, 3, 1574, 787, 0, 10137, 10142, 3, 1576, 788, 0, 10138, 10142, 3, 1578, 789, 0, 10139, 10142, 3, 1580, 790, 0, 10140, 10142, 3, 1584, 792, 0, 10141, 10114, 1, 0, 0, 0, 10141, 10117, 1, 0, 0, 0, 10141, 10118, 1, 0, 0, 0, 10141, 10119, 1, 0, 0, 0, 10141, 10120, 1, 0, 0, 0, 10141, 10121, 1, 0, 0, 0, 10141, 10122, 1, 0, 0, 0, 10141, 10123, 1, 0, 0, 0, 10141, 10124, 1, 0, 0, 0, 10141, 10125, 1, 0, 0, 0, 10141, 10126, 1, 0, 0, 0, 10141, 10127, 1, 0, 0, 0, 10141, 10128, 1, 0, 0, 0, 10141, 10129, 1, 0, 0, 0, 10141, 10130, 1, 0, 0, 0, 10141, 10131, 1, 0, 0, 0, 10141, 10132, 1, 0, 0, 0, 10141, 10133, 1, 0, 0, 0, 10141, 10134, 1, 0, 0, 0, 10141, 10135, 1, 0, 0, 0, 10141, 10136, 1, 0, 0, 0, 10141, 10137, 1, 0, 0, 0, 10141, 10138, 1, 0, 0, 0, 10141, 10139, 1, 0, 0, 0, 10141, 10140, 1, 0, 0, 0, 10142, 1455, 1, 0, 0, 0, 10143, 10144, 5, 498, 0, 0, 10144, 10145, 3, 1614, 807, 0, 10145, 10146, 5, 7, 0, 0, 10146, 1457, 1, 0, 0, 0, 10147, 10148, 5, 433, 0, 0, 10148, 10149, 3, 1606, 803, 0, 10149, 10150, 5, 2, 0, 0, 10150, 10151, 3, 1460, 730, 0, 10151, 10152, 5, 3, 0, 0, 10152, 10153, 5, 7, 0, 0, 10153, 10162, 1, 0, 0, 0, 10154, 10155, 5, 57, 0, 0, 10155, 10156, 3, 1606, 803, 0, 10156, 10157, 5, 2, 0, 0, 10157, 10158, 3, 1460, 730, 0, 10158, 10159, 5, 3, 0, 0, 10159, 10160, 5, 7, 0, 0, 10160, 10162, 1, 0, 0, 0, 10161, 10147, 1, 0, 0, 0, 10161, 10154, 1, 0, 0, 0, 10162, 1459, 1, 0, 0, 0, 10163, 10166, 1, 0, 0, 0, 10164, 10166, 3, 1280, 640, 0, 10165, 10163, 1, 0, 0, 0, 10165, 10164, 1, 0, 0, 0, 10166, 1461, 1, 0, 0, 0, 10167, 10168, 3, 1476, 738, 0, 10168, 10169, 3, 1450, 725, 0, 10169, 10170, 3, 1610, 805, 0, 10170, 10171, 5, 7, 0, 0, 10171, 1463, 1, 0, 0, 0, 10172, 10173, 5, 499, 0, 0, 10173, 10174, 3, 1466, 733, 0, 10174, 10175, 5, 500, 0, 0, 10175, 10176, 3, 1468, 734, 0, 10176, 10177, 5, 7, 0, 0, 10177, 1465, 1, 0, 0, 0, 10178, 10182, 1, 0, 0, 0, 10179, 10182, 5, 434, 0, 0, 10180, 10182, 5, 501, 0, 0, 10181, 10178, 1, 0, 0, 0, 10181, 10179, 1, 0, 0, 0, 10181, 10180, 1, 0, 0, 0, 10182, 1467, 1, 0, 0, 0, 10183, 10188, 3, 1470, 735, 0, 10184, 10185, 5, 6, 0, 0, 10185, 10187, 3, 1470, 735, 0, 10186, 10184, 1, 0, 0, 0, 10187, 10190, 1, 0, 0, 0, 10188, 10186, 1, 0, 0, 0, 10188, 10189, 1, 0, 0, 0, 10189, 1469, 1, 0, 0, 0, 10190, 10188, 1, 0, 0, 0, 10191, 10192, 3, 1474, 737, 0, 10192, 10193, 3, 1450, 725, 0, 10193, 10194, 3, 1472, 736, 0, 10194, 1471, 1, 0, 0, 0, 10195, 10196, 3, 1372, 686, 0, 10196, 1473, 1, 0, 0, 0, 10197, 10198, 3, 1476, 738, 0, 10198, 1475, 1, 0, 0, 0, 10199, 10202, 3, 524, 262, 0, 10200, 10202, 5, 28, 0, 0, 10201, 10199, 1, 0, 0, 0, 10201, 10200, 1, 0, 0, 0, 10202, 10209, 1, 0, 0, 0, 10203, 10204, 5, 4, 0, 0, 10204, 10205, 3, 1616, 808, 0, 10205, 10206, 5, 5, 0, 0, 10206, 10208, 1, 0, 0, 0, 10207, 10203, 1, 0, 0, 0, 10208, 10211, 1, 0, 0, 0, 10209, 10207, 1, 0, 0, 0, 10209, 10210, 1, 0, 0, 0, 10210, 1477, 1, 0, 0, 0, 10211, 10209, 1, 0, 0, 0, 10212, 10213, 5, 220, 0, 0, 10213, 10214, 3, 1612, 806, 0, 10214, 10215, 5, 93, 0, 0, 10215, 10216, 3, 1452, 726, 0, 10216, 10217, 3, 1480, 740, 0, 10217, 10218, 3, 1482, 741, 0, 10218, 10219, 5, 454, 0, 0, 10219, 10220, 5, 220, 0, 0, 10220, 10221, 5, 7, 0, 0, 10221, 1479, 1, 0, 0, 0, 10222, 10223, 5, 502, 0, 0, 10223, 10224, 3, 1162, 581, 0, 10224, 10225, 5, 93, 0, 0, 10225, 10226, 3, 1452, 726, 0, 10226, 10228, 1, 0, 0, 0, 10227, 10222, 1, 0, 0, 0, 10228, 10231, 1, 0, 0, 0, 10229, 10227, 1, 0, 0, 0, 10229, 10230, 1, 0, 0, 0, 10230, 1481, 1, 0, 0, 0, 10231, 10229, 1, 0, 0, 0, 10232, 10236, 1, 0, 0, 0, 10233, 10234, 5, 58, 0, 0, 10234, 10236, 3, 1452, 726, 0, 10235, 10232, 1, 0, 0, 0, 10235, 10233, 1, 0, 0, 0, 10236, 1483, 1, 0, 0, 0, 10237, 10238, 5, 40, 0, 0, 10238, 10239, 3, 1486, 743, 0, 10239, 10240, 3, 1488, 744, 0, 10240, 10241, 3, 1492, 746, 0, 10241, 10242, 5, 454, 0, 0, 10242, 10243, 5, 40, 0, 0, 10243, 10244, 5, 7, 0, 0, 10244, 1485, 1, 0, 0, 0, 10245, 10248, 1, 0, 0, 0, 10246, 10248, 3, 1610, 805, 0, 10247, 10245, 1, 0, 0, 0, 10247, 10246, 1, 0, 0, 0, 10248, 1487, 1, 0, 0, 0, 10249, 10251, 3, 1490, 745, 0, 10250, 10249, 1, 0, 0, 0, 10251, 10252, 1, 0, 0, 0, 10252, 10250, 1, 0, 0, 0, 10252, 10253, 1, 0, 0, 0, 10253, 1489, 1, 0, 0, 0, 10254, 10255, 5, 102, 0, 0, 10255, 10256, 3, 1280, 640, 0, 10256, 10257, 5, 93, 0, 0, 10257, 10258, 3, 1452, 726, 0, 10258, 1491, 1, 0, 0, 0, 10259, 10263, 1, 0, 0, 0, 10260, 10261, 5, 58, 0, 0, 10261, 10263, 3, 1452, 726, 0, 10262, 10259, 1, 0, 0, 0, 10262, 10260, 1, 0, 0, 0, 10263, 1493, 1, 0, 0, 0, 10264, 10265, 3, 1600, 800, 0, 10265, 10266, 3, 1540, 770, 0, 10266, 1495, 1, 0, 0, 0, 10267, 10268, 3, 1600, 800, 0, 10268, 10269, 5, 503, 0, 0, 10269, 10270, 3, 1618, 809, 0, 10270, 10271, 3, 1540, 770, 0, 10271, 1497, 1, 0, 0, 0, 10272, 10273, 3, 1600, 800, 0, 10273, 10274, 5, 62, 0, 0, 10274, 10275, 3, 1500, 750, 0, 10275, 10276, 3, 1540, 770, 0, 10276, 1499, 1, 0, 0, 0, 10277, 10278, 3, 1510, 755, 0, 10278, 10294, 5, 68, 0, 0, 10279, 10280, 3, 954, 477, 0, 10280, 10281, 3, 1504, 752, 0, 10281, 10295, 1, 0, 0, 0, 10282, 10295, 3, 960, 480, 0, 10283, 10295, 3, 878, 439, 0, 10284, 10285, 5, 202, 0, 0, 10285, 10286, 3, 1162, 581, 0, 10286, 10287, 3, 1502, 751, 0, 10287, 10295, 1, 0, 0, 0, 10288, 10289, 3, 1506, 753, 0, 10289, 10290, 3, 1162, 581, 0, 10290, 10291, 5, 24, 0, 0, 10291, 10292, 3, 1162, 581, 0, 10292, 10293, 3, 1508, 754, 0, 10293, 10295, 1, 0, 0, 0, 10294, 10279, 1, 0, 0, 0, 10294, 10282, 1, 0, 0, 0, 10294, 10283, 1, 0, 0, 0, 10294, 10284, 1, 0, 0, 0, 10294, 10288, 1, 0, 0, 0, 10295, 1501, 1, 0, 0, 0, 10296, 10300, 1, 0, 0, 0, 10297, 10298, 5, 100, 0, 0, 10298, 10300, 3, 1280, 640, 0, 10299, 10296, 1, 0, 0, 0, 10299, 10297, 1, 0, 0, 0, 10300, 1503, 1, 0, 0, 0, 10301, 10314, 1, 0, 0, 0, 10302, 10303, 5, 2, 0, 0, 10303, 10308, 3, 1162, 581, 0, 10304, 10305, 5, 6, 0, 0, 10305, 10307, 3, 1162, 581, 0, 10306, 10304, 1, 0, 0, 0, 10307, 10310, 1, 0, 0, 0, 10308, 10306, 1, 0, 0, 0, 10308, 10309, 1, 0, 0, 0, 10309, 10311, 1, 0, 0, 0, 10310, 10308, 1, 0, 0, 0, 10311, 10312, 5, 3, 0, 0, 10312, 10314, 1, 0, 0, 0, 10313, 10301, 1, 0, 0, 0, 10313, 10302, 1, 0, 0, 0, 10314, 1505, 1, 0, 0, 0, 10315, 10318, 1, 0, 0, 0, 10316, 10318, 5, 504, 0, 0, 10317, 10315, 1, 0, 0, 0, 10317, 10316, 1, 0, 0, 0, 10318, 1507, 1, 0, 0, 0, 10319, 10323, 1, 0, 0, 0, 10320, 10321, 5, 147, 0, 0, 10321, 10323, 3, 1162, 581, 0, 10322, 10319, 1, 0, 0, 0, 10322, 10320, 1, 0, 0, 0, 10323, 1509, 1, 0, 0, 0, 10324, 10325, 3, 522, 261, 0, 10325, 1511, 1, 0, 0, 0, 10326, 10327, 3, 1600, 800, 0, 10327, 10328, 5, 505, 0, 0, 10328, 10329, 3, 1510, 755, 0, 10329, 10330, 3, 1514, 757, 0, 10330, 10331, 5, 68, 0, 0, 10331, 10332, 5, 35, 0, 0, 10332, 10333, 3, 1162, 581, 0, 10333, 10334, 3, 1540, 770, 0, 10334, 1513, 1, 0, 0, 0, 10335, 10339, 1, 0, 0, 0, 10336, 10337, 5, 506, 0, 0, 10337, 10339, 3, 1356, 678, 0, 10338, 10335, 1, 0, 0, 0, 10338, 10336, 1, 0, 0, 0, 10339, 1515, 1, 0, 0, 0, 10340, 10341, 3, 1518, 759, 0, 10341, 10342, 3, 1602, 801, 0, 10342, 10343, 3, 1604, 802, 0, 10343, 10344, 5, 7, 0, 0, 10344, 1517, 1, 0, 0, 0, 10345, 10346, 7, 66, 0, 0, 10346, 1519, 1, 0, 0, 0, 10347, 10359, 5, 508, 0, 0, 10348, 10349, 5, 261, 0, 0, 10349, 10360, 3, 1610, 805, 0, 10350, 10356, 5, 509, 0, 0, 10351, 10352, 5, 202, 0, 0, 10352, 10353, 3, 1162, 581, 0, 10353, 10354, 3, 1502, 751, 0, 10354, 10357, 1, 0, 0, 0, 10355, 10357, 3, 960, 480, 0, 10356, 10351, 1, 0, 0, 0, 10356, 10355, 1, 0, 0, 0, 10357, 10360, 1, 0, 0, 0, 10358, 10360, 3, 1522, 761, 0, 10359, 10348, 1, 0, 0, 0, 10359, 10350, 1, 0, 0, 0, 10359, 10358, 1, 0, 0, 0, 10360, 10361, 1, 0, 0, 0, 10361, 10362, 5, 7, 0, 0, 10362, 1521, 1, 0, 0, 0, 10363, 10366, 1, 0, 0, 0, 10364, 10366, 3, 1610, 805, 0, 10365, 10363, 1, 0, 0, 0, 10365, 10364, 1, 0, 0, 0, 10366, 1523, 1, 0, 0, 0, 10367, 10368, 5, 510, 0, 0, 10368, 10369, 3, 1526, 763, 0, 10369, 10370, 3, 1358, 679, 0, 10370, 10371, 3, 1528, 764, 0, 10371, 10372, 3, 1530, 765, 0, 10372, 10373, 5, 7, 0, 0, 10373, 10394, 1, 0, 0, 0, 10374, 10375, 5, 510, 0, 0, 10375, 10376, 3, 1526, 763, 0, 10376, 10377, 3, 1382, 691, 0, 10377, 10378, 3, 1530, 765, 0, 10378, 10379, 5, 7, 0, 0, 10379, 10394, 1, 0, 0, 0, 10380, 10381, 5, 510, 0, 0, 10381, 10382, 3, 1526, 763, 0, 10382, 10383, 5, 511, 0, 0, 10383, 10384, 3, 1358, 679, 0, 10384, 10385, 3, 1530, 765, 0, 10385, 10386, 5, 7, 0, 0, 10386, 10394, 1, 0, 0, 0, 10387, 10388, 5, 510, 0, 0, 10388, 10389, 3, 1526, 763, 0, 10389, 10390, 3, 1530, 765, 0, 10390, 10391, 5, 7, 0, 0, 10391, 10394, 1, 0, 0, 0, 10392, 10394, 5, 510, 0, 0, 10393, 10367, 1, 0, 0, 0, 10393, 10374, 1, 0, 0, 0, 10393, 10380, 1, 0, 0, 0, 10393, 10387, 1, 0, 0, 0, 10393, 10392, 1, 0, 0, 0, 10394, 1525, 1, 0, 0, 0, 10395, 10404, 1, 0, 0, 0, 10396, 10404, 1, 0, 0, 0, 10397, 10404, 5, 512, 0, 0, 10398, 10404, 5, 513, 0, 0, 10399, 10404, 5, 514, 0, 0, 10400, 10404, 5, 515, 0, 0, 10401, 10404, 5, 516, 0, 0, 10402, 10404, 5, 517, 0, 0, 10403, 10395, 1, 0, 0, 0, 10403, 10396, 1, 0, 0, 0, 10403, 10397, 1, 0, 0, 0, 10403, 10398, 1, 0, 0, 0, 10403, 10399, 1, 0, 0, 0, 10403, 10400, 1, 0, 0, 0, 10403, 10401, 1, 0, 0, 0, 10403, 10402, 1, 0, 0, 0, 10404, 1527, 1, 0, 0, 0, 10405, 10413, 1, 0, 0, 0, 10406, 10407, 5, 6, 0, 0, 10407, 10409, 3, 1162, 581, 0, 10408, 10406, 1, 0, 0, 0, 10409, 10410, 1, 0, 0, 0, 10410, 10408, 1, 0, 0, 0, 10410, 10411, 1, 0, 0, 0, 10411, 10413, 1, 0, 0, 0, 10412, 10405, 1, 0, 0, 0, 10412, 10408, 1, 0, 0, 0, 10413, 1529, 1, 0, 0, 0, 10414, 10418, 1, 0, 0, 0, 10415, 10416, 5, 100, 0, 0, 10416, 10418, 3, 1534, 767, 0, 10417, 10414, 1, 0, 0, 0, 10417, 10415, 1, 0, 0, 0, 10418, 1531, 1, 0, 0, 0, 10419, 10420, 3, 1382, 691, 0, 10420, 10421, 5, 10, 0, 0, 10421, 10422, 3, 1162, 581, 0, 10422, 1533, 1, 0, 0, 0, 10423, 10428, 3, 1532, 766, 0, 10424, 10425, 5, 6, 0, 0, 10425, 10427, 3, 1532, 766, 0, 10426, 10424, 1, 0, 0, 0, 10427, 10430, 1, 0, 0, 0, 10428, 10426, 1, 0, 0, 0, 10428, 10429, 1, 0, 0, 0, 10429, 1535, 1, 0, 0, 0, 10430, 10428, 1, 0, 0, 0, 10431, 10432, 5, 518, 0, 0, 10432, 10433, 3, 1610, 805, 0, 10433, 10434, 3, 1538, 769, 0, 10434, 10435, 5, 7, 0, 0, 10435, 1537, 1, 0, 0, 0, 10436, 10440, 1, 0, 0, 0, 10437, 10438, 5, 6, 0, 0, 10438, 10440, 3, 1610, 805, 0, 10439, 10436, 1, 0, 0, 0, 10439, 10437, 1, 0, 0, 0, 10440, 1539, 1, 0, 0, 0, 10441, 10442, 5, 519, 0, 0, 10442, 10443, 3, 1452, 726, 0, 10443, 10444, 5, 454, 0, 0, 10444, 10445, 5, 519, 0, 0, 10445, 10446, 3, 1602, 801, 0, 10446, 10447, 5, 7, 0, 0, 10447, 1541, 1, 0, 0, 0, 10448, 10449, 3, 1620, 810, 0, 10449, 10450, 5, 7, 0, 0, 10450, 1543, 1, 0, 0, 0, 10451, 10452, 5, 202, 0, 0, 10452, 10460, 3, 1162, 581, 0, 10453, 10454, 3, 1550, 775, 0, 10454, 10455, 3, 1546, 773, 0, 10455, 10461, 1, 0, 0, 0, 10456, 10457, 3, 1546, 773, 0, 10457, 10458, 3, 1550, 775, 0, 10458, 10461, 1, 0, 0, 0, 10459, 10461, 1, 0, 0, 0, 10460, 10453, 1, 0, 0, 0, 10460, 10456, 1, 0, 0, 0, 10460, 10459, 1, 0, 0, 0, 10461, 10462, 1, 0, 0, 0, 10462, 10463, 5, 7, 0, 0, 10463, 1545, 1, 0, 0, 0, 10464, 10468, 1, 0, 0, 0, 10465, 10466, 5, 100, 0, 0, 10466, 10468, 3, 1548, 774, 0, 10467, 10464, 1, 0, 0, 0, 10467, 10465, 1, 0, 0, 0, 10468, 1547, 1, 0, 0, 0, 10469, 10474, 3, 1162, 581, 0, 10470, 10471, 5, 6, 0, 0, 10471, 10473, 3, 1162, 581, 0, 10472, 10470, 1, 0, 0, 0, 10473, 10476, 1, 0, 0, 0, 10474, 10472, 1, 0, 0, 0, 10474, 10475, 1, 0, 0, 0, 10475, 1549, 1, 0, 0, 0, 10476, 10474, 1, 0, 0, 0, 10477, 10484, 1, 0, 0, 0, 10478, 10480, 5, 71, 0, 0, 10479, 10481, 5, 339, 0, 0, 10480, 10479, 1, 0, 0, 0, 10480, 10481, 1, 0, 0, 0, 10481, 10482, 1, 0, 0, 0, 10482, 10484, 3, 1566, 783, 0, 10483, 10477, 1, 0, 0, 0, 10483, 10478, 1, 0, 0, 0, 10484, 1551, 1, 0, 0, 0, 10485, 10503, 5, 520, 0, 0, 10486, 10487, 3, 1586, 793, 0, 10487, 10488, 3, 1560, 780, 0, 10488, 10494, 5, 62, 0, 0, 10489, 10495, 3, 960, 480, 0, 10490, 10491, 5, 202, 0, 0, 10491, 10492, 3, 1610, 805, 0, 10492, 10493, 3, 1558, 779, 0, 10493, 10495, 1, 0, 0, 0, 10494, 10489, 1, 0, 0, 0, 10494, 10490, 1, 0, 0, 0, 10495, 10504, 1, 0, 0, 0, 10496, 10501, 3, 1372, 686, 0, 10497, 10498, 5, 2, 0, 0, 10498, 10499, 3, 1556, 778, 0, 10499, 10500, 5, 3, 0, 0, 10500, 10502, 1, 0, 0, 0, 10501, 10497, 1, 0, 0, 0, 10501, 10502, 1, 0, 0, 0, 10502, 10504, 1, 0, 0, 0, 10503, 10486, 1, 0, 0, 0, 10503, 10496, 1, 0, 0, 0, 10504, 10505, 1, 0, 0, 0, 10505, 10506, 5, 7, 0, 0, 10506, 1553, 1, 0, 0, 0, 10507, 10508, 3, 1372, 686, 0, 10508, 10509, 5, 20, 0, 0, 10509, 10510, 3, 1162, 581, 0, 10510, 10513, 1, 0, 0, 0, 10511, 10513, 3, 1162, 581, 0, 10512, 10507, 1, 0, 0, 0, 10512, 10511, 1, 0, 0, 0, 10513, 1555, 1, 0, 0, 0, 10514, 10519, 3, 1554, 777, 0, 10515, 10516, 5, 6, 0, 0, 10516, 10518, 3, 1554, 777, 0, 10517, 10515, 1, 0, 0, 0, 10518, 10521, 1, 0, 0, 0, 10519, 10517, 1, 0, 0, 0, 10519, 10520, 1, 0, 0, 0, 10520, 1557, 1, 0, 0, 0, 10521, 10519, 1, 0, 0, 0, 10522, 10526, 1, 0, 0, 0, 10523, 10524, 5, 100, 0, 0, 10524, 10526, 3, 1280, 640, 0, 10525, 10522, 1, 0, 0, 0, 10525, 10523, 1, 0, 0, 0, 10526, 1559, 1, 0, 0, 0, 10527, 10532, 1, 0, 0, 0, 10528, 10529, 3, 1562, 781, 0, 10529, 10530, 5, 317, 0, 0, 10530, 10532, 1, 0, 0, 0, 10531, 10527, 1, 0, 0, 0, 10531, 10528, 1, 0, 0, 0, 10532, 1561, 1, 0, 0, 0, 10533, 10536, 1, 0, 0, 0, 10534, 10536, 5, 262, 0, 0, 10535, 10533, 1, 0, 0, 0, 10535, 10534, 1, 0, 0, 0, 10536, 1563, 1, 0, 0, 0, 10537, 10538, 5, 61, 0, 0, 10538, 10539, 3, 1570, 785, 0, 10539, 10540, 3, 1568, 784, 0, 10540, 10541, 3, 1586, 793, 0, 10541, 10542, 5, 71, 0, 0, 10542, 10543, 3, 1566, 783, 0, 10543, 10544, 5, 7, 0, 0, 10544, 1565, 1, 0, 0, 0, 10545, 10546, 3, 1280, 640, 0, 10546, 1567, 1, 0, 0, 0, 10547, 10551, 1, 0, 0, 0, 10548, 10551, 5, 64, 0, 0, 10549, 10551, 5, 68, 0, 0, 10550, 10547, 1, 0, 0, 0, 10550, 10548, 1, 0, 0, 0, 10550, 10549, 1, 0, 0, 0, 10551, 1569, 1, 0, 0, 0, 10552, 10570, 1, 0, 0, 0, 10553, 10570, 1, 0, 0, 0, 10554, 10570, 5, 261, 0, 0, 10555, 10570, 5, 286, 0, 0, 10556, 10570, 5, 207, 0, 0, 10557, 10570, 5, 240, 0, 0, 10558, 10559, 5, 130, 0, 0, 10559, 10570, 3, 1162, 581, 0, 10560, 10561, 5, 300, 0, 0, 10561, 10570, 3, 1162, 581, 0, 10562, 10570, 3, 1162, 581, 0, 10563, 10570, 5, 30, 0, 0, 10564, 10567, 7, 67, 0, 0, 10565, 10568, 3, 1162, 581, 0, 10566, 10568, 5, 30, 0, 0, 10567, 10565, 1, 0, 0, 0, 10567, 10566, 1, 0, 0, 0, 10567, 10568, 1, 0, 0, 0, 10568, 10570, 1, 0, 0, 0, 10569, 10552, 1, 0, 0, 0, 10569, 10553, 1, 0, 0, 0, 10569, 10554, 1, 0, 0, 0, 10569, 10555, 1, 0, 0, 0, 10569, 10556, 1, 0, 0, 0, 10569, 10557, 1, 0, 0, 0, 10569, 10558, 1, 0, 0, 0, 10569, 10560, 1, 0, 0, 0, 10569, 10562, 1, 0, 0, 0, 10569, 10563, 1, 0, 0, 0, 10569, 10564, 1, 0, 0, 0, 10570, 1571, 1, 0, 0, 0, 10571, 10572, 5, 258, 0, 0, 10572, 10573, 3, 1570, 785, 0, 10573, 10574, 3, 1586, 793, 0, 10574, 10575, 5, 7, 0, 0, 10575, 1573, 1, 0, 0, 0, 10576, 10577, 5, 157, 0, 0, 10577, 10578, 3, 1586, 793, 0, 10578, 10579, 5, 7, 0, 0, 10579, 1575, 1, 0, 0, 0, 10580, 10581, 5, 78, 0, 0, 10581, 10582, 5, 7, 0, 0, 10582, 1577, 1, 0, 0, 0, 10583, 10584, 5, 161, 0, 0, 10584, 10585, 3, 1582, 791, 0, 10585, 10586, 5, 7, 0, 0, 10586, 1579, 1, 0, 0, 0, 10587, 10588, 5, 312, 0, 0, 10588, 10589, 3, 1582, 791, 0, 10589, 10590, 5, 7, 0, 0, 10590, 1581, 1, 0, 0, 0, 10591, 10593, 5, 33, 0, 0, 10592, 10594, 5, 262, 0, 0, 10593, 10592, 1, 0, 0, 0, 10593, 10594, 1, 0, 0, 0, 10594, 10595, 1, 0, 0, 0, 10595, 10598, 5, 153, 0, 0, 10596, 10598, 1, 0, 0, 0, 10597, 10591, 1, 0, 0, 0, 10597, 10596, 1, 0, 0, 0, 10598, 1583, 1, 0, 0, 0, 10599, 10600, 5, 326, 0, 0, 10600, 10601, 3, 524, 262, 0, 10601, 10602, 5, 94, 0, 0, 10602, 10603, 5, 53, 0, 0, 10603, 10604, 5, 7, 0, 0, 10604, 10612, 1, 0, 0, 0, 10605, 10608, 5, 306, 0, 0, 10606, 10609, 3, 524, 262, 0, 10607, 10609, 5, 30, 0, 0, 10608, 10606, 1, 0, 0, 0, 10608, 10607, 1, 0, 0, 0, 10609, 10610, 1, 0, 0, 0, 10610, 10612, 5, 7, 0, 0, 10611, 10599, 1, 0, 0, 0, 10611, 10605, 1, 0, 0, 0, 10612, 1585, 1, 0, 0, 0, 10613, 10616, 3, 1372, 686, 0, 10614, 10616, 5, 28, 0, 0, 10615, 10613, 1, 0, 0, 0, 10615, 10614, 1, 0, 0, 0, 10616, 1587, 1, 0, 0, 0, 10617, 10621, 1, 0, 0, 0, 10618, 10619, 5, 517, 0, 0, 10619, 10621, 3, 1590, 795, 0, 10620, 10617, 1, 0, 0, 0, 10620, 10618, 1, 0, 0, 0, 10621, 1589, 1, 0, 0, 0, 10622, 10624, 3, 1592, 796, 0, 10623, 10622, 1, 0, 0, 0, 10624, 10625, 1, 0, 0, 0, 10625, 10623, 1, 0, 0, 0, 10625, 10626, 1, 0, 0, 0, 10626, 1591, 1, 0, 0, 0, 10627, 10628, 5, 102, 0, 0, 10628, 10629, 3, 1594, 797, 0, 10629, 10630, 5, 93, 0, 0, 10630, 10631, 3, 1452, 726, 0, 10631, 1593, 1, 0, 0, 0, 10632, 10637, 3, 1596, 798, 0, 10633, 10634, 5, 82, 0, 0, 10634, 10636, 3, 1596, 798, 0, 10635, 10633, 1, 0, 0, 0, 10636, 10639, 1, 0, 0, 0, 10637, 10635, 1, 0, 0, 0, 10637, 10638, 1, 0, 0, 0, 10638, 1595, 1, 0, 0, 0, 10639, 10637, 1, 0, 0, 0, 10640, 10644, 3, 1606, 803, 0, 10641, 10642, 5, 511, 0, 0, 10642, 10644, 3, 1358, 679, 0, 10643, 10640, 1, 0, 0, 0, 10643, 10641, 1, 0, 0, 0, 10644, 1597, 1, 0, 0, 0, 10645, 10648, 1, 0, 0, 0, 10646, 10648, 3, 1416, 708, 0, 10647, 10645, 1, 0, 0, 0, 10647, 10646, 1, 0, 0, 0, 10648, 1599, 1, 0, 0, 0, 10649, 10652, 1, 0, 0, 0, 10650, 10652, 3, 1416, 708, 0, 10651, 10649, 1, 0, 0, 0, 10651, 10650, 1, 0, 0, 0, 10652, 1601, 1, 0, 0, 0, 10653, 10656, 1, 0, 0, 0, 10654, 10656, 3, 1606, 803, 0, 10655, 10653, 1, 0, 0, 0, 10655, 10654, 1, 0, 0, 0, 10656, 1603, 1, 0, 0, 0, 10657, 10658, 5, 102, 0, 0, 10658, 10661, 3, 1614, 807, 0, 10659, 10661, 1, 0, 0, 0, 10660, 10657, 1, 0, 0, 0, 10660, 10659, 1, 0, 0, 0, 10661, 1605, 1, 0, 0, 0, 10662, 10665, 3, 1372, 686, 0, 10663, 10665, 3, 1608, 804, 0, 10664, 10662, 1, 0, 0, 0, 10664, 10663, 1, 0, 0, 0, 10665, 1607, 1, 0, 0, 0, 10666, 10667, 7, 68, 0, 0, 10667, 1609, 1, 0, 0, 0, 10668, 10669, 3, 1328, 664, 0, 10669, 10670, 3, 982, 491, 0, 10670, 10671, 3, 1054, 527, 0, 10671, 10672, 3, 1094, 547, 0, 10672, 10673, 3, 1024, 512, 0, 10673, 10674, 3, 1038, 519, 0, 10674, 10675, 3, 1240, 620, 0, 10675, 1611, 1, 0, 0, 0, 10676, 10677, 3, 1610, 805, 0, 10677, 1613, 1, 0, 0, 0, 10678, 10679, 3, 1610, 805, 0, 10679, 1615, 1, 0, 0, 0, 10680, 10681, 3, 1162, 581, 0, 10681, 1617, 1, 0, 0, 0, 10682, 10683, 3, 1162, 581, 0, 10683, 1619, 1, 0, 0, 0, 10684, 10685, 3, 8, 4, 0, 10685, 10686, 3, 1622, 811, 0, 10686, 1621, 1, 0, 0, 0, 10687, 10688, 5, 71, 0, 0, 10688, 10689, 3, 984, 492, 0, 10689, 10690, 3, 1566, 783, 0, 10690, 10693, 1, 0, 0, 0, 10691, 10693, 1, 0, 0, 0, 10692, 10687, 1, 0, 0, 0, 10692, 10691, 1, 0, 0, 0, 10693, 1623, 1, 0, 0, 0, 744, 1633, 1637, 1765, 1769, 1782, 1787, 1793, 1799, 1814, 1826, 1844, 1849, 1859, 1883, 1890, 1896, 1901, 1910, 1914, 1926, 1957, 1964, 1972, 1977, 1984, 1990, 2007, 2012, 2016, 2029, 2033, 2038, 2043, 2055, 2064, 2077, 2082, 2093, 2104, 2109, 2120, 2131, 2140, 2150, 2165, 2177, 2182, 2189, 2200, 2458, 2465, 2470, 2475, 2480, 2488, 2497, 2504, 2514, 2516, 2521, 2527, 2533, 2535, 2563, 2573, 2586, 2598, 2612, 2617, 2641, 2647, 2652, 2659, 2664, 2702, 2706, 2713, 2717, 2724, 2738, 2745, 2756, 2789, 2799, 2803, 2810, 2817, 2825, 2831, 2835, 2845, 2852, 2863, 2895, 2903, 2908, 2915, 2925, 2935, 2955, 2970, 2995, 3000, 3007, 3014, 3025, 3030, 3037, 3048, 3056, 3067, 3083, 3091, 3095, 3109, 3126, 3131, 3138, 3147, 3150, 3155, 3162, 3173, 3186, 3199, 3217, 3220, 3229, 3244, 3259, 3268, 3275, 3282, 3287, 3317, 3319, 3323, 3331, 3338, 3352, 3356, 3360, 3365, 3371, 3375, 3379, 3392, 3398, 3407, 3416, 3426, 3437, 3547, 3565, 3570, 3574, 3591, 3599, 3606, 3619, 3629, 3663, 3668, 3673, 3677, 3685, 3687, 3745, 3762, 3770, 3793, 3797, 3817, 3854, 3863, 3868, 3873, 3878, 3883, 3936, 3942, 3949, 3959, 3964, 3969, 3987, 3991, 4001, 4007, 4013, 4020, 4025, 4030, 4044, 4072, 4079, 4093, 4108, 4225, 4236, 4242, 4250, 4261, 4270, 4277, 4317, 4323, 4344, 4372, 4376, 4381, 4390, 4394, 4421, 4428, 4443, 4463, 4483, 4576, 4601, 4608, 4624, 4633, 4638, 4644, 4651, 4665, 4814, 4818, 4911, 4916, 4920, 4926, 4994, 5000, 5029, 5046, 5053, 5065, 5125, 5132, 5138, 5144, 5170, 5176, 5182, 5193, 5205, 5234, 5273, 5277, 5281, 5285, 5290, 5297, 5311, 5324, 5332, 5339, 5345, 5349, 5354, 5361, 5375, 5377, 5384, 5388, 5397, 5405, 5414, 5416, 5420, 5429, 5434, 5440, 5445, 5449, 5454, 5460, 5466, 5472, 5478, 5483, 5498, 5507, 5518, 5524, 5563, 5573, 5580, 5591, 5597, 5607, 5619, 5623, 5661, 5675, 5689, 5713, 5720, 5730, 5742, 5747, 5783, 5790, 5805, 5852, 5889, 5900, 5917, 6387, 6391, 6396, 6455, 6459, 6678, 6693, 6704, 6711, 6904, 6914, 6922, 6951, 6967, 7009, 7023, 7045, 7052, 7060, 7064, 7071, 7080, 7089, 7141, 7146, 7158, 7162, 7167, 7172, 7176, 7180, 7185, 7201, 7209, 7214, 7227, 7232, 7239, 7249, 7253, 7264, 7275, 7283, 7290, 7329, 7337, 7341, 7422, 7450, 7455, 7470, 7482, 7489, 7499, 7504, 7508, 7512, 7516, 7520, 7527, 7537, 7542, 7560, 7571, 7578, 7586, 7591, 7604, 7610, 7639, 7646, 7658, 7671, 7686, 7692, 7701, 7717, 7720, 7731, 7736, 7740, 7744, 7749, 7752, 7758, 7762, 7764, 7767, 7774, 7777, 7784, 7792, 7795, 7804, 7819, 7832, 7843, 7846, 7850, 7856, 7872, 7885, 7895, 7913, 7915, 7923, 7927, 7937, 7947, 7958, 7960, 7969, 7979, 7990, 8003, 8007, 8016, 8031, 8035, 8042, 8045, 8049, 8052, 8065, 8069, 8074, 8082, 8086, 8090, 8101, 8108, 8114, 8118, 8120, 8124, 8130, 8139, 8145, 8147, 8149, 8156, 8160, 8169, 8173, 8183, 8190, 8198, 8222, 8228, 8232, 8237, 8246, 8250, 8253, 8258, 8271, 8277, 8285, 8288, 8295, 8300, 8321, 8330, 8335, 8341, 8346, 8353, 8358, 8364, 8366, 8370, 8377, 8381, 8384, 8391, 8396, 8399, 8406, 8410, 8419, 8423, 8431, 8433, 8440, 8445, 8448, 8463, 8475, 8485, 8494, 8499, 8504, 8511, 8514, 8518, 8525, 8549, 8558, 8564, 8568, 8573, 8583, 8590, 8599, 8602, 8611, 8613, 8619, 8623, 8628, 8642, 8644, 8650, 8656, 8659, 8668, 8686, 8693, 8697, 8701, 8717, 8724, 8732, 8736, 8743, 8756, 8772, 8778, 8784, 8791, 8796, 8802, 8809, 8817, 8825, 8830, 8834, 8840, 8844, 8848, 8851, 8857, 8862, 8878, 8881, 8883, 8895, 8897, 8901, 8907, 8912, 8920, 8924, 8933, 8941, 8947, 8950, 8959, 8964, 8971, 8981, 9007, 9018, 9020, 9022, 9030, 9053, 9061, 9071, 9085, 9095, 9099, 9113, 9120, 9127, 9134, 9159, 9188, 9227, 9229, 9257, 9278, 9285, 9298, 9310, 9316, 9325, 9342, 9354, 9363, 9368, 9375, 9385, 9388, 9399, 9405, 9420, 9428, 9437, 9446, 9449, 9454, 9463, 9468, 9482, 9492, 9500, 9514, 9521, 9529, 9537, 9544, 9550, 9559, 9567, 9577, 9588, 9595, 9624, 9633, 9640, 9651, 9661, 9665, 9669, 9674, 9682, 9686, 9690, 9695, 9700, 9705, 9712, 9720, 9723, 9730, 9735, 9742, 9758, 9773, 9787, 9792, 9811, 9816, 9821, 9828, 9835, 9842, 9851, 9857, 9863, 9869, 9877, 9886, 9944, 9959, 9982, 9990, 9994, 10006, 10008, 10015, 10024, 10042, 10050, 10059, 10066, 10076, 10082, 10089, 10094, 10100, 10104, 10111, 10141, 10161, 10165, 10181, 10188, 10201, 10209, 10229, 10235, 10247, 10252, 10262, 10294, 10299, 10308, 10313, 10317, 10322, 10338, 10356, 10359, 10365, 10393, 10403, 10410, 10412, 10417, 10428, 10439, 10460, 10467, 10474, 10480, 10483, 10494, 10501, 10503, 10512, 10519, 10525, 10531, 10535, 10550, 10567, 10569, 10593, 10597, 10608, 10611, 10615, 10620, 10625, 10637, 10643, 10647, 10651, 10655, 10660, 10664, 10692] \ No newline at end of file diff --git a/antlr4_postgresql/PostgreSQLParser.py b/antlr4_postgresql/PostgreSQLParser.py deleted file mode 100644 index 737bbde..0000000 --- a/antlr4_postgresql/PostgreSQLParser.py +++ /dev/null @@ -1,81199 +0,0 @@ -# Generated from PostgreSQLParser.g4 by ANTLR 4.13.2 -# encoding: utf-8 -from antlr4 import * -from io import StringIO -import sys -if sys.version_info[1] > 5: - from typing import TextIO -else: - from typing.io import TextIO - -def serializedATN(): - return [ - 4,1,679,10695,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2, - 6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13, - 7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19, - 2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26, - 7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32, - 2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39, - 7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45, - 2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52, - 7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58, - 2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65, - 7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71, - 2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78, - 7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84, - 2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91, - 7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97, - 2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7, - 103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, - 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, - 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, - 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, - 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, - 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, - 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, - 2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147, - 7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152, - 2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158, - 7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163, - 2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, - 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, - 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180, - 7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, - 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191, - 7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196, - 2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202, - 7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207, - 2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213, - 7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218, - 2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224, - 7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229, - 2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, - 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240, - 2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246, - 7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251, - 2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257, - 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, - 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, - 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, - 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, - 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, - 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, - 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, - 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, - 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, - 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, - 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, - 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, - 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, - 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, - 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, - 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, - 7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350, - 2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356, - 7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361, - 2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367, - 7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372, - 2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378, - 7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383, - 2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389, - 7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394, - 2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400, - 7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405, - 2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411, - 7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416, - 2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422, - 7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427, - 2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433, - 7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438, - 2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444, - 7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449, - 2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455, - 7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460, - 2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466, - 7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471, - 2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477, - 7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482, - 2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488, - 7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493, - 2,494,7,494,2,495,7,495,2,496,7,496,2,497,7,497,2,498,7,498,2,499, - 7,499,2,500,7,500,2,501,7,501,2,502,7,502,2,503,7,503,2,504,7,504, - 2,505,7,505,2,506,7,506,2,507,7,507,2,508,7,508,2,509,7,509,2,510, - 7,510,2,511,7,511,2,512,7,512,2,513,7,513,2,514,7,514,2,515,7,515, - 2,516,7,516,2,517,7,517,2,518,7,518,2,519,7,519,2,520,7,520,2,521, - 7,521,2,522,7,522,2,523,7,523,2,524,7,524,2,525,7,525,2,526,7,526, - 2,527,7,527,2,528,7,528,2,529,7,529,2,530,7,530,2,531,7,531,2,532, - 7,532,2,533,7,533,2,534,7,534,2,535,7,535,2,536,7,536,2,537,7,537, - 2,538,7,538,2,539,7,539,2,540,7,540,2,541,7,541,2,542,7,542,2,543, - 7,543,2,544,7,544,2,545,7,545,2,546,7,546,2,547,7,547,2,548,7,548, - 2,549,7,549,2,550,7,550,2,551,7,551,2,552,7,552,2,553,7,553,2,554, - 7,554,2,555,7,555,2,556,7,556,2,557,7,557,2,558,7,558,2,559,7,559, - 2,560,7,560,2,561,7,561,2,562,7,562,2,563,7,563,2,564,7,564,2,565, - 7,565,2,566,7,566,2,567,7,567,2,568,7,568,2,569,7,569,2,570,7,570, - 2,571,7,571,2,572,7,572,2,573,7,573,2,574,7,574,2,575,7,575,2,576, - 7,576,2,577,7,577,2,578,7,578,2,579,7,579,2,580,7,580,2,581,7,581, - 2,582,7,582,2,583,7,583,2,584,7,584,2,585,7,585,2,586,7,586,2,587, - 7,587,2,588,7,588,2,589,7,589,2,590,7,590,2,591,7,591,2,592,7,592, - 2,593,7,593,2,594,7,594,2,595,7,595,2,596,7,596,2,597,7,597,2,598, - 7,598,2,599,7,599,2,600,7,600,2,601,7,601,2,602,7,602,2,603,7,603, - 2,604,7,604,2,605,7,605,2,606,7,606,2,607,7,607,2,608,7,608,2,609, - 7,609,2,610,7,610,2,611,7,611,2,612,7,612,2,613,7,613,2,614,7,614, - 2,615,7,615,2,616,7,616,2,617,7,617,2,618,7,618,2,619,7,619,2,620, - 7,620,2,621,7,621,2,622,7,622,2,623,7,623,2,624,7,624,2,625,7,625, - 2,626,7,626,2,627,7,627,2,628,7,628,2,629,7,629,2,630,7,630,2,631, - 7,631,2,632,7,632,2,633,7,633,2,634,7,634,2,635,7,635,2,636,7,636, - 2,637,7,637,2,638,7,638,2,639,7,639,2,640,7,640,2,641,7,641,2,642, - 7,642,2,643,7,643,2,644,7,644,2,645,7,645,2,646,7,646,2,647,7,647, - 2,648,7,648,2,649,7,649,2,650,7,650,2,651,7,651,2,652,7,652,2,653, - 7,653,2,654,7,654,2,655,7,655,2,656,7,656,2,657,7,657,2,658,7,658, - 2,659,7,659,2,660,7,660,2,661,7,661,2,662,7,662,2,663,7,663,2,664, - 7,664,2,665,7,665,2,666,7,666,2,667,7,667,2,668,7,668,2,669,7,669, - 2,670,7,670,2,671,7,671,2,672,7,672,2,673,7,673,2,674,7,674,2,675, - 7,675,2,676,7,676,2,677,7,677,2,678,7,678,2,679,7,679,2,680,7,680, - 2,681,7,681,2,682,7,682,2,683,7,683,2,684,7,684,2,685,7,685,2,686, - 7,686,2,687,7,687,2,688,7,688,2,689,7,689,2,690,7,690,2,691,7,691, - 2,692,7,692,2,693,7,693,2,694,7,694,2,695,7,695,2,696,7,696,2,697, - 7,697,2,698,7,698,2,699,7,699,2,700,7,700,2,701,7,701,2,702,7,702, - 2,703,7,703,2,704,7,704,2,705,7,705,2,706,7,706,2,707,7,707,2,708, - 7,708,2,709,7,709,2,710,7,710,2,711,7,711,2,712,7,712,2,713,7,713, - 2,714,7,714,2,715,7,715,2,716,7,716,2,717,7,717,2,718,7,718,2,719, - 7,719,2,720,7,720,2,721,7,721,2,722,7,722,2,723,7,723,2,724,7,724, - 2,725,7,725,2,726,7,726,2,727,7,727,2,728,7,728,2,729,7,729,2,730, - 7,730,2,731,7,731,2,732,7,732,2,733,7,733,2,734,7,734,2,735,7,735, - 2,736,7,736,2,737,7,737,2,738,7,738,2,739,7,739,2,740,7,740,2,741, - 7,741,2,742,7,742,2,743,7,743,2,744,7,744,2,745,7,745,2,746,7,746, - 2,747,7,747,2,748,7,748,2,749,7,749,2,750,7,750,2,751,7,751,2,752, - 7,752,2,753,7,753,2,754,7,754,2,755,7,755,2,756,7,756,2,757,7,757, - 2,758,7,758,2,759,7,759,2,760,7,760,2,761,7,761,2,762,7,762,2,763, - 7,763,2,764,7,764,2,765,7,765,2,766,7,766,2,767,7,767,2,768,7,768, - 2,769,7,769,2,770,7,770,2,771,7,771,2,772,7,772,2,773,7,773,2,774, - 7,774,2,775,7,775,2,776,7,776,2,777,7,777,2,778,7,778,2,779,7,779, - 2,780,7,780,2,781,7,781,2,782,7,782,2,783,7,783,2,784,7,784,2,785, - 7,785,2,786,7,786,2,787,7,787,2,788,7,788,2,789,7,789,2,790,7,790, - 2,791,7,791,2,792,7,792,2,793,7,793,2,794,7,794,2,795,7,795,2,796, - 7,796,2,797,7,797,2,798,7,798,2,799,7,799,2,800,7,800,2,801,7,801, - 2,802,7,802,2,803,7,803,2,804,7,804,2,805,7,805,2,806,7,806,2,807, - 7,807,2,808,7,808,2,809,7,809,2,810,7,810,2,811,7,811,1,0,1,0,1, - 0,1,1,1,1,1,2,1,2,1,3,1,3,3,3,1634,8,3,5,3,1636,8,3,10,3,12,3,1639, - 9,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, - 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,1766, - 8,4,1,5,1,5,3,5,1770,8,5,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,8, - 1,8,3,8,1783,8,8,1,9,5,9,1786,8,9,10,9,12,9,1789,9,9,1,10,5,10,1792, - 8,10,10,10,12,10,1795,9,10,1,11,1,11,1,11,3,11,1800,8,11,1,11,1, - 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1815, - 8,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1827, - 8,12,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14, - 1,15,1,15,1,15,1,15,3,15,1845,8,15,1,16,1,16,1,16,3,16,1850,8,16, - 1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,3,17,1860,8,17,1,17,1,17, - 1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19, - 1,20,1,20,1,21,1,21,1,21,1,21,1,21,3,21,1884,8,21,1,21,1,21,1,21, - 1,21,1,21,3,21,1891,8,21,1,21,1,21,1,22,1,22,3,22,1897,8,22,1,23, - 5,23,1900,8,23,10,23,12,23,1903,9,23,1,24,1,24,1,24,1,24,1,24,1, - 24,3,24,1911,8,24,1,25,1,25,3,25,1915,8,25,1,25,1,25,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,3,26,1927,8,26,1,27,1,27,1,27,1,27,1, - 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, - 28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1958, - 8,28,1,29,1,29,1,29,5,29,1963,8,29,10,29,12,29,1966,9,29,1,30,1, - 30,1,30,5,30,1971,8,30,10,30,12,30,1974,9,30,1,31,1,31,3,31,1978, - 8,31,1,32,1,32,1,32,1,32,1,32,3,32,1985,8,32,1,33,1,33,1,33,1,33, - 3,33,1991,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34, - 1,34,1,34,1,34,1,34,1,34,3,34,2008,8,34,1,35,1,35,1,35,3,35,2013, - 8,35,1,36,1,36,3,36,2017,8,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,3,38,2030,8,38,1,39,1,39,3,39,2034,8,39,1,40, - 1,40,1,40,3,40,2039,8,40,1,41,1,41,1,41,3,41,2044,8,41,1,42,1,42, - 1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,2056,8,42,1,43,1,43, - 1,43,1,43,1,43,1,44,1,44,3,44,2065,8,44,1,45,1,45,1,46,1,46,1,47, - 1,47,1,47,1,48,1,48,1,48,1,48,3,48,2078,8,48,1,48,1,48,1,48,3,48, - 2083,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2094, - 8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2105,8,48, - 1,48,1,48,1,48,3,48,2110,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48, - 1,48,1,48,3,48,2121,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48, - 1,48,3,48,2132,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2141, - 8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,2151,8,48,1,48, - 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48, - 2166,8,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48, - 2178,8,48,1,48,1,48,1,48,3,48,2183,8,48,1,49,1,49,1,49,5,49,2188, - 8,49,10,49,12,49,2191,9,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, - 50,3,50,2201,8,50,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3, - 52,2459,8,52,1,53,1,53,1,53,1,53,1,53,3,53,2466,8,53,1,54,1,54,1, - 54,3,54,2471,8,54,1,55,1,55,1,55,3,55,2476,8,55,1,56,1,56,1,56,3, - 56,2481,8,56,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2489,8,57,1,58,1, - 58,1,58,1,58,1,59,1,59,1,59,3,59,2498,8,59,1,60,1,60,1,60,5,60,2503, - 8,60,10,60,12,60,2506,9,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,3, - 61,2515,8,61,3,61,2517,8,61,1,62,4,62,2520,8,62,11,62,12,62,2521, - 1,63,1,63,1,63,1,63,3,63,2528,8,63,1,63,1,63,1,63,1,63,3,63,2534, - 8,63,3,63,2536,8,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64, - 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64, - 1,64,1,64,1,64,1,64,3,64,2564,8,64,1,65,1,65,1,65,1,66,1,66,1,66, - 5,66,2572,8,66,10,66,12,66,2575,9,66,1,67,1,67,1,67,1,67,1,67,1, - 68,1,68,1,68,5,68,2585,8,68,10,68,12,68,2588,9,68,1,69,1,69,1,69, - 1,69,1,69,1,69,1,69,1,69,1,69,3,69,2599,8,69,1,69,1,69,1,69,1,69, - 1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,3,69,2613,8,69,1,70,1,70, - 1,70,3,70,2618,8,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71, - 1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71, - 3,71,2642,8,71,1,72,1,72,1,73,1,73,3,73,2648,8,73,1,74,1,74,1,74, - 3,74,2653,8,74,1,75,1,75,1,75,1,75,1,75,3,75,2660,8,75,1,76,5,76, - 2663,8,76,10,76,12,76,2666,9,76,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,3,77,2703,8,77,1,78,1,78,3,78,2707,8,78,1,79,1,79,1, - 79,1,79,1,79,3,79,2714,8,79,1,80,1,80,3,80,2718,8,80,1,81,1,81,1, - 81,5,81,2723,8,81,10,81,12,81,2726,9,81,1,82,1,82,1,82,1,83,1,83, - 1,83,1,83,1,83,1,83,1,83,1,83,3,83,2739,8,83,1,84,1,84,1,84,5,84, - 2744,8,84,10,84,12,84,2747,9,84,1,85,1,85,1,86,1,86,1,86,1,86,1, - 86,1,86,3,86,2757,8,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,3,86,2790,8,86,1, - 87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,3,87,2800,8,87,1,88,1,88,3, - 88,2804,8,88,1,89,1,89,1,89,1,89,1,89,3,89,2811,8,89,1,90,1,90,1, - 90,5,90,2816,8,90,10,90,12,90,2819,9,90,1,91,1,91,1,91,5,91,2824, - 8,91,10,91,12,91,2827,9,91,1,92,1,92,1,92,3,92,2832,8,92,1,93,1, - 93,3,93,2836,8,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,3,95,2846, - 8,95,1,95,1,95,1,96,5,96,2851,8,96,10,96,12,96,2854,9,96,1,97,1, - 97,1,97,1,97,1,97,1,97,1,97,1,97,3,97,2864,8,97,1,98,1,98,1,98,1, - 98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1, - 98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1, - 98,3,98,2896,8,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,2904,8,98,1, - 99,1,99,1,99,3,99,2909,8,99,1,100,1,100,1,100,1,100,1,100,3,100, - 2916,8,100,1,101,1,101,1,101,1,101,1,102,1,102,5,102,2924,8,102, - 10,102,12,102,2927,9,102,1,103,1,103,1,104,1,104,1,104,1,104,1,104, - 3,104,2936,8,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,3,105, - 2956,8,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,3,105,2971,8,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,3,105,2996,8,105, - 1,106,1,106,1,106,3,106,3001,8,106,1,107,1,107,1,107,1,107,1,107, - 3,107,3008,8,107,1,108,1,108,1,108,5,108,3013,8,108,10,108,12,108, - 3016,9,108,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,3,110, - 3026,8,110,1,111,1,111,1,111,3,111,3031,8,111,1,112,1,112,1,112, - 5,112,3036,8,112,10,112,12,112,3039,9,112,1,113,1,113,1,113,1,113, - 1,113,1,113,1,113,1,113,3,113,3049,8,113,1,114,1,114,1,114,1,114, - 1,114,1,114,3,114,3057,8,114,1,115,1,115,1,115,1,115,1,115,1,115, - 1,115,1,115,1,115,3,115,3068,8,115,1,116,1,116,1,116,1,116,1,117, - 1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,3,118,3084, - 8,118,1,119,1,119,1,119,1,119,1,119,1,119,3,119,3092,8,119,1,120, - 1,120,3,120,3096,8,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,122,1,122,1,122,5,122,3108,8,122,10,122,12,122,3111,9,122,1,123, - 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123, - 1,123,1,123,3,123,3127,8,123,1,124,1,124,1,124,3,124,3132,8,124, - 1,125,1,125,1,125,1,125,1,125,3,125,3139,8,125,1,126,1,126,1,126, - 1,126,1,126,1,126,1,126,3,126,3148,8,126,1,126,3,126,3151,8,126, - 1,127,1,127,1,127,3,127,3156,8,127,1,128,1,128,1,128,1,128,1,128, - 3,128,3163,8,128,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130, - 1,130,3,130,3174,8,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, - 1,131,1,131,1,131,1,131,3,131,3187,8,131,1,131,1,131,1,131,1,131, - 1,131,1,132,1,132,1,132,1,132,1,132,1,132,3,132,3200,8,132,1,132, - 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,134,1,134,1,134,1,134,3,134,3218,8,134,1,134,3,134,3221,8,134, - 1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,3230,8,135,1,135, - 1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,137, - 1,137,3,137,3245,8,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138, - 1,139,1,139,1,139,1,139,1,139,1,139,3,139,3260,8,139,1,139,1,139, - 1,139,1,140,1,140,1,140,1,140,3,140,3269,8,140,1,140,1,140,1,140, - 1,141,1,141,3,141,3276,8,141,1,142,1,142,1,142,1,142,1,142,3,142, - 3283,8,142,1,143,4,143,3286,8,143,11,143,12,143,3287,1,144,1,144, - 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, - 1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144, - 1,144,1,144,1,144,1,144,3,144,3318,8,144,3,144,3320,8,144,1,145, - 1,145,3,145,3324,8,145,1,146,1,146,1,146,1,146,1,146,1,146,3,146, - 3332,8,146,1,147,1,147,1,147,5,147,3337,8,147,10,147,12,147,3340, - 9,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148, - 1,148,3,148,3353,8,148,1,149,1,149,3,149,3357,8,149,1,150,1,150, - 3,150,3361,8,150,1,151,1,151,1,151,3,151,3366,8,151,1,152,1,152, - 1,152,1,152,3,152,3372,8,152,1,153,1,153,3,153,3376,8,153,1,154, - 1,154,3,154,3380,8,154,1,155,1,155,1,155,1,155,1,155,1,155,1,155, - 1,155,1,156,1,156,1,156,3,156,3393,8,156,1,157,1,157,1,157,1,157, - 3,157,3399,8,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,3,158, - 3408,8,158,1,158,1,158,1,158,1,158,1,159,5,159,3415,8,159,10,159, - 12,159,3418,9,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,3,160, - 3427,8,160,1,161,1,161,1,161,1,161,1,161,1,161,1,162,5,162,3436, - 8,162,10,162,12,162,3439,9,162,1,163,1,163,1,163,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,3,164,3548,8,164,1,165,1,165,1,165,1,165,1,165,1,165, - 1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,3,166, - 3566,8,166,1,167,4,167,3569,8,167,11,167,12,167,3570,1,168,1,168, - 3,168,3575,8,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169, - 1,169,1,169,1,169,1,169,1,169,1,169,1,169,3,169,3592,8,169,1,170, - 1,170,1,170,1,170,1,170,1,170,3,170,3600,8,170,1,171,1,171,1,171, - 5,171,3605,8,171,10,171,12,171,3608,9,171,1,172,1,172,1,172,1,172, - 1,172,1,173,1,173,1,173,5,173,3618,8,173,10,173,12,173,3621,9,173, - 1,174,1,174,1,174,1,174,1,174,1,174,1,174,3,174,3630,8,174,1,175, - 1,175,1,175,1,176,1,176,1,177,1,177,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,1,178,3,178,3664, - 8,178,1,179,1,179,1,179,3,179,3669,8,179,1,180,1,180,1,180,3,180, - 3674,8,180,1,181,1,181,3,181,3678,8,181,1,182,1,182,1,182,1,182, - 1,182,1,182,3,182,3686,8,182,3,182,3688,8,182,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,1,183,3,183,3746, - 8,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184, - 1,184,1,184,1,185,1,185,1,185,3,185,3763,8,185,1,186,1,186,1,186, - 1,186,1,186,1,186,3,186,3771,8,186,1,187,1,187,1,187,1,187,1,187, - 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187, - 1,187,1,187,1,187,1,187,1,187,3,187,3794,8,187,1,188,1,188,3,188, - 3798,8,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, - 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,3,189,3818, - 8,189,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,191, - 1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,192, - 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193,1,193, - 1,193,1,193,1,193,3,193,3855,8,193,1,194,1,194,1,194,1,194,1,194, - 1,194,1,194,3,194,3864,8,194,1,195,1,195,1,195,3,195,3869,8,195, - 1,196,1,196,1,196,3,196,3874,8,196,1,197,1,197,1,197,3,197,3879, - 8,197,1,198,1,198,1,198,3,198,3884,8,198,1,199,1,199,1,200,1,200, - 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,202,1,202, - 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202, - 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202, - 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202, - 1,202,1,202,1,202,3,202,3937,8,202,1,203,1,203,1,203,1,203,3,203, - 3943,8,203,1,204,1,204,1,204,5,204,3948,8,204,10,204,12,204,3951, - 9,204,1,205,1,205,1,205,1,205,1,205,1,205,1,205,3,205,3960,8,205, - 1,206,1,206,1,206,3,206,3965,8,206,1,207,4,207,3968,8,207,11,207, - 12,207,3969,1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,210,1,210, - 1,211,1,211,1,212,1,212,1,212,1,212,1,212,3,212,3988,8,212,1,213, - 1,213,3,213,3992,8,213,1,214,1,214,1,215,1,215,1,215,1,215,1,215, - 1,215,3,215,4002,8,215,1,216,1,216,1,217,1,217,3,217,4008,8,217, - 1,217,1,217,5,217,4012,8,217,10,217,12,217,4015,9,217,1,218,1,218, - 1,218,1,218,3,218,4021,8,218,1,219,1,219,1,219,3,219,4026,8,219, - 1,220,5,220,4029,8,220,10,220,12,220,4032,9,220,1,221,1,221,1,221, - 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,3,221,4045,8,221, - 1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222, - 1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,222, - 1,222,1,222,1,222,1,222,3,222,4073,8,222,1,223,1,223,1,223,5,223, - 4078,8,223,10,223,12,223,4081,9,223,1,224,1,224,1,224,1,224,1,224, - 1,224,1,225,1,225,1,225,5,225,4092,8,225,10,225,12,225,4095,9,225, - 1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227, - 1,227,3,227,4109,8,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228, - 1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,3,229,4226, - 8,229,1,230,1,230,1,230,1,230,1,231,1,231,1,231,5,231,4235,8,231, - 10,231,12,231,4238,9,231,1,232,1,232,1,232,3,232,4243,8,232,1,233, - 1,233,1,233,1,233,1,233,1,233,3,233,4251,8,233,1,234,1,234,1,234, - 1,234,1,235,1,235,1,235,5,235,4260,8,235,10,235,12,235,4263,9,235, - 1,236,1,236,1,236,1,236,1,237,1,237,3,237,4271,8,237,1,238,1,238, - 1,238,5,238,4276,8,238,10,238,12,238,4279,9,238,1,239,1,239,1,239, - 1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239, - 1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239, - 1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239, - 1,239,3,239,4318,8,239,1,240,1,240,1,240,1,240,3,240,4324,8,240, - 1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241, - 1,241,1,241,1,241,1,242,1,242,1,242,5,242,4343,8,242,10,242,12,242, - 4346,9,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243, - 1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243,1,243, - 1,243,1,243,1,243,1,243,1,243,3,243,4373,8,243,1,244,1,244,3,244, - 4377,8,244,1,245,1,245,1,245,3,245,4382,8,245,1,246,1,246,1,246, - 1,246,1,246,1,246,1,246,3,246,4391,8,246,1,247,1,247,3,247,4395, - 8,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, - 1,249,1,249,1,249,1,249,3,249,4422,8,249,1,250,1,250,1,250,5,250, - 4427,8,250,10,250,12,250,4430,9,250,1,251,1,251,1,251,1,251,1,251, - 1,251,1,251,1,251,1,251,1,251,1,251,1,251,3,251,4444,8,251,1,252, - 1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252,1,252, - 1,252,1,252,1,252,1,252,1,252,1,252,3,252,4464,8,252,1,253,1,253, - 1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253, - 1,253,1,253,1,253,1,253,1,253,3,253,4484,8,253,1,254,1,254,1,254, - 1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256, - 3,256,4577,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257, - 1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257, - 1,257,1,257,1,257,1,257,3,257,4602,8,257,1,258,1,258,1,258,1,258, - 1,258,3,258,4609,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259, - 1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,4625,8,259,1,260, - 1,260,1,261,1,261,1,261,5,261,4632,8,261,10,261,12,261,4635,9,261, - 1,262,1,262,3,262,4639,8,262,1,263,1,263,4,263,4643,8,263,11,263, - 12,263,4644,1,264,1,264,1,264,5,264,4650,8,264,10,264,12,264,4653, - 9,264,1,265,1,265,1,265,1,265,1,265,1,265,1,266,1,266,1,266,1,266, - 1,266,3,266,4666,8,266,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,267,1,267,1,267,1,267,3,267,4815,8,267, - 1,268,1,268,3,268,4819,8,268,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,269,1,269,1,269,3,269,4912,8,269, - 1,270,1,270,1,270,3,270,4917,8,270,1,271,1,271,3,271,4921,8,271, - 1,272,1,272,1,272,1,272,3,272,4927,8,272,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,273,1,273,1,273,1,273,3,273,4995,8,273,1,274, - 1,274,1,275,1,275,3,275,5001,8,275,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, - 1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, - 3,277,5030,8,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 1,278,1,278,1,278,1,278,1,278,1,278,1,278,3,278,5047,8,278,1,279, - 1,279,1,279,5,279,5052,8,279,10,279,12,279,5055,9,279,1,280,1,280, - 1,280,1,280,1,280,1,280,1,280,1,280,1,280,3,280,5066,8,280,1,281, - 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,281, - 1,281,1,281,3,281,5126,8,281,1,282,1,282,1,282,5,282,5131,8,282, - 10,282,12,282,5134,9,282,1,283,1,283,1,283,3,283,5139,8,283,1,284, - 1,284,1,284,1,284,3,284,5145,8,284,1,285,1,285,1,285,1,285,1,285, - 1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, - 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,3,286,5171,8,286, - 1,287,1,287,1,287,1,287,3,287,5177,8,287,1,288,1,288,1,288,1,288, - 3,288,5183,8,288,1,289,1,289,1,289,1,289,1,289,1,289,1,290,5,290, - 5192,8,290,10,290,12,290,5195,9,290,1,291,1,291,1,291,1,291,1,291, - 1,291,1,291,1,291,1,291,3,291,5206,8,291,1,292,1,292,1,292,1,292, - 1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292, - 1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292, - 1,292,3,292,5235,8,292,1,293,1,293,1,294,1,294,1,294,1,294,1,294, - 1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294, - 1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294, - 1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,3,294,5274,8,294, - 1,295,1,295,3,295,5278,8,295,1,296,1,296,3,296,5282,8,296,1,297, - 1,297,3,297,5286,8,297,1,298,1,298,1,298,3,298,5291,8,298,1,299, - 1,299,1,299,5,299,5296,8,299,10,299,12,299,5299,9,299,1,300,1,300, - 1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,1,300,3,300,5312, - 8,300,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301,1,301, - 1,301,3,301,5325,8,301,1,302,1,302,1,302,1,302,1,302,1,302,3,302, - 5333,8,302,1,303,1,303,1,303,5,303,5338,8,303,10,303,12,303,5341, - 9,303,1,304,1,304,1,304,3,304,5346,8,304,1,305,1,305,3,305,5350, - 8,305,1,306,1,306,1,306,3,306,5355,8,306,1,307,1,307,1,307,1,307, - 1,307,3,307,5362,8,307,1,308,1,308,1,308,1,308,1,308,1,308,1,308, - 1,308,1,308,1,308,1,308,1,308,3,308,5376,8,308,3,308,5378,8,308, - 1,308,1,308,1,309,1,309,1,309,3,309,5385,8,309,1,310,1,310,3,310, - 5389,8,310,1,310,1,310,1,311,1,311,1,311,5,311,5396,8,311,10,311, - 12,311,5399,9,311,1,312,1,312,1,312,5,312,5404,8,312,10,312,12,312, - 5407,9,312,1,313,1,313,1,313,1,313,1,313,1,313,3,313,5415,8,313, - 3,313,5417,8,313,1,314,1,314,3,314,5421,8,314,1,314,1,314,1,315, - 1,315,1,315,5,315,5428,8,315,10,315,12,315,5431,9,315,1,316,1,316, - 3,316,5435,8,316,1,316,1,316,1,316,1,316,3,316,5441,8,316,1,316, - 1,316,1,316,3,316,5446,8,316,1,317,1,317,3,317,5450,8,317,1,317, - 1,317,1,317,3,317,5455,8,317,1,318,1,318,1,318,1,318,3,318,5461, - 8,318,1,319,1,319,1,320,1,320,3,320,5467,8,320,1,320,1,320,1,320, - 1,320,3,320,5473,8,320,1,320,1,320,1,320,1,320,3,320,5479,8,320, - 1,321,1,321,1,321,3,321,5484,8,321,1,322,1,322,1,323,1,323,1,323, - 1,323,1,323,1,323,1,323,1,323,1,323,1,323,1,323,3,323,5499,8,323, - 1,323,1,323,1,324,1,324,1,324,5,324,5506,8,324,10,324,12,324,5509, - 9,324,1,325,1,325,1,325,1,326,1,326,1,326,5,326,5517,8,326,10,326, - 12,326,5520,9,326,1,327,4,327,5523,8,327,11,327,12,327,5524,1,327, - 1,327,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328, - 1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328, - 1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328,1,328, - 1,328,1,328,1,328,3,328,5564,8,328,1,329,1,329,1,329,1,329,1,329, - 1,329,1,329,1,329,3,329,5574,8,329,1,330,1,330,1,330,1,330,1,330, - 3,330,5581,8,330,1,331,1,331,1,331,1,331,1,331,1,331,1,331,5,331, - 5590,8,331,10,331,12,331,5593,9,331,1,332,1,332,1,332,3,332,5598, - 8,332,1,333,1,333,1,333,1,334,1,334,1,334,5,334,5606,8,334,10,334, - 12,334,5609,9,334,1,335,1,335,1,335,1,335,1,335,1,335,1,336,4,336, - 5618,8,336,11,336,12,336,5619,1,337,1,337,3,337,5624,8,337,1,338, - 1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338, - 1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338, - 1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338,1,338, - 1,338,1,338,3,338,5662,8,338,1,339,1,339,1,339,1,339,1,339,1,339, - 1,339,1,339,1,339,1,339,1,339,1,339,3,339,5676,8,339,1,340,1,340, - 1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,3,340, - 5690,8,340,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,3,341,5714,8,341,1,342,1,342,1,342,5,342,5719,8,342, - 10,342,12,342,5722,9,342,1,342,1,342,1,343,1,343,1,343,5,343,5729, - 8,343,10,343,12,343,5732,9,343,1,344,1,344,1,344,1,345,1,345,1,345, - 1,346,4,346,5741,8,346,11,346,12,346,5742,1,347,1,347,1,347,3,347, - 5748,8,347,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348, - 1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348, - 1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348, - 1,348,1,348,1,348,3,348,5784,8,348,1,349,1,349,1,349,1,349,1,349, - 3,349,5791,8,349,1,350,1,350,1,350,1,350,1,350,1,350,1,350,1,350, - 1,350,1,350,1,351,1,351,1,351,3,351,5806,8,351,1,352,1,352,1,352, - 1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,352,1,353,1,353,1,353, - 1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353, - 1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353, - 1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,1,353,3,353,5853, - 8,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,354,1,355, - 1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355, - 1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355, - 1,355,1,355,1,355,3,355,5890,8,355,1,356,1,356,1,357,1,357,1,358, - 1,358,1,358,5,358,5899,8,358,10,358,12,358,5902,9,358,1,359,1,359, - 1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360, - 1,360,3,360,5918,8,360,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361, - 1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,1,361,3,361, - 6388,8,361,1,362,1,362,3,362,6392,8,362,1,363,1,363,1,363,3,363, - 6397,8,363,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364, - 1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364, - 1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364, - 1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364, - 1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364,1,364, - 1,364,1,364,1,364,1,364,3,364,6456,8,364,1,365,1,365,3,365,6460, - 8,365,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366, - 1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,1,366,3,366,6679, - 8,366,1,367,1,367,1,367,1,367,1,367,1,367,1,367,1,367,1,368,1,368, - 1,368,5,368,6692,8,368,10,368,12,368,6695,9,368,1,369,1,369,1,369, - 1,369,1,369,1,369,1,369,1,369,3,369,6705,8,369,1,370,1,370,1,370, - 1,370,1,370,3,370,6712,8,370,1,371,1,371,1,371,1,371,1,371,1,371, - 1,371,1,371,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372, - 1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,1,372,3,372,6905, - 8,372,1,373,1,373,1,373,1,373,1,373,1,373,1,374,1,374,3,374,6915, - 8,374,1,375,1,375,1,375,1,375,1,375,1,375,3,375,6923,8,375,1,376, - 1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, - 1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,376, - 1,376,1,376,1,376,1,376,3,376,6952,8,376,1,377,1,377,1,377,1,377, - 1,377,1,377,1,377,1,377,1,377,1,378,1,378,1,378,5,378,6966,8,378, - 10,378,12,378,6969,9,378,1,379,1,379,1,380,1,380,1,380,1,380,1,380, - 1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380, - 1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380, - 1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,3,380, - 7010,8,380,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,3,381,7024,8,381,1,382,1,382,1,382,1,382,1,382, - 1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,383,1,383, - 1,383,1,383,1,383,1,383,3,383,7046,8,383,1,384,1,384,1,384,5,384, - 7051,8,384,10,384,12,384,7054,9,384,1,385,1,385,1,385,1,385,1,385, - 3,385,7061,8,385,1,386,1,386,3,386,7065,8,386,1,387,1,387,1,388, - 1,388,1,388,3,388,7072,8,388,1,389,1,389,1,389,1,389,1,390,1,390, - 1,390,3,390,7081,8,390,1,391,1,391,1,391,1,392,1,392,1,392,1,392, - 3,392,7090,8,392,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393, - 1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,1,393,3,393,7142, - 8,393,1,394,1,394,1,394,3,394,7147,8,394,1,395,1,395,1,395,1,395, - 1,395,1,395,1,395,1,395,1,395,1,395,3,395,7159,8,395,1,396,1,396, - 3,396,7163,8,396,1,396,5,396,7166,8,396,10,396,12,396,7169,9,396, - 1,397,1,397,3,397,7173,8,397,1,398,1,398,3,398,7177,8,398,1,398, - 1,398,3,398,7181,8,398,1,399,1,399,1,399,3,399,7186,8,399,1,399, - 1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399, - 1,399,1,399,3,399,7202,8,399,1,399,1,399,1,399,1,399,1,400,1,400, - 3,400,7210,8,400,1,400,1,400,1,400,3,400,7215,8,400,1,401,1,401, - 1,401,1,402,1,402,1,402,1,402,1,402,1,402,1,403,1,403,3,403,7228, - 8,403,1,404,4,404,7231,8,404,11,404,12,404,7232,1,405,1,405,1,405, - 1,405,1,405,3,405,7240,8,405,1,406,1,406,1,406,1,406,1,406,1,406, - 1,406,1,406,3,406,7250,8,406,1,407,1,407,3,407,7254,8,407,1,408, - 1,408,1,408,1,408,1,408,1,408,1,408,1,408,1,408,3,408,7265,8,408, - 1,409,1,409,1,409,1,409,1,409,1,410,1,410,1,410,1,410,3,410,7276, - 8,410,1,410,1,410,1,410,1,410,1,410,1,410,3,410,7284,8,410,1,411, - 1,411,1,411,5,411,7289,8,411,10,411,12,411,7292,9,411,1,412,1,412, - 1,413,1,413,1,413,1,413,1,413,1,413,1,414,1,414,1,414,1,414,1,414, - 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416, - 1,416,1,416,1,416,1,416,1,416,1,416,1,416,1,416,1,416,1,416,1,416, - 1,416,3,416,7330,8,416,1,416,1,416,1,416,1,416,1,416,1,416,3,416, - 7338,8,416,1,417,1,417,3,417,7342,8,417,1,418,1,418,1,418,1,418, - 1,418,1,418,1,418,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419, - 1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,1,419,3,419,7423, - 8,419,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,421,1,421, - 1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,422,1,422,1,422, - 1,422,1,422,1,422,1,422,1,422,3,422,7451,8,422,1,423,1,423,1,423, - 3,423,7456,8,423,1,424,1,424,1,424,1,424,1,424,1,424,1,424,1,424, - 1,424,1,424,1,424,1,424,1,424,3,424,7471,8,424,1,425,1,425,1,425, - 1,425,1,425,1,425,1,425,1,425,1,425,1,425,3,425,7483,8,425,1,426, - 1,426,1,426,5,426,7488,8,426,10,426,12,426,7491,9,426,1,427,1,427, - 1,428,1,428,1,428,1,429,1,429,3,429,7500,8,429,1,430,1,430,1,430, - 3,430,7505,8,430,1,431,1,431,3,431,7509,8,431,1,432,1,432,3,432, - 7513,8,432,1,433,1,433,3,433,7517,8,433,1,434,1,434,3,434,7521,8, - 434,1,435,1,435,1,435,1,435,1,435,3,435,7528,8,435,1,436,1,436,1, - 436,1,437,1,437,1,437,5,437,7536,8,437,10,437,12,437,7539,9,437, - 1,438,1,438,3,438,7543,8,438,1,439,1,439,1,439,1,439,1,439,1,439, - 1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,439,1,439,3,439, - 7561,8,439,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440,1,440, - 3,440,7572,8,440,1,441,1,441,1,441,5,441,7577,8,441,10,441,12,441, - 7580,9,441,1,442,1,442,1,442,1,443,1,443,3,443,7587,8,443,1,444, - 1,444,1,444,3,444,7592,8,444,1,445,1,445,1,445,1,445,1,445,1,445, - 1,446,1,446,1,446,1,446,1,446,3,446,7605,8,446,1,447,1,447,1,447, - 1,447,3,447,7611,8,447,1,448,1,448,1,448,1,448,1,448,1,448,1,448, - 1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448, - 1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,1,448,3,448,7640, - 8,448,1,449,1,449,1,449,1,449,1,449,3,449,7647,8,449,1,450,1,450, - 1,450,1,450,1,450,1,450,1,450,1,450,1,450,1,450,3,450,7659,8,450, - 1,451,1,451,1,451,1,451,1,451,1,451,1,451,1,451,1,452,1,452,1,452, - 3,452,7672,8,452,1,453,1,453,1,453,1,453,1,453,1,453,1,453,1,453, - 1,453,1,453,1,453,1,453,1,453,3,453,7687,8,453,1,453,1,453,1,453, - 1,453,3,453,7693,8,453,1,454,1,454,1,455,1,455,1,455,5,455,7700, - 8,455,10,455,12,455,7703,9,455,1,456,1,456,1,456,1,457,1,457,1,457, - 1,457,1,457,1,457,1,457,1,457,1,457,1,457,3,457,7718,8,457,1,457, - 3,457,7721,8,457,1,458,1,458,1,458,1,458,1,458,1,458,1,458,1,458, - 1,458,3,458,7732,8,458,1,459,1,459,1,459,3,459,7737,8,459,1,460, - 1,460,3,460,7741,8,460,1,460,1,460,3,460,7745,8,460,1,460,1,460, - 1,460,3,460,7750,8,460,1,460,3,460,7753,8,460,1,460,1,460,1,460, - 1,460,3,460,7759,8,460,1,460,1,460,3,460,7763,8,460,3,460,7765,8, - 460,1,460,3,460,7768,8,460,1,461,1,461,1,461,1,461,1,461,3,461,7775, - 8,461,1,461,3,461,7778,8,461,1,461,1,461,1,461,1,461,1,461,3,461, - 7785,8,461,1,461,1,461,1,462,1,462,1,462,1,462,3,462,7793,8,462, - 1,462,3,462,7796,8,462,1,462,1,462,1,462,1,462,1,463,1,463,1,463, - 3,463,7805,8,463,1,463,1,463,1,464,1,464,1,464,1,464,1,464,1,464, - 1,464,1,464,1,465,1,465,1,465,3,465,7820,8,465,1,466,1,466,1,466, - 1,466,1,466,1,466,1,467,1,467,1,467,1,467,1,467,3,467,7833,8,467, - 1,468,1,468,1,468,1,468,1,468,1,468,1,468,1,468,1,468,3,468,7844, - 8,468,1,468,3,468,7847,8,468,1,469,1,469,3,469,7851,8,469,1,470, - 1,470,1,470,1,470,3,470,7857,8,470,1,471,1,471,1,471,1,471,1,471, - 1,471,1,471,1,471,1,471,1,472,1,472,1,472,5,472,7871,8,472,10,472, - 12,472,7874,9,472,1,473,1,473,1,473,1,473,1,473,1,473,1,473,1,473, - 1,473,1,473,3,473,7886,8,473,1,474,1,474,1,474,1,475,1,475,1,475, - 5,475,7894,8,475,10,475,12,475,7897,9,475,1,476,1,476,1,476,1,476, - 1,476,1,476,1,476,1,476,1,477,1,477,1,478,1,478,1,478,1,478,1,478, - 5,478,7914,8,478,10,478,12,478,7917,9,478,1,479,1,479,1,479,1,479, - 1,479,3,479,7924,8,479,1,480,1,480,3,480,7928,8,480,1,481,1,481, - 1,481,1,481,1,481,1,481,1,481,1,481,3,481,7938,8,481,1,482,1,482, - 1,482,1,482,1,482,1,482,1,482,1,482,3,482,7948,8,482,1,482,1,482, - 1,482,1,482,1,482,1,482,1,482,1,482,1,482,3,482,7959,8,482,3,482, - 7961,8,482,1,483,1,483,1,483,1,483,1,483,5,483,7968,8,483,10,483, - 12,483,7971,9,483,1,484,1,484,1,484,1,484,1,484,5,484,7978,8,484, - 10,484,12,484,7981,9,484,1,485,1,485,1,485,1,485,1,485,1,485,1,485, - 1,485,3,485,7991,8,485,1,485,1,485,1,485,1,485,1,485,1,485,1,485, - 1,485,1,485,1,485,1,485,3,485,8004,8,485,1,486,1,486,3,486,8008, - 8,486,1,486,1,486,1,487,1,487,1,487,5,487,8015,8,487,10,487,12,487, - 8018,9,487,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,488,1,489, - 1,489,1,489,1,489,3,489,8032,8,489,1,490,1,490,3,490,8036,8,490, - 1,491,1,491,1,491,1,491,1,491,3,491,8043,8,491,1,491,3,491,8046, - 8,491,1,492,1,492,3,492,8050,8,492,1,493,3,493,8053,8,493,1,493, - 1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,1,493,3,493, - 8066,8,493,1,494,1,494,3,494,8070,8,494,1,495,1,495,1,495,3,495, - 8075,8,495,1,496,1,496,1,496,1,496,1,496,1,496,3,496,8083,8,496, - 1,497,1,497,3,497,8087,8,497,1,498,1,498,3,498,8091,8,498,1,499, - 1,499,1,499,1,499,1,500,1,500,1,500,5,500,8100,8,500,10,500,12,500, - 8103,9,500,1,501,1,501,1,501,1,501,3,501,8109,8,501,1,501,1,501, - 1,502,1,502,3,502,8115,8,502,1,502,1,502,3,502,8119,8,502,3,502, - 8121,8,502,1,503,1,503,3,503,8125,8,503,1,504,1,504,1,504,1,504, - 3,504,8131,8,504,1,504,1,504,1,504,1,504,1,504,1,504,1,504,3,504, - 8140,8,504,1,504,1,504,1,504,1,504,3,504,8146,8,504,3,504,8148,8, - 504,3,504,8150,8,504,1,505,1,505,1,505,1,505,1,505,3,505,8157,8, - 505,1,506,1,506,3,506,8161,8,506,1,507,1,507,1,508,1,508,1,508,1, - 508,1,508,3,508,8170,8,508,1,509,1,509,3,509,8174,8,509,1,510,1, - 510,1,511,1,511,1,512,1,512,1,512,1,512,3,512,8184,8,512,1,513,1, - 513,1,513,5,513,8189,8,513,10,513,12,513,8192,9,513,1,514,1,514, - 1,514,1,514,1,514,3,514,8199,8,514,1,515,1,515,1,515,1,516,1,516, - 1,516,1,516,1,516,1,517,1,517,1,517,1,517,1,517,1,518,1,518,1,518, - 1,518,1,518,1,518,1,519,1,519,1,519,3,519,8223,8,519,1,520,1,520, - 1,520,1,520,3,520,8229,8,520,1,521,1,521,3,521,8233,8,521,1,522, - 4,522,8236,8,522,11,522,12,522,8237,1,523,1,523,1,523,1,523,1,524, - 1,524,1,524,3,524,8247,8,524,1,524,1,524,3,524,8251,8,524,1,524, - 3,524,8254,8,524,1,525,1,525,1,525,3,525,8259,8,525,1,526,1,526, - 1,526,1,526,1,526,1,526,1,526,1,526,1,526,5,526,8270,8,526,10,526, - 12,526,8273,9,526,1,527,1,527,1,527,3,527,8278,8,527,1,528,1,528, - 1,528,1,528,5,528,8284,8,528,10,528,12,528,8287,9,528,3,528,8289, - 8,528,1,529,1,529,1,529,4,529,8294,8,529,11,529,12,529,8295,1,530, - 1,530,1,530,3,530,8301,8,530,1,530,1,530,1,530,1,530,1,530,1,530, - 1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530,1,530, - 1,530,1,530,3,530,8322,8,530,1,530,1,530,1,530,1,530,1,530,1,530, - 1,530,3,530,8331,8,530,1,530,1,530,1,530,3,530,8336,8,530,1,530, - 1,530,1,530,1,530,3,530,8342,8,530,1,530,1,530,1,530,3,530,8347, - 8,530,1,530,1,530,1,530,1,530,1,530,3,530,8354,8,530,1,530,1,530, - 1,530,3,530,8359,8,530,1,530,1,530,1,530,1,530,5,530,8365,8,530, - 10,530,12,530,8368,9,530,1,531,3,531,8371,8,531,1,531,1,531,1,531, - 1,531,1,531,3,531,8378,8,531,1,532,1,532,3,532,8382,8,532,1,533, - 3,533,8385,8,533,1,533,1,533,1,533,1,533,1,533,3,533,8392,8,533, - 1,534,1,534,1,534,3,534,8397,8,534,1,534,3,534,8400,8,534,1,534, - 1,534,1,534,1,534,1,534,3,534,8407,8,534,1,535,1,535,3,535,8411, - 8,535,1,536,1,536,1,536,1,536,1,536,1,536,1,536,3,536,8420,8,536, - 1,537,1,537,3,537,8424,8,537,1,537,1,537,1,537,1,537,1,537,1,537, - 3,537,8432,8,537,3,537,8434,8,537,1,538,1,538,1,538,5,538,8439,8, - 538,10,538,12,538,8442,9,538,1,539,1,539,3,539,8446,8,539,1,539, - 3,539,8449,8,539,1,540,1,540,1,540,1,540,1,540,1,540,1,540,1,541, - 1,541,1,541,1,541,1,541,1,541,3,541,8464,8,541,1,542,1,542,1,542, - 1,542,1,542,1,542,1,542,1,542,1,542,1,542,3,542,8476,8,542,1,543, - 1,543,1,543,1,544,1,544,1,544,5,544,8484,8,544,10,544,12,544,8487, - 9,544,1,545,1,545,1,545,1,545,1,545,1,545,3,545,8495,8,545,1,546, - 1,546,1,546,3,546,8500,8,546,1,547,1,547,1,547,3,547,8505,8,547, - 1,548,1,548,1,548,1,548,1,548,3,548,8512,8,548,1,548,3,548,8515, - 8,548,1,549,1,549,3,549,8519,8,549,1,550,1,550,1,550,5,550,8524, - 8,550,10,550,12,550,8527,9,550,1,551,1,551,1,551,1,551,1,552,1,552, - 1,552,1,552,1,552,1,552,1,552,1,552,1,552,1,552,1,552,1,552,1,552, - 1,552,1,552,1,552,1,552,3,552,8550,8,552,1,552,1,552,1,553,1,553, - 1,553,5,553,8557,8,553,10,553,12,553,8560,9,553,1,554,1,554,1,554, - 3,554,8565,8,554,1,554,1,554,3,554,8569,8,554,1,555,4,555,8572,8, - 555,11,555,12,555,8573,1,556,1,556,1,556,1,556,1,556,1,556,1,556, - 1,556,3,556,8584,8,556,1,557,1,557,1,557,5,557,8589,8,557,10,557, - 12,557,8592,9,557,1,558,1,558,1,558,1,558,1,558,1,558,3,558,8600, - 8,558,1,559,3,559,8603,8,559,1,559,1,559,1,559,1,559,1,559,1,559, - 1,559,3,559,8612,8,559,3,559,8614,8,559,1,559,1,559,1,559,1,559, - 3,559,8620,8,559,1,560,1,560,3,560,8624,8,560,1,560,5,560,8627,8, - 560,10,560,12,560,8630,9,560,1,561,1,561,1,561,1,561,1,561,1,561, - 1,561,1,561,1,561,1,561,1,561,3,561,8643,8,561,3,561,8645,8,561, - 1,562,1,562,1,562,1,562,3,562,8651,8,562,1,563,1,563,1,563,1,563, - 3,563,8657,8,563,1,563,3,563,8660,8,563,1,563,1,563,1,564,1,564, - 1,564,1,564,1,564,3,564,8669,8,564,1,565,1,565,1,565,1,565,1,565, - 1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565,1,565, - 3,565,8687,8,565,1,566,1,566,1,566,1,566,1,566,3,566,8694,8,566, - 1,567,1,567,3,567,8698,8,567,1,568,1,568,3,568,8702,8,568,1,569, - 1,569,1,569,1,569,1,569,1,569,1,570,1,570,1,570,1,571,1,571,1,571, - 1,571,1,571,3,571,8718,8,571,1,572,1,572,1,572,1,572,1,572,3,572, - 8725,8,572,1,573,1,573,1,573,1,573,1,573,1,573,3,573,8733,8,573, - 1,574,1,574,3,574,8737,8,574,1,575,1,575,1,575,1,575,1,575,3,575, - 8744,8,575,1,575,1,575,1,576,1,576,1,577,1,577,1,577,1,577,1,577, - 1,577,1,577,3,577,8757,8,577,1,578,1,578,1,578,1,578,1,578,1,578, - 1,578,1,578,1,578,1,578,1,578,1,578,1,578,1,578,3,578,8773,8,578, - 1,578,1,578,1,578,1,578,3,578,8779,8,578,1,578,1,578,1,578,1,578, - 3,578,8785,8,578,1,579,1,579,1,579,1,579,1,579,3,579,8792,8,579, - 1,580,1,580,1,580,3,580,8797,8,580,1,581,1,581,1,582,1,582,3,582, - 8803,8,582,1,583,1,583,1,583,5,583,8808,8,583,10,583,12,583,8811, - 9,583,1,584,1,584,1,584,5,584,8816,8,584,10,584,12,584,8819,9,584, - 1,585,1,585,1,585,5,585,8824,8,585,10,585,12,585,8827,9,585,1,586, - 1,586,3,586,8831,8,586,1,586,1,586,3,586,8835,8,586,1,586,1,586, - 1,586,1,586,3,586,8841,8,586,1,587,1,587,3,587,8845,8,587,1,587, - 1,587,3,587,8849,8,587,1,588,3,588,8852,8,588,1,588,1,588,1,589, - 1,589,3,589,8858,8,589,1,590,1,590,1,590,3,590,8863,8,590,1,590, - 1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590,1,590, - 1,590,1,590,3,590,8879,8,590,1,590,3,590,8882,8,590,3,590,8884,8, - 590,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591,1,591, - 3,591,8896,8,591,3,591,8898,8,591,1,592,1,592,3,592,8902,8,592,1, - 592,1,592,1,592,1,592,3,592,8908,8,592,1,592,1,592,1,592,3,592,8913, - 8,592,1,593,1,593,1,593,1,593,5,593,8919,8,593,10,593,12,593,8922, - 9,593,1,594,3,594,8925,8,594,1,594,1,594,1,595,1,595,1,595,5,595, - 8932,8,595,10,595,12,595,8935,9,595,1,596,1,596,1,596,5,596,8940, - 8,596,10,596,12,596,8943,9,596,1,597,1,597,1,597,3,597,8948,8,597, - 1,598,3,598,8951,8,598,1,598,1,598,1,599,1,599,1,599,1,599,1,599, - 3,599,8960,8,599,1,600,1,600,1,600,3,600,8965,8,600,1,601,1,601, - 1,601,5,601,8970,8,601,10,601,12,601,8973,9,601,1,602,1,602,1,602, - 1,602,1,602,1,602,1,602,3,602,8982,8,602,1,602,1,602,1,602,1,602, - 1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602, - 1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,3,602,9008, - 8,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,1,602,3,602, - 9019,8,602,5,602,9021,8,602,10,602,12,602,9024,9,602,1,603,1,603, - 1,603,1,603,1,603,3,603,9031,8,603,1,603,1,603,1,603,1,603,1,603, - 1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603,1,603, - 1,603,1,603,1,603,1,603,1,603,3,603,9054,8,603,1,603,1,603,1,603, - 1,603,1,603,1,603,3,603,9062,8,603,1,604,1,604,1,605,1,605,1,605, - 1,605,1,605,1,605,3,605,9072,8,605,1,605,1,605,1,605,1,605,1,605, - 1,605,1,605,1,605,1,605,1,605,1,605,1,605,3,605,9086,8,605,1,605, - 1,605,1,606,1,606,1,606,1,606,1,606,1,606,3,606,9096,8,606,1,607, - 1,607,3,607,9100,8,607,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,3,608,9114,8,608,1,608,1,608,1,608, - 1,608,1,608,3,608,9121,8,608,1,608,1,608,1,608,1,608,1,608,3,608, - 9128,8,608,1,608,1,608,1,608,1,608,1,608,3,608,9135,8,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 3,608,9160,8,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,3,608,9189,8,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,3,608,9228,8,608,3,608,9230,8,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,3,608,9258,8,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608,1,608, - 1,608,1,608,1,608,3,608,9279,8,608,1,609,1,609,1,609,1,609,1,609, - 3,609,9286,8,609,1,610,1,610,1,610,1,610,1,610,1,610,1,610,1,610, - 1,610,1,610,1,610,3,610,9299,8,610,1,611,1,611,1,611,1,611,1,611, - 1,612,1,612,1,612,5,612,9309,8,612,10,612,12,612,9312,9,612,1,613, - 1,613,1,613,3,613,9317,8,613,1,614,1,614,1,615,1,615,1,615,1,615, - 1,615,3,615,9326,8,615,1,616,1,616,1,616,1,616,1,616,1,616,1,616, - 1,616,1,616,1,616,1,616,1,616,1,616,1,616,1,616,3,616,9343,8,616, - 1,617,1,617,1,617,1,618,1,618,1,618,1,618,1,618,1,618,1,618,3,618, - 9355,8,618,1,619,1,619,1,619,1,619,1,619,1,619,1,619,3,619,9364, - 8,619,1,620,1,620,1,620,3,620,9369,8,620,1,621,1,621,1,621,5,621, - 9374,8,621,10,621,12,621,9377,9,621,1,622,1,622,1,622,1,622,1,623, - 1,623,1,623,3,623,9386,8,623,1,623,3,623,9389,8,623,1,624,1,624, - 1,624,1,624,1,624,1,624,1,624,1,625,1,625,3,625,9400,8,625,1,626, - 1,626,1,626,1,626,3,626,9406,8,626,1,627,1,627,1,627,1,627,1,627, - 1,627,1,627,1,627,1,627,1,627,1,627,1,627,1,627,3,627,9421,8,627, - 1,628,1,628,1,628,1,628,1,628,1,628,3,628,9429,8,628,1,629,1,629, - 1,629,1,629,1,629,1,629,1,629,3,629,9438,8,629,1,630,1,630,1,630, - 1,630,1,630,1,630,1,630,3,630,9447,8,630,1,630,3,630,9450,8,630, - 1,631,1,631,1,631,3,631,9455,8,631,1,631,1,631,1,631,1,631,1,631, - 1,631,1,631,3,631,9464,8,631,1,632,1,632,1,632,3,632,9469,8,632, - 1,632,1,632,1,633,1,633,1,633,1,633,1,633,1,633,1,634,1,634,1,635, - 1,635,3,635,9483,8,635,1,636,1,636,1,637,1,637,1,637,1,637,1,637, - 1,637,3,637,9493,8,637,1,638,1,638,1,638,1,638,1,638,1,638,3,638, - 9501,8,638,1,639,1,639,1,639,1,639,1,639,1,639,1,639,1,639,1,639, - 1,639,1,639,1,639,3,639,9515,8,639,1,640,1,640,1,640,5,640,9520, - 8,640,10,640,12,640,9523,9,640,1,641,1,641,1,641,5,641,9528,8,641, - 10,641,12,641,9531,9,641,1,642,1,642,1,642,1,642,1,642,3,642,9538, - 8,642,1,643,1,643,1,643,5,643,9543,8,643,10,643,12,643,9546,9,643, - 1,644,1,644,1,644,3,644,9551,8,644,1,644,1,644,1,645,1,645,1,645, - 5,645,9558,8,645,10,645,12,645,9561,9,645,1,646,1,646,1,646,1,646, - 1,646,3,646,9568,8,646,1,647,1,647,1,647,1,647,1,647,1,647,1,647, - 1,647,3,647,9578,8,647,1,648,1,648,1,649,1,649,1,649,1,649,1,649, - 1,649,1,649,3,649,9589,8,649,1,650,1,650,1,650,1,650,1,650,3,650, - 9596,8,650,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651, - 1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651,1,651, - 1,651,1,651,1,651,1,651,1,651,1,651,1,651,3,651,9625,8,651,1,652, - 1,652,1,652,1,652,1,652,1,652,1,652,3,652,9634,8,652,1,653,1,653, - 1,653,1,653,1,653,3,653,9641,8,653,1,654,1,654,1,654,1,654,1,654, - 1,654,1,655,4,655,9650,8,655,11,655,12,655,9651,1,656,1,656,1,656, - 1,656,1,656,1,657,1,657,1,657,3,657,9662,8,657,1,658,1,658,3,658, - 9666,8,658,1,659,1,659,3,659,9670,8,659,1,660,1,660,1,660,3,660, - 9675,8,660,1,660,1,660,1,660,1,660,1,660,1,660,3,660,9683,8,660, - 1,660,1,660,3,660,9687,8,660,1,661,1,661,3,661,9691,8,661,1,662, - 4,662,9694,8,662,11,662,12,662,9695,1,663,5,663,9699,8,663,10,663, - 12,663,9702,9,663,1,664,1,664,3,664,9706,8,664,1,665,1,665,1,665, - 5,665,9711,8,665,10,665,12,665,9714,9,665,1,666,1,666,1,666,1,666, - 1,666,3,666,9721,8,666,1,666,3,666,9724,8,666,1,667,1,667,1,667, - 5,667,9729,8,667,10,667,12,667,9732,9,667,1,668,1,668,3,668,9736, - 8,668,1,669,1,669,1,669,5,669,9741,8,669,10,669,12,669,9744,9,669, - 1,670,1,670,1,671,1,671,1,672,1,672,1,673,1,673,1,673,1,673,1,673, - 1,673,1,673,3,673,9759,8,673,1,674,1,674,1,674,1,674,1,674,1,674, - 1,674,1,674,1,674,1,674,1,674,1,674,1,674,3,674,9774,8,674,1,674, - 1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674,1,674, - 3,674,9788,8,674,1,674,1,674,1,674,3,674,9793,8,674,1,675,1,675, - 1,676,1,676,1,677,1,677,1,678,1,678,1,679,1,679,1,679,1,680,1,680, - 1,680,1,680,5,680,9810,8,680,10,680,12,680,9813,9,680,1,680,1,680, - 3,680,9817,8,680,1,681,1,681,1,681,3,681,9822,8,681,1,682,1,682, - 1,682,1,682,1,682,3,682,9829,8,682,1,683,1,683,1,684,1,684,1,684, - 3,684,9836,8,684,1,685,1,685,1,685,5,685,9841,8,685,10,685,12,685, - 9844,9,685,1,686,1,686,1,686,1,686,1,686,1,686,3,686,9852,8,686, - 1,687,1,687,1,687,1,687,3,687,9858,8,687,1,688,1,688,1,688,1,688, - 3,688,9864,8,688,1,689,1,689,1,689,1,689,3,689,9870,8,689,1,690, - 1,690,1,690,1,690,1,690,1,690,3,690,9878,8,690,1,691,1,691,1,691, - 1,691,1,691,1,691,1,691,3,691,9887,8,691,1,692,1,692,1,693,1,693, - 1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694, - 1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694, - 1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694, - 1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694, - 1,694,1,694,1,694,1,694,1,694,1,694,1,694,1,694,3,694,9945,8,694, - 1,695,1,695,1,696,1,696,1,697,1,697,1,698,1,698,1,698,1,698,1,699, - 5,699,9958,8,699,10,699,12,699,9961,9,699,1,700,1,700,1,700,1,700, - 1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700,1,700, - 1,700,1,700,1,700,1,700,1,700,3,700,9983,8,700,1,701,1,701,1,702, - 1,702,1,702,1,702,3,702,9991,8,702,1,703,1,703,3,703,9995,8,703, - 1,704,1,704,1,704,1,704,1,704,1,704,1,704,1,705,1,705,1,705,3,705, - 10007,8,705,3,705,10009,8,705,1,706,1,706,1,707,4,707,10014,8,707, - 11,707,12,707,10015,1,708,1,708,1,708,1,708,1,709,1,709,1,709,3, - 709,10025,8,709,1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710, - 1,710,1,710,1,710,1,710,1,710,1,710,1,710,1,710,3,710,10043,8,710, - 1,710,1,710,1,711,1,711,1,711,1,711,3,711,10051,8,711,1,712,1,712, - 1,713,1,713,1,713,1,713,1,713,3,713,10060,8,713,1,714,1,714,1,714, - 5,714,10065,8,714,10,714,12,714,10068,9,714,1,715,1,715,1,715,1, - 716,1,716,1,717,1,717,3,717,10077,8,717,1,718,1,718,1,719,1,719, - 3,719,10083,8,719,1,720,1,720,1,721,1,721,1,721,3,721,10090,8,721, - 1,722,1,722,1,722,3,722,10095,8,722,1,723,1,723,1,723,1,723,3,723, - 10101,8,723,1,724,1,724,3,724,10105,8,724,1,725,1,725,1,726,5,726, - 10110,8,726,10,726,12,726,10113,9,726,1,727,1,727,1,727,1,727,1, - 727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727, - 1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727,1,727, - 1,727,3,727,10142,8,727,1,728,1,728,1,728,1,728,1,729,1,729,1,729, - 1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729,1,729, - 3,729,10162,8,729,1,730,1,730,3,730,10166,8,730,1,731,1,731,1,731, - 1,731,1,731,1,732,1,732,1,732,1,732,1,732,1,732,1,733,1,733,1,733, - 3,733,10182,8,733,1,734,1,734,1,734,5,734,10187,8,734,10,734,12, - 734,10190,9,734,1,735,1,735,1,735,1,735,1,736,1,736,1,737,1,737, - 1,738,1,738,3,738,10202,8,738,1,738,1,738,1,738,1,738,5,738,10208, - 8,738,10,738,12,738,10211,9,738,1,739,1,739,1,739,1,739,1,739,1, - 739,1,739,1,739,1,739,1,739,1,740,1,740,1,740,1,740,1,740,5,740, - 10228,8,740,10,740,12,740,10231,9,740,1,741,1,741,1,741,3,741,10236, - 8,741,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,742,1,743,1,743, - 3,743,10248,8,743,1,744,4,744,10251,8,744,11,744,12,744,10252,1, - 745,1,745,1,745,1,745,1,745,1,746,1,746,1,746,3,746,10263,8,746, - 1,747,1,747,1,747,1,748,1,748,1,748,1,748,1,748,1,749,1,749,1,749, - 1,749,1,749,1,750,1,750,1,750,1,750,1,750,1,750,1,750,1,750,1,750, - 1,750,1,750,1,750,1,750,1,750,1,750,1,750,1,750,3,750,10295,8,750, - 1,751,1,751,1,751,3,751,10300,8,751,1,752,1,752,1,752,1,752,1,752, - 5,752,10307,8,752,10,752,12,752,10310,9,752,1,752,1,752,3,752,10314, - 8,752,1,753,1,753,3,753,10318,8,753,1,754,1,754,1,754,3,754,10323, - 8,754,1,755,1,755,1,756,1,756,1,756,1,756,1,756,1,756,1,756,1,756, - 1,756,1,757,1,757,1,757,3,757,10339,8,757,1,758,1,758,1,758,1,758, - 1,758,1,759,1,759,1,760,1,760,1,760,1,760,1,760,1,760,1,760,1,760, - 1,760,3,760,10357,8,760,1,760,3,760,10360,8,760,1,760,1,760,1,761, - 1,761,3,761,10366,8,761,1,762,1,762,1,762,1,762,1,762,1,762,1,762, - 1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762, - 1,762,1,762,1,762,1,762,1,762,1,762,1,762,1,762,3,762,10394,8,762, - 1,763,1,763,1,763,1,763,1,763,1,763,1,763,1,763,3,763,10404,8,763, - 1,764,1,764,1,764,4,764,10409,8,764,11,764,12,764,10410,3,764,10413, - 8,764,1,765,1,765,1,765,3,765,10418,8,765,1,766,1,766,1,766,1,766, - 1,767,1,767,1,767,5,767,10427,8,767,10,767,12,767,10430,9,767,1, - 768,1,768,1,768,1,768,1,768,1,769,1,769,1,769,3,769,10440,8,769, - 1,770,1,770,1,770,1,770,1,770,1,770,1,770,1,771,1,771,1,771,1,772, - 1,772,1,772,1,772,1,772,1,772,1,772,1,772,1,772,3,772,10461,8,772, - 1,772,1,772,1,773,1,773,1,773,3,773,10468,8,773,1,774,1,774,1,774, - 5,774,10473,8,774,10,774,12,774,10476,9,774,1,775,1,775,1,775,3, - 775,10481,8,775,1,775,3,775,10484,8,775,1,776,1,776,1,776,1,776, - 1,776,1,776,1,776,1,776,1,776,3,776,10495,8,776,1,776,1,776,1,776, - 1,776,1,776,3,776,10502,8,776,3,776,10504,8,776,1,776,1,776,1,777, - 1,777,1,777,1,777,1,777,3,777,10513,8,777,1,778,1,778,1,778,5,778, - 10518,8,778,10,778,12,778,10521,9,778,1,779,1,779,1,779,3,779,10526, - 8,779,1,780,1,780,1,780,1,780,3,780,10532,8,780,1,781,1,781,3,781, - 10536,8,781,1,782,1,782,1,782,1,782,1,782,1,782,1,782,1,782,1,783, - 1,783,1,784,1,784,1,784,3,784,10551,8,784,1,785,1,785,1,785,1,785, - 1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,785,1,785, - 3,785,10568,8,785,3,785,10570,8,785,1,786,1,786,1,786,1,786,1,786, - 1,787,1,787,1,787,1,787,1,788,1,788,1,788,1,789,1,789,1,789,1,789, - 1,790,1,790,1,790,1,790,1,791,1,791,3,791,10594,8,791,1,791,1,791, - 3,791,10598,8,791,1,792,1,792,1,792,1,792,1,792,1,792,1,792,1,792, - 1,792,3,792,10609,8,792,1,792,3,792,10612,8,792,1,793,1,793,3,793, - 10616,8,793,1,794,1,794,1,794,3,794,10621,8,794,1,795,4,795,10624, - 8,795,11,795,12,795,10625,1,796,1,796,1,796,1,796,1,796,1,797,1, - 797,1,797,5,797,10636,8,797,10,797,12,797,10639,9,797,1,798,1,798, - 1,798,3,798,10644,8,798,1,799,1,799,3,799,10648,8,799,1,800,1,800, - 3,800,10652,8,800,1,801,1,801,3,801,10656,8,801,1,802,1,802,1,802, - 3,802,10661,8,802,1,803,1,803,3,803,10665,8,803,1,804,1,804,1,805, - 1,805,1,805,1,805,1,805,1,805,1,805,1,805,1,806,1,806,1,807,1,807, - 1,808,1,808,1,809,1,809,1,810,1,810,1,810,1,811,1,811,1,811,1,811, - 1,811,3,811,10693,8,811,1,811,0,1,1204,812,0,2,4,6,8,10,12,14,16, - 18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60, - 62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102, - 104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134, - 136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166, - 168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198, - 200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230, - 232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262, - 264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294, - 296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326, - 328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358, - 360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390, - 392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422, - 424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454, - 456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486, - 488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518, - 520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550, - 552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582, - 584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614, - 616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646, - 648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678, - 680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710, - 712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742, - 744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774, - 776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806, - 808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838, - 840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870, - 872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902, - 904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934, - 936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966, - 968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998, - 1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024, - 1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050, - 1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076, - 1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102, - 1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128, - 1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154, - 1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180, - 1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206, - 1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232, - 1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258, - 1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284, - 1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310, - 1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336, - 1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362, - 1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388, - 1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414, - 1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440, - 1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466, - 1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492, - 1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518, - 1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544, - 1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570, - 1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596, - 1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622, - 0,69,2,0,195,195,357,357,2,0,66,66,311,311,2,0,99,99,311,311,3,0, - 66,66,99,99,311,311,2,0,133,133,191,191,2,0,245,245,325,325,2,0, - 10,10,94,94,2,0,162,162,356,356,2,0,180,180,221,221,5,0,30,30,281, - 281,322,322,345,345,347,347,2,0,64,64,94,94,2,0,345,345,347,347, - 2,0,200,200,224,224,9,0,30,30,160,160,165,165,179,179,219,219,227, - 227,335,335,338,338,438,438,3,0,113,113,277,277,329,329,2,0,53,53, - 78,78,3,0,173,173,252,252,255,255,5,0,30,30,88,88,182,182,232,232, - 362,362,2,0,92,92,226,226,1,0,448,449,2,0,92,92,407,407,2,0,334, - 334,407,407,2,0,211,211,289,289,3,0,314,314,350,350,445,445,2,0, - 64,64,68,68,5,0,212,212,322,322,343,343,354,354,455,456,2,0,10,10, - 53,53,3,0,211,211,289,289,442,442,5,0,92,92,175,175,226,226,316, - 316,342,342,3,0,175,175,316,316,342,342,3,0,109,109,128,128,344, - 344,4,0,88,88,182,182,232,232,362,362,2,0,151,151,245,245,2,0,306, - 306,326,326,1,0,31,32,2,0,99,99,342,342,2,0,201,201,327,327,2,0, - 59,59,97,97,2,0,213,213,245,245,2,0,313,313,407,407,2,0,207,207, - 261,261,4,0,113,113,115,115,119,119,126,126,2,0,353,353,477,477, - 2,0,384,385,399,399,1,0,384,385,1,0,411,412,1,0,18,19,2,0,117,117, - 122,122,5,0,10,10,16,17,21,21,23,23,25,25,1,0,12,13,3,0,9,9,14,14, - 27,27,2,0,30,30,56,56,3,0,39,39,73,73,95,95,2,0,166,166,188,188, - 2,0,297,297,450,450,2,0,208,208,282,282,3,0,30,30,34,34,90,90,6, - 0,9,10,12,17,21,21,23,23,25,25,27,27,2,0,20,20,22,22,1,0,483,486, - 11,0,124,124,129,249,251,252,254,303,305,379,433,452,455,469,471, - 471,473,473,475,475,478,488,5,0,106,118,120,123,125,125,127,128, - 472,472,4,0,30,52,54,70,72,105,454,454,5,0,304,304,418,424,504,504, - 513,513,521,635,2,0,62,62,116,116,2,0,10,10,20,20,2,0,167,167,507, - 507,2,0,144,144,210,210,36,0,33,33,35,35,43,45,53,53,57,57,61,61, - 92,92,116,116,123,123,130,130,144,144,153,153,157,157,161,161,167, - 167,172,172,207,207,210,210,232,232,240,240,258,258,261,262,272, - 272,286,286,300,300,306,306,312,312,316,317,326,326,353,353,433, - 434,477,477,490,502,506,512,514,518,520,520,11556,0,1624,1,0,0,0, - 2,1627,1,0,0,0,4,1629,1,0,0,0,6,1637,1,0,0,0,8,1765,1,0,0,0,10,1767, - 1,0,0,0,12,1771,1,0,0,0,14,1774,1,0,0,0,16,1782,1,0,0,0,18,1787, - 1,0,0,0,20,1793,1,0,0,0,22,1814,1,0,0,0,24,1826,1,0,0,0,26,1828, - 1,0,0,0,28,1834,1,0,0,0,30,1844,1,0,0,0,32,1846,1,0,0,0,34,1855, - 1,0,0,0,36,1863,1,0,0,0,38,1869,1,0,0,0,40,1876,1,0,0,0,42,1878, - 1,0,0,0,44,1896,1,0,0,0,46,1901,1,0,0,0,48,1910,1,0,0,0,50,1912, - 1,0,0,0,52,1926,1,0,0,0,54,1928,1,0,0,0,56,1957,1,0,0,0,58,1959, - 1,0,0,0,60,1967,1,0,0,0,62,1977,1,0,0,0,64,1984,1,0,0,0,66,1990, - 1,0,0,0,68,2007,1,0,0,0,70,2012,1,0,0,0,72,2016,1,0,0,0,74,2018, - 1,0,0,0,76,2029,1,0,0,0,78,2033,1,0,0,0,80,2038,1,0,0,0,82,2043, - 1,0,0,0,84,2045,1,0,0,0,86,2057,1,0,0,0,88,2064,1,0,0,0,90,2066, - 1,0,0,0,92,2068,1,0,0,0,94,2070,1,0,0,0,96,2182,1,0,0,0,98,2184, - 1,0,0,0,100,2200,1,0,0,0,102,2202,1,0,0,0,104,2458,1,0,0,0,106,2465, - 1,0,0,0,108,2470,1,0,0,0,110,2475,1,0,0,0,112,2480,1,0,0,0,114,2488, - 1,0,0,0,116,2490,1,0,0,0,118,2497,1,0,0,0,120,2499,1,0,0,0,122,2507, - 1,0,0,0,124,2519,1,0,0,0,126,2535,1,0,0,0,128,2563,1,0,0,0,130,2565, - 1,0,0,0,132,2568,1,0,0,0,134,2576,1,0,0,0,136,2581,1,0,0,0,138,2612, - 1,0,0,0,140,2614,1,0,0,0,142,2641,1,0,0,0,144,2643,1,0,0,0,146,2647, - 1,0,0,0,148,2652,1,0,0,0,150,2659,1,0,0,0,152,2664,1,0,0,0,154,2702, - 1,0,0,0,156,2706,1,0,0,0,158,2713,1,0,0,0,160,2717,1,0,0,0,162,2719, - 1,0,0,0,164,2727,1,0,0,0,166,2738,1,0,0,0,168,2740,1,0,0,0,170,2748, - 1,0,0,0,172,2750,1,0,0,0,174,2799,1,0,0,0,176,2803,1,0,0,0,178,2810, - 1,0,0,0,180,2812,1,0,0,0,182,2820,1,0,0,0,184,2831,1,0,0,0,186,2835, - 1,0,0,0,188,2837,1,0,0,0,190,2842,1,0,0,0,192,2852,1,0,0,0,194,2863, - 1,0,0,0,196,2903,1,0,0,0,198,2908,1,0,0,0,200,2915,1,0,0,0,202,2917, - 1,0,0,0,204,2925,1,0,0,0,206,2928,1,0,0,0,208,2935,1,0,0,0,210,2995, - 1,0,0,0,212,3000,1,0,0,0,214,3007,1,0,0,0,216,3009,1,0,0,0,218,3017, - 1,0,0,0,220,3025,1,0,0,0,222,3030,1,0,0,0,224,3032,1,0,0,0,226,3040, - 1,0,0,0,228,3056,1,0,0,0,230,3067,1,0,0,0,232,3069,1,0,0,0,234,3073, - 1,0,0,0,236,3083,1,0,0,0,238,3091,1,0,0,0,240,3095,1,0,0,0,242,3097, - 1,0,0,0,244,3104,1,0,0,0,246,3126,1,0,0,0,248,3131,1,0,0,0,250,3138, - 1,0,0,0,252,3150,1,0,0,0,254,3155,1,0,0,0,256,3162,1,0,0,0,258,3164, - 1,0,0,0,260,3168,1,0,0,0,262,3182,1,0,0,0,264,3193,1,0,0,0,266,3206, - 1,0,0,0,268,3220,1,0,0,0,270,3222,1,0,0,0,272,3236,1,0,0,0,274,3244, - 1,0,0,0,276,3246,1,0,0,0,278,3253,1,0,0,0,280,3264,1,0,0,0,282,3275, - 1,0,0,0,284,3282,1,0,0,0,286,3285,1,0,0,0,288,3319,1,0,0,0,290,3323, - 1,0,0,0,292,3331,1,0,0,0,294,3333,1,0,0,0,296,3341,1,0,0,0,298,3356, - 1,0,0,0,300,3358,1,0,0,0,302,3365,1,0,0,0,304,3371,1,0,0,0,306,3375, - 1,0,0,0,308,3379,1,0,0,0,310,3381,1,0,0,0,312,3392,1,0,0,0,314,3394, - 1,0,0,0,316,3402,1,0,0,0,318,3416,1,0,0,0,320,3426,1,0,0,0,322,3428, - 1,0,0,0,324,3437,1,0,0,0,326,3440,1,0,0,0,328,3547,1,0,0,0,330,3549, - 1,0,0,0,332,3565,1,0,0,0,334,3568,1,0,0,0,336,3574,1,0,0,0,338,3591, - 1,0,0,0,340,3599,1,0,0,0,342,3601,1,0,0,0,344,3609,1,0,0,0,346,3614, - 1,0,0,0,348,3629,1,0,0,0,350,3631,1,0,0,0,352,3634,1,0,0,0,354,3636, - 1,0,0,0,356,3663,1,0,0,0,358,3668,1,0,0,0,360,3670,1,0,0,0,362,3677, - 1,0,0,0,364,3679,1,0,0,0,366,3745,1,0,0,0,368,3747,1,0,0,0,370,3762, - 1,0,0,0,372,3770,1,0,0,0,374,3793,1,0,0,0,376,3797,1,0,0,0,378,3817, - 1,0,0,0,380,3819,1,0,0,0,382,3828,1,0,0,0,384,3839,1,0,0,0,386,3854, - 1,0,0,0,388,3863,1,0,0,0,390,3868,1,0,0,0,392,3873,1,0,0,0,394,3878, - 1,0,0,0,396,3883,1,0,0,0,398,3885,1,0,0,0,400,3887,1,0,0,0,402,3896, - 1,0,0,0,404,3936,1,0,0,0,406,3942,1,0,0,0,408,3944,1,0,0,0,410,3959, - 1,0,0,0,412,3964,1,0,0,0,414,3967,1,0,0,0,416,3971,1,0,0,0,418,3976, - 1,0,0,0,420,3978,1,0,0,0,422,3980,1,0,0,0,424,3987,1,0,0,0,426,3991, - 1,0,0,0,428,3993,1,0,0,0,430,4001,1,0,0,0,432,4003,1,0,0,0,434,4007, - 1,0,0,0,436,4020,1,0,0,0,438,4025,1,0,0,0,440,4030,1,0,0,0,442,4044, - 1,0,0,0,444,4072,1,0,0,0,446,4074,1,0,0,0,448,4082,1,0,0,0,450,4088, - 1,0,0,0,452,4096,1,0,0,0,454,4108,1,0,0,0,456,4110,1,0,0,0,458,4225, - 1,0,0,0,460,4227,1,0,0,0,462,4231,1,0,0,0,464,4239,1,0,0,0,466,4250, - 1,0,0,0,468,4252,1,0,0,0,470,4256,1,0,0,0,472,4264,1,0,0,0,474,4270, - 1,0,0,0,476,4272,1,0,0,0,478,4317,1,0,0,0,480,4323,1,0,0,0,482,4325, - 1,0,0,0,484,4339,1,0,0,0,486,4372,1,0,0,0,488,4376,1,0,0,0,490,4381, - 1,0,0,0,492,4390,1,0,0,0,494,4394,1,0,0,0,496,4396,1,0,0,0,498,4421, - 1,0,0,0,500,4423,1,0,0,0,502,4443,1,0,0,0,504,4463,1,0,0,0,506,4483, - 1,0,0,0,508,4485,1,0,0,0,510,4491,1,0,0,0,512,4576,1,0,0,0,514,4601, - 1,0,0,0,516,4608,1,0,0,0,518,4624,1,0,0,0,520,4626,1,0,0,0,522,4628, - 1,0,0,0,524,4636,1,0,0,0,526,4642,1,0,0,0,528,4646,1,0,0,0,530,4654, - 1,0,0,0,532,4665,1,0,0,0,534,4814,1,0,0,0,536,4818,1,0,0,0,538,4911, - 1,0,0,0,540,4916,1,0,0,0,542,4920,1,0,0,0,544,4926,1,0,0,0,546,4994, - 1,0,0,0,548,4996,1,0,0,0,550,5000,1,0,0,0,552,5002,1,0,0,0,554,5029, - 1,0,0,0,556,5046,1,0,0,0,558,5048,1,0,0,0,560,5065,1,0,0,0,562,5125, - 1,0,0,0,564,5127,1,0,0,0,566,5138,1,0,0,0,568,5144,1,0,0,0,570,5146, - 1,0,0,0,572,5170,1,0,0,0,574,5176,1,0,0,0,576,5182,1,0,0,0,578,5184, - 1,0,0,0,580,5193,1,0,0,0,582,5205,1,0,0,0,584,5234,1,0,0,0,586,5236, - 1,0,0,0,588,5273,1,0,0,0,590,5277,1,0,0,0,592,5281,1,0,0,0,594,5285, - 1,0,0,0,596,5290,1,0,0,0,598,5292,1,0,0,0,600,5311,1,0,0,0,602,5324, - 1,0,0,0,604,5332,1,0,0,0,606,5334,1,0,0,0,608,5345,1,0,0,0,610,5349, - 1,0,0,0,612,5354,1,0,0,0,614,5361,1,0,0,0,616,5363,1,0,0,0,618,5384, - 1,0,0,0,620,5386,1,0,0,0,622,5392,1,0,0,0,624,5400,1,0,0,0,626,5416, - 1,0,0,0,628,5418,1,0,0,0,630,5424,1,0,0,0,632,5445,1,0,0,0,634,5454, - 1,0,0,0,636,5460,1,0,0,0,638,5462,1,0,0,0,640,5478,1,0,0,0,642,5480, - 1,0,0,0,644,5485,1,0,0,0,646,5487,1,0,0,0,648,5502,1,0,0,0,650,5510, - 1,0,0,0,652,5513,1,0,0,0,654,5522,1,0,0,0,656,5563,1,0,0,0,658,5573, - 1,0,0,0,660,5580,1,0,0,0,662,5582,1,0,0,0,664,5597,1,0,0,0,666,5599, - 1,0,0,0,668,5602,1,0,0,0,670,5610,1,0,0,0,672,5617,1,0,0,0,674,5623, - 1,0,0,0,676,5661,1,0,0,0,678,5675,1,0,0,0,680,5689,1,0,0,0,682,5713, - 1,0,0,0,684,5720,1,0,0,0,686,5725,1,0,0,0,688,5733,1,0,0,0,690,5736, - 1,0,0,0,692,5740,1,0,0,0,694,5747,1,0,0,0,696,5783,1,0,0,0,698,5790, - 1,0,0,0,700,5792,1,0,0,0,702,5805,1,0,0,0,704,5807,1,0,0,0,706,5852, - 1,0,0,0,708,5854,1,0,0,0,710,5889,1,0,0,0,712,5891,1,0,0,0,714,5893, - 1,0,0,0,716,5895,1,0,0,0,718,5903,1,0,0,0,720,5917,1,0,0,0,722,6387, - 1,0,0,0,724,6391,1,0,0,0,726,6396,1,0,0,0,728,6455,1,0,0,0,730,6459, - 1,0,0,0,732,6678,1,0,0,0,734,6680,1,0,0,0,736,6688,1,0,0,0,738,6704, - 1,0,0,0,740,6711,1,0,0,0,742,6713,1,0,0,0,744,6904,1,0,0,0,746,6906, - 1,0,0,0,748,6914,1,0,0,0,750,6922,1,0,0,0,752,6951,1,0,0,0,754,6953, - 1,0,0,0,756,6962,1,0,0,0,758,6970,1,0,0,0,760,7009,1,0,0,0,762,7023, - 1,0,0,0,764,7025,1,0,0,0,766,7045,1,0,0,0,768,7047,1,0,0,0,770,7060, - 1,0,0,0,772,7064,1,0,0,0,774,7066,1,0,0,0,776,7071,1,0,0,0,778,7073, - 1,0,0,0,780,7080,1,0,0,0,782,7082,1,0,0,0,784,7089,1,0,0,0,786,7141, - 1,0,0,0,788,7146,1,0,0,0,790,7158,1,0,0,0,792,7160,1,0,0,0,794,7172, - 1,0,0,0,796,7180,1,0,0,0,798,7182,1,0,0,0,800,7214,1,0,0,0,802,7216, - 1,0,0,0,804,7219,1,0,0,0,806,7227,1,0,0,0,808,7230,1,0,0,0,810,7234, - 1,0,0,0,812,7249,1,0,0,0,814,7253,1,0,0,0,816,7255,1,0,0,0,818,7266, - 1,0,0,0,820,7271,1,0,0,0,822,7285,1,0,0,0,824,7293,1,0,0,0,826,7295, - 1,0,0,0,828,7301,1,0,0,0,830,7306,1,0,0,0,832,7313,1,0,0,0,834,7341, - 1,0,0,0,836,7343,1,0,0,0,838,7422,1,0,0,0,840,7424,1,0,0,0,842,7426, - 1,0,0,0,844,7450,1,0,0,0,846,7455,1,0,0,0,848,7470,1,0,0,0,850,7482, - 1,0,0,0,852,7484,1,0,0,0,854,7492,1,0,0,0,856,7494,1,0,0,0,858,7499, - 1,0,0,0,860,7504,1,0,0,0,862,7508,1,0,0,0,864,7512,1,0,0,0,866,7516, - 1,0,0,0,868,7520,1,0,0,0,870,7527,1,0,0,0,872,7529,1,0,0,0,874,7532, - 1,0,0,0,876,7542,1,0,0,0,878,7560,1,0,0,0,880,7571,1,0,0,0,882,7573, - 1,0,0,0,884,7581,1,0,0,0,886,7586,1,0,0,0,888,7591,1,0,0,0,890,7593, - 1,0,0,0,892,7604,1,0,0,0,894,7610,1,0,0,0,896,7639,1,0,0,0,898,7646, - 1,0,0,0,900,7658,1,0,0,0,902,7660,1,0,0,0,904,7668,1,0,0,0,906,7692, - 1,0,0,0,908,7694,1,0,0,0,910,7696,1,0,0,0,912,7704,1,0,0,0,914,7720, - 1,0,0,0,916,7731,1,0,0,0,918,7736,1,0,0,0,920,7738,1,0,0,0,922,7769, - 1,0,0,0,924,7788,1,0,0,0,926,7801,1,0,0,0,928,7808,1,0,0,0,930,7819, - 1,0,0,0,932,7821,1,0,0,0,934,7832,1,0,0,0,936,7846,1,0,0,0,938,7850, - 1,0,0,0,940,7856,1,0,0,0,942,7858,1,0,0,0,944,7867,1,0,0,0,946,7885, - 1,0,0,0,948,7887,1,0,0,0,950,7890,1,0,0,0,952,7898,1,0,0,0,954,7906, - 1,0,0,0,956,7915,1,0,0,0,958,7923,1,0,0,0,960,7927,1,0,0,0,962,7937, - 1,0,0,0,964,7960,1,0,0,0,966,7962,1,0,0,0,968,7972,1,0,0,0,970,8003, - 1,0,0,0,972,8005,1,0,0,0,974,8011,1,0,0,0,976,8019,1,0,0,0,978,8031, - 1,0,0,0,980,8035,1,0,0,0,982,8045,1,0,0,0,984,8049,1,0,0,0,986,8065, - 1,0,0,0,988,8069,1,0,0,0,990,8074,1,0,0,0,992,8076,1,0,0,0,994,8086, - 1,0,0,0,996,8090,1,0,0,0,998,8092,1,0,0,0,1000,8096,1,0,0,0,1002, - 8104,1,0,0,0,1004,8120,1,0,0,0,1006,8124,1,0,0,0,1008,8149,1,0,0, - 0,1010,8151,1,0,0,0,1012,8160,1,0,0,0,1014,8162,1,0,0,0,1016,8169, - 1,0,0,0,1018,8173,1,0,0,0,1020,8175,1,0,0,0,1022,8177,1,0,0,0,1024, - 8183,1,0,0,0,1026,8185,1,0,0,0,1028,8198,1,0,0,0,1030,8200,1,0,0, - 0,1032,8203,1,0,0,0,1034,8208,1,0,0,0,1036,8213,1,0,0,0,1038,8222, - 1,0,0,0,1040,8228,1,0,0,0,1042,8232,1,0,0,0,1044,8235,1,0,0,0,1046, - 8239,1,0,0,0,1048,8243,1,0,0,0,1050,8258,1,0,0,0,1052,8260,1,0,0, - 0,1054,8277,1,0,0,0,1056,8288,1,0,0,0,1058,8290,1,0,0,0,1060,8346, - 1,0,0,0,1062,8370,1,0,0,0,1064,8381,1,0,0,0,1066,8384,1,0,0,0,1068, - 8406,1,0,0,0,1070,8408,1,0,0,0,1072,8419,1,0,0,0,1074,8433,1,0,0, - 0,1076,8435,1,0,0,0,1078,8443,1,0,0,0,1080,8450,1,0,0,0,1082,8463, - 1,0,0,0,1084,8475,1,0,0,0,1086,8477,1,0,0,0,1088,8480,1,0,0,0,1090, - 8494,1,0,0,0,1092,8499,1,0,0,0,1094,8504,1,0,0,0,1096,8514,1,0,0, - 0,1098,8518,1,0,0,0,1100,8520,1,0,0,0,1102,8528,1,0,0,0,1104,8532, - 1,0,0,0,1106,8553,1,0,0,0,1108,8561,1,0,0,0,1110,8571,1,0,0,0,1112, - 8583,1,0,0,0,1114,8585,1,0,0,0,1116,8599,1,0,0,0,1118,8619,1,0,0, - 0,1120,8628,1,0,0,0,1122,8644,1,0,0,0,1124,8650,1,0,0,0,1126,8656, - 1,0,0,0,1128,8668,1,0,0,0,1130,8686,1,0,0,0,1132,8693,1,0,0,0,1134, - 8697,1,0,0,0,1136,8701,1,0,0,0,1138,8703,1,0,0,0,1140,8709,1,0,0, - 0,1142,8712,1,0,0,0,1144,8719,1,0,0,0,1146,8732,1,0,0,0,1148,8736, - 1,0,0,0,1150,8738,1,0,0,0,1152,8747,1,0,0,0,1154,8756,1,0,0,0,1156, - 8784,1,0,0,0,1158,8786,1,0,0,0,1160,8796,1,0,0,0,1162,8798,1,0,0, - 0,1164,8800,1,0,0,0,1166,8804,1,0,0,0,1168,8812,1,0,0,0,1170,8820, - 1,0,0,0,1172,8828,1,0,0,0,1174,8842,1,0,0,0,1176,8851,1,0,0,0,1178, - 8855,1,0,0,0,1180,8859,1,0,0,0,1182,8885,1,0,0,0,1184,8899,1,0,0, - 0,1186,8914,1,0,0,0,1188,8924,1,0,0,0,1190,8928,1,0,0,0,1192,8936, - 1,0,0,0,1194,8944,1,0,0,0,1196,8950,1,0,0,0,1198,8954,1,0,0,0,1200, - 8961,1,0,0,0,1202,8966,1,0,0,0,1204,8981,1,0,0,0,1206,9061,1,0,0, - 0,1208,9063,1,0,0,0,1210,9065,1,0,0,0,1212,9095,1,0,0,0,1214,9099, - 1,0,0,0,1216,9278,1,0,0,0,1218,9285,1,0,0,0,1220,9298,1,0,0,0,1222, - 9300,1,0,0,0,1224,9305,1,0,0,0,1226,9313,1,0,0,0,1228,9318,1,0,0, - 0,1230,9325,1,0,0,0,1232,9342,1,0,0,0,1234,9344,1,0,0,0,1236,9354, - 1,0,0,0,1238,9363,1,0,0,0,1240,9368,1,0,0,0,1242,9370,1,0,0,0,1244, - 9378,1,0,0,0,1246,9388,1,0,0,0,1248,9390,1,0,0,0,1250,9399,1,0,0, - 0,1252,9405,1,0,0,0,1254,9420,1,0,0,0,1256,9428,1,0,0,0,1258,9437, - 1,0,0,0,1260,9449,1,0,0,0,1262,9463,1,0,0,0,1264,9465,1,0,0,0,1266, - 9472,1,0,0,0,1268,9478,1,0,0,0,1270,9482,1,0,0,0,1272,9484,1,0,0, - 0,1274,9492,1,0,0,0,1276,9500,1,0,0,0,1278,9514,1,0,0,0,1280,9516, - 1,0,0,0,1282,9524,1,0,0,0,1284,9537,1,0,0,0,1286,9539,1,0,0,0,1288, - 9547,1,0,0,0,1290,9554,1,0,0,0,1292,9567,1,0,0,0,1294,9577,1,0,0, - 0,1296,9579,1,0,0,0,1298,9581,1,0,0,0,1300,9595,1,0,0,0,1302,9624, - 1,0,0,0,1304,9633,1,0,0,0,1306,9640,1,0,0,0,1308,9642,1,0,0,0,1310, - 9649,1,0,0,0,1312,9653,1,0,0,0,1314,9661,1,0,0,0,1316,9665,1,0,0, - 0,1318,9667,1,0,0,0,1320,9686,1,0,0,0,1322,9690,1,0,0,0,1324,9693, - 1,0,0,0,1326,9700,1,0,0,0,1328,9705,1,0,0,0,1330,9707,1,0,0,0,1332, - 9723,1,0,0,0,1334,9725,1,0,0,0,1336,9733,1,0,0,0,1338,9737,1,0,0, - 0,1340,9745,1,0,0,0,1342,9747,1,0,0,0,1344,9749,1,0,0,0,1346,9758, - 1,0,0,0,1348,9792,1,0,0,0,1350,9794,1,0,0,0,1352,9796,1,0,0,0,1354, - 9798,1,0,0,0,1356,9800,1,0,0,0,1358,9802,1,0,0,0,1360,9816,1,0,0, - 0,1362,9821,1,0,0,0,1364,9828,1,0,0,0,1366,9830,1,0,0,0,1368,9835, - 1,0,0,0,1370,9837,1,0,0,0,1372,9851,1,0,0,0,1374,9857,1,0,0,0,1376, - 9863,1,0,0,0,1378,9869,1,0,0,0,1380,9877,1,0,0,0,1382,9886,1,0,0, - 0,1384,9888,1,0,0,0,1386,9890,1,0,0,0,1388,9944,1,0,0,0,1390,9946, - 1,0,0,0,1392,9948,1,0,0,0,1394,9950,1,0,0,0,1396,9952,1,0,0,0,1398, - 9959,1,0,0,0,1400,9982,1,0,0,0,1402,9984,1,0,0,0,1404,9990,1,0,0, - 0,1406,9994,1,0,0,0,1408,9996,1,0,0,0,1410,10003,1,0,0,0,1412,10010, - 1,0,0,0,1414,10013,1,0,0,0,1416,10017,1,0,0,0,1418,10024,1,0,0,0, - 1420,10026,1,0,0,0,1422,10050,1,0,0,0,1424,10052,1,0,0,0,1426,10059, - 1,0,0,0,1428,10061,1,0,0,0,1430,10069,1,0,0,0,1432,10072,1,0,0,0, - 1434,10076,1,0,0,0,1436,10078,1,0,0,0,1438,10082,1,0,0,0,1440,10084, - 1,0,0,0,1442,10089,1,0,0,0,1444,10094,1,0,0,0,1446,10100,1,0,0,0, - 1448,10104,1,0,0,0,1450,10106,1,0,0,0,1452,10111,1,0,0,0,1454,10141, - 1,0,0,0,1456,10143,1,0,0,0,1458,10161,1,0,0,0,1460,10165,1,0,0,0, - 1462,10167,1,0,0,0,1464,10172,1,0,0,0,1466,10181,1,0,0,0,1468,10183, - 1,0,0,0,1470,10191,1,0,0,0,1472,10195,1,0,0,0,1474,10197,1,0,0,0, - 1476,10201,1,0,0,0,1478,10212,1,0,0,0,1480,10229,1,0,0,0,1482,10235, - 1,0,0,0,1484,10237,1,0,0,0,1486,10247,1,0,0,0,1488,10250,1,0,0,0, - 1490,10254,1,0,0,0,1492,10262,1,0,0,0,1494,10264,1,0,0,0,1496,10267, - 1,0,0,0,1498,10272,1,0,0,0,1500,10277,1,0,0,0,1502,10299,1,0,0,0, - 1504,10313,1,0,0,0,1506,10317,1,0,0,0,1508,10322,1,0,0,0,1510,10324, - 1,0,0,0,1512,10326,1,0,0,0,1514,10338,1,0,0,0,1516,10340,1,0,0,0, - 1518,10345,1,0,0,0,1520,10347,1,0,0,0,1522,10365,1,0,0,0,1524,10393, - 1,0,0,0,1526,10403,1,0,0,0,1528,10412,1,0,0,0,1530,10417,1,0,0,0, - 1532,10419,1,0,0,0,1534,10423,1,0,0,0,1536,10431,1,0,0,0,1538,10439, - 1,0,0,0,1540,10441,1,0,0,0,1542,10448,1,0,0,0,1544,10451,1,0,0,0, - 1546,10467,1,0,0,0,1548,10469,1,0,0,0,1550,10483,1,0,0,0,1552,10485, - 1,0,0,0,1554,10512,1,0,0,0,1556,10514,1,0,0,0,1558,10525,1,0,0,0, - 1560,10531,1,0,0,0,1562,10535,1,0,0,0,1564,10537,1,0,0,0,1566,10545, - 1,0,0,0,1568,10550,1,0,0,0,1570,10569,1,0,0,0,1572,10571,1,0,0,0, - 1574,10576,1,0,0,0,1576,10580,1,0,0,0,1578,10583,1,0,0,0,1580,10587, - 1,0,0,0,1582,10597,1,0,0,0,1584,10611,1,0,0,0,1586,10615,1,0,0,0, - 1588,10620,1,0,0,0,1590,10623,1,0,0,0,1592,10627,1,0,0,0,1594,10632, - 1,0,0,0,1596,10643,1,0,0,0,1598,10647,1,0,0,0,1600,10651,1,0,0,0, - 1602,10655,1,0,0,0,1604,10660,1,0,0,0,1606,10664,1,0,0,0,1608,10666, - 1,0,0,0,1610,10668,1,0,0,0,1612,10676,1,0,0,0,1614,10678,1,0,0,0, - 1616,10680,1,0,0,0,1618,10682,1,0,0,0,1620,10684,1,0,0,0,1622,10692, - 1,0,0,0,1624,1625,3,4,2,0,1625,1626,5,0,0,1,1626,1,1,0,0,0,1627, - 1628,3,1396,698,0,1628,3,1,0,0,0,1629,1630,3,6,3,0,1630,5,1,0,0, - 0,1631,1633,3,8,4,0,1632,1634,5,7,0,0,1633,1632,1,0,0,0,1633,1634, - 1,0,0,0,1634,1636,1,0,0,0,1635,1631,1,0,0,0,1636,1639,1,0,0,0,1637, - 1635,1,0,0,0,1637,1638,1,0,0,0,1638,7,1,0,0,0,1639,1637,1,0,0,0, - 1640,1766,3,452,226,0,1641,1766,3,826,413,0,1642,1766,3,816,408, - 0,1643,1766,3,818,409,0,1644,1766,3,578,289,0,1645,1766,3,832,416, - 0,1646,1766,3,478,239,0,1647,1766,3,322,161,0,1648,1766,3,328,164, - 0,1649,1766,3,338,169,0,1650,1766,3,364,182,0,1651,1766,3,670,335, - 0,1652,1766,3,38,19,0,1653,1766,3,728,364,0,1654,1766,3,732,366, - 0,1655,1766,3,744,372,0,1656,1766,3,734,367,0,1657,1766,3,742,371, - 0,1658,1766,3,384,192,0,1659,1766,3,280,140,0,1660,1766,3,828,414, - 0,1661,1766,3,96,48,0,1662,1766,3,720,360,0,1663,1766,3,134,67,0, - 1664,1766,3,752,376,0,1665,1766,3,32,16,0,1666,1766,3,28,14,0,1667, - 1766,3,760,380,0,1668,1766,3,262,131,0,1669,1766,3,838,419,0,1670, - 1766,3,836,418,0,1671,1766,3,380,190,0,1672,1766,3,850,425,0,1673, - 1766,3,12,6,0,1674,1766,3,92,46,0,1675,1766,3,140,70,0,1676,1766, - 3,844,422,0,1677,1766,3,534,267,0,1678,1766,3,86,43,0,1679,1766, - 3,142,71,0,1680,1766,3,400,200,0,1681,1766,3,264,132,0,1682,1766, - 3,456,228,0,1683,1766,3,696,348,0,1684,1766,3,842,421,0,1685,1766, - 3,830,415,0,1686,1766,3,316,158,0,1687,1766,3,330,165,0,1688,1766, - 3,356,178,0,1689,1766,3,366,183,0,1690,1766,3,616,308,0,1691,1766, - 3,36,18,0,1692,1766,3,270,135,0,1693,1766,3,482,241,0,1694,1766, - 3,496,248,0,1695,1766,3,746,373,0,1696,1766,3,498,249,0,1697,1766, - 3,382,191,0,1698,1766,3,296,148,0,1699,1766,3,42,21,0,1700,1766, - 3,278,139,0,1701,1766,3,172,86,0,1702,1766,3,754,377,0,1703,1766, - 3,260,130,0,1704,1766,3,310,155,0,1705,1766,3,704,352,0,1706,1766, - 3,404,202,0,1707,1766,3,444,222,0,1708,1766,3,14,7,0,1709,1766,3, - 26,13,0,1710,1766,3,374,187,0,1711,1766,3,804,402,0,1712,1766,3, - 900,450,0,1713,1766,3,952,476,0,1714,1766,3,458,229,0,1715,1766, - 3,928,464,0,1716,1766,3,94,47,0,1717,1766,3,690,345,0,1718,1766, - 3,700,350,0,1719,1766,3,504,252,0,1720,1766,3,506,253,0,1721,1766, - 3,508,254,0,1722,1766,3,512,256,0,1723,1766,3,762,381,0,1724,1766, - 3,314,157,0,1725,1766,3,708,354,0,1726,1766,3,34,17,0,1727,1766, - 3,378,189,0,1728,1766,3,820,410,0,1729,1766,3,896,448,0,1730,1766, - 3,878,439,0,1731,1766,3,544,272,0,1732,1766,3,552,276,0,1733,1766, - 3,570,285,0,1734,1766,3,368,184,0,1735,1766,3,588,294,0,1736,1766, - 3,902,451,0,1737,1766,3,920,460,0,1738,1766,3,782,391,0,1739,1766, - 3,276,138,0,1740,1766,3,802,401,0,1741,1766,3,932,466,0,1742,1766, - 3,778,389,0,1743,1766,3,890,445,0,1744,1766,3,510,255,0,1745,1766, - 3,710,355,0,1746,1766,3,678,339,0,1747,1766,3,676,338,0,1748,1766, - 3,680,340,0,1749,1766,3,722,361,0,1750,1766,3,554,277,0,1751,1766, - 3,572,286,0,1752,1766,3,764,382,0,1753,1766,3,538,269,0,1754,1766, - 3,960,480,0,1755,1766,3,786,393,0,1756,1766,3,530,265,0,1757,1766, - 3,784,392,0,1758,1766,3,942,471,0,1759,1766,3,848,424,0,1760,1766, - 3,74,37,0,1761,1766,3,50,25,0,1762,1766,3,84,42,0,1763,1766,3,798, - 399,0,1764,1766,3,10,5,0,1765,1640,1,0,0,0,1765,1641,1,0,0,0,1765, - 1642,1,0,0,0,1765,1643,1,0,0,0,1765,1644,1,0,0,0,1765,1645,1,0,0, - 0,1765,1646,1,0,0,0,1765,1647,1,0,0,0,1765,1648,1,0,0,0,1765,1649, - 1,0,0,0,1765,1650,1,0,0,0,1765,1651,1,0,0,0,1765,1652,1,0,0,0,1765, - 1653,1,0,0,0,1765,1654,1,0,0,0,1765,1655,1,0,0,0,1765,1656,1,0,0, - 0,1765,1657,1,0,0,0,1765,1658,1,0,0,0,1765,1659,1,0,0,0,1765,1660, - 1,0,0,0,1765,1661,1,0,0,0,1765,1662,1,0,0,0,1765,1663,1,0,0,0,1765, - 1664,1,0,0,0,1765,1665,1,0,0,0,1765,1666,1,0,0,0,1765,1667,1,0,0, - 0,1765,1668,1,0,0,0,1765,1669,1,0,0,0,1765,1670,1,0,0,0,1765,1671, - 1,0,0,0,1765,1672,1,0,0,0,1765,1673,1,0,0,0,1765,1674,1,0,0,0,1765, - 1675,1,0,0,0,1765,1676,1,0,0,0,1765,1677,1,0,0,0,1765,1678,1,0,0, - 0,1765,1679,1,0,0,0,1765,1680,1,0,0,0,1765,1681,1,0,0,0,1765,1682, - 1,0,0,0,1765,1683,1,0,0,0,1765,1684,1,0,0,0,1765,1685,1,0,0,0,1765, - 1686,1,0,0,0,1765,1687,1,0,0,0,1765,1688,1,0,0,0,1765,1689,1,0,0, - 0,1765,1690,1,0,0,0,1765,1691,1,0,0,0,1765,1692,1,0,0,0,1765,1693, - 1,0,0,0,1765,1694,1,0,0,0,1765,1695,1,0,0,0,1765,1696,1,0,0,0,1765, - 1697,1,0,0,0,1765,1698,1,0,0,0,1765,1699,1,0,0,0,1765,1700,1,0,0, - 0,1765,1701,1,0,0,0,1765,1702,1,0,0,0,1765,1703,1,0,0,0,1765,1704, - 1,0,0,0,1765,1705,1,0,0,0,1765,1706,1,0,0,0,1765,1707,1,0,0,0,1765, - 1708,1,0,0,0,1765,1709,1,0,0,0,1765,1710,1,0,0,0,1765,1711,1,0,0, - 0,1765,1712,1,0,0,0,1765,1713,1,0,0,0,1765,1714,1,0,0,0,1765,1715, - 1,0,0,0,1765,1716,1,0,0,0,1765,1717,1,0,0,0,1765,1718,1,0,0,0,1765, - 1719,1,0,0,0,1765,1720,1,0,0,0,1765,1721,1,0,0,0,1765,1722,1,0,0, - 0,1765,1723,1,0,0,0,1765,1724,1,0,0,0,1765,1725,1,0,0,0,1765,1726, - 1,0,0,0,1765,1727,1,0,0,0,1765,1728,1,0,0,0,1765,1729,1,0,0,0,1765, - 1730,1,0,0,0,1765,1731,1,0,0,0,1765,1732,1,0,0,0,1765,1733,1,0,0, - 0,1765,1734,1,0,0,0,1765,1735,1,0,0,0,1765,1736,1,0,0,0,1765,1737, - 1,0,0,0,1765,1738,1,0,0,0,1765,1739,1,0,0,0,1765,1740,1,0,0,0,1765, - 1741,1,0,0,0,1765,1742,1,0,0,0,1765,1743,1,0,0,0,1765,1744,1,0,0, - 0,1765,1745,1,0,0,0,1765,1746,1,0,0,0,1765,1747,1,0,0,0,1765,1748, - 1,0,0,0,1765,1749,1,0,0,0,1765,1750,1,0,0,0,1765,1751,1,0,0,0,1765, - 1752,1,0,0,0,1765,1753,1,0,0,0,1765,1754,1,0,0,0,1765,1755,1,0,0, - 0,1765,1756,1,0,0,0,1765,1757,1,0,0,0,1765,1758,1,0,0,0,1765,1759, - 1,0,0,0,1765,1760,1,0,0,0,1765,1761,1,0,0,0,1765,1762,1,0,0,0,1765, - 1763,1,0,0,0,1765,1764,1,0,0,0,1766,9,1,0,0,0,1767,1769,5,668,0, - 0,1768,1770,5,669,0,0,1769,1768,1,0,0,0,1769,1770,1,0,0,0,1770,11, - 1,0,0,0,1771,1772,5,433,0,0,1772,1773,3,1210,605,0,1773,13,1,0,0, - 0,1774,1775,5,46,0,0,1775,1776,5,311,0,0,1776,1777,3,1366,683,0, - 1777,1778,3,16,8,0,1778,1779,3,18,9,0,1779,15,1,0,0,0,1780,1783, - 5,105,0,0,1781,1783,1,0,0,0,1782,1780,1,0,0,0,1782,1781,1,0,0,0, - 1783,17,1,0,0,0,1784,1786,3,24,12,0,1785,1784,1,0,0,0,1786,1789, - 1,0,0,0,1787,1785,1,0,0,0,1787,1788,1,0,0,0,1788,19,1,0,0,0,1789, - 1787,1,0,0,0,1790,1792,3,22,11,0,1791,1790,1,0,0,0,1792,1795,1,0, - 0,0,1793,1791,1,0,0,0,1793,1794,1,0,0,0,1794,21,1,0,0,0,1795,1793, - 1,0,0,0,1796,1799,5,280,0,0,1797,1800,3,1358,679,0,1798,1800,5,78, - 0,0,1799,1797,1,0,0,0,1799,1798,1,0,0,0,1800,1815,1,0,0,0,1801,1802, - 7,0,0,0,1802,1803,5,280,0,0,1803,1815,3,1358,679,0,1804,1815,5,228, - 0,0,1805,1806,5,164,0,0,1806,1807,5,74,0,0,1807,1815,3,1364,682, - 0,1808,1809,5,364,0,0,1809,1810,5,361,0,0,1810,1815,3,1358,679,0, - 1811,1812,5,99,0,0,1812,1815,3,1370,685,0,1813,1815,3,1382,691,0, - 1814,1796,1,0,0,0,1814,1801,1,0,0,0,1814,1804,1,0,0,0,1814,1805, - 1,0,0,0,1814,1808,1,0,0,0,1814,1811,1,0,0,0,1814,1813,1,0,0,0,1815, - 23,1,0,0,0,1816,1827,3,22,11,0,1817,1818,5,341,0,0,1818,1827,3,1356, - 678,0,1819,1820,5,134,0,0,1820,1827,3,1370,685,0,1821,1822,5,311, - 0,0,1822,1827,3,1370,685,0,1823,1824,5,68,0,0,1824,1825,7,1,0,0, - 1825,1827,3,1370,685,0,1826,1816,1,0,0,0,1826,1817,1,0,0,0,1826, - 1819,1,0,0,0,1826,1821,1,0,0,0,1826,1823,1,0,0,0,1827,25,1,0,0,0, - 1828,1829,5,46,0,0,1829,1830,5,99,0,0,1830,1831,3,1366,683,0,1831, - 1832,3,16,8,0,1832,1833,3,18,9,0,1833,27,1,0,0,0,1834,1835,5,138, - 0,0,1835,1836,7,2,0,0,1836,1837,3,1368,684,0,1837,1838,3,16,8,0, - 1838,1839,3,20,10,0,1839,29,1,0,0,0,1840,1845,1,0,0,0,1841,1842, - 5,68,0,0,1842,1843,5,175,0,0,1843,1845,3,1340,670,0,1844,1840,1, - 0,0,0,1844,1841,1,0,0,0,1845,31,1,0,0,0,1846,1847,5,138,0,0,1847, - 1849,7,2,0,0,1848,1850,5,30,0,0,1849,1848,1,0,0,0,1849,1850,1,0, - 0,0,1850,1851,1,0,0,0,1851,1852,3,1368,684,0,1852,1853,3,30,15,0, - 1853,1854,3,80,40,0,1854,33,1,0,0,0,1855,1856,5,191,0,0,1856,1859, - 7,3,0,0,1857,1858,5,220,0,0,1858,1860,5,389,0,0,1859,1857,1,0,0, - 0,1859,1860,1,0,0,0,1860,1861,1,0,0,0,1861,1862,3,1370,685,0,1862, - 35,1,0,0,0,1863,1864,5,46,0,0,1864,1865,5,66,0,0,1865,1866,3,1366, - 683,0,1866,1867,3,16,8,0,1867,1868,3,18,9,0,1868,37,1,0,0,0,1869, - 1870,5,138,0,0,1870,1871,5,66,0,0,1871,1872,3,1368,684,0,1872,1873, - 3,40,20,0,1873,1874,5,99,0,0,1874,1875,3,1370,685,0,1875,39,1,0, - 0,0,1876,1877,7,4,0,0,1877,41,1,0,0,0,1878,1879,5,46,0,0,1879,1883, - 5,316,0,0,1880,1881,5,220,0,0,1881,1882,5,77,0,0,1882,1884,5,389, - 0,0,1883,1880,1,0,0,0,1883,1884,1,0,0,0,1884,1890,1,0,0,0,1885,1886, - 3,44,22,0,1886,1887,5,106,0,0,1887,1888,3,1368,684,0,1888,1891,1, - 0,0,0,1889,1891,3,1372,686,0,1890,1885,1,0,0,0,1890,1889,1,0,0,0, - 1891,1892,1,0,0,0,1892,1893,3,46,23,0,1893,43,1,0,0,0,1894,1897, - 3,1372,686,0,1895,1897,1,0,0,0,1896,1894,1,0,0,0,1896,1895,1,0,0, - 0,1897,45,1,0,0,0,1898,1900,3,48,24,0,1899,1898,1,0,0,0,1900,1903, - 1,0,0,0,1901,1899,1,0,0,0,1901,1902,1,0,0,0,1902,47,1,0,0,0,1903, - 1901,1,0,0,0,1904,1911,3,172,86,0,1905,1911,3,588,294,0,1906,1911, - 3,278,139,0,1907,1911,3,404,202,0,1908,1911,3,552,276,0,1909,1911, - 3,798,399,0,1910,1904,1,0,0,0,1910,1905,1,0,0,0,1910,1906,1,0,0, - 0,1910,1907,1,0,0,0,1910,1908,1,0,0,0,1910,1909,1,0,0,0,1911,49, - 1,0,0,0,1912,1914,5,326,0,0,1913,1915,7,5,0,0,1914,1913,1,0,0,0, - 1914,1915,1,0,0,0,1915,1916,1,0,0,0,1916,1917,3,52,26,0,1917,51, - 1,0,0,0,1918,1919,5,349,0,0,1919,1927,3,792,396,0,1920,1921,5,325, - 0,0,1921,1922,5,154,0,0,1922,1923,5,36,0,0,1923,1924,5,349,0,0,1924, - 1927,3,792,396,0,1925,1927,3,56,28,0,1926,1918,1,0,0,0,1926,1920, - 1,0,0,0,1926,1925,1,0,0,0,1927,53,1,0,0,0,1928,1929,3,58,29,0,1929, - 1930,7,6,0,0,1930,1931,3,60,30,0,1931,55,1,0,0,0,1932,1958,3,54, - 27,0,1933,1934,3,58,29,0,1934,1935,5,64,0,0,1935,1936,5,434,0,0, - 1936,1958,1,0,0,0,1937,1938,5,411,0,0,1938,1939,5,379,0,0,1939,1958, - 3,68,34,0,1940,1941,5,152,0,0,1941,1958,3,1358,679,0,1942,1943,5, - 316,0,0,1943,1958,3,1358,679,0,1944,1945,5,260,0,0,1945,1958,3,70, - 35,0,1946,1947,5,311,0,0,1947,1958,3,72,36,0,1948,1949,5,325,0,0, - 1949,1950,5,106,0,0,1950,1958,3,72,36,0,1951,1952,5,376,0,0,1952, - 1953,5,272,0,0,1953,1958,3,1228,614,0,1954,1955,5,349,0,0,1955,1956, - 5,330,0,0,1956,1958,3,1358,679,0,1957,1932,1,0,0,0,1957,1933,1,0, - 0,0,1957,1937,1,0,0,0,1957,1940,1,0,0,0,1957,1942,1,0,0,0,1957,1944, - 1,0,0,0,1957,1946,1,0,0,0,1957,1948,1,0,0,0,1957,1951,1,0,0,0,1957, - 1954,1,0,0,0,1958,57,1,0,0,0,1959,1964,3,1372,686,0,1960,1961,5, - 11,0,0,1961,1963,3,1372,686,0,1962,1960,1,0,0,0,1963,1966,1,0,0, - 0,1964,1962,1,0,0,0,1964,1965,1,0,0,0,1965,59,1,0,0,0,1966,1964, - 1,0,0,0,1967,1972,3,62,31,0,1968,1969,5,6,0,0,1969,1971,3,62,31, - 0,1970,1968,1,0,0,0,1971,1974,1,0,0,0,1972,1970,1,0,0,0,1972,1973, - 1,0,0,0,1973,61,1,0,0,0,1974,1972,1,0,0,0,1975,1978,3,66,33,0,1976, - 1978,3,292,146,0,1977,1975,1,0,0,0,1977,1976,1,0,0,0,1978,63,1,0, - 0,0,1979,1980,5,293,0,0,1980,1985,7,7,0,0,1981,1982,5,303,0,0,1982, - 1985,5,293,0,0,1983,1985,5,323,0,0,1984,1979,1,0,0,0,1984,1981,1, - 0,0,0,1984,1983,1,0,0,0,1985,65,1,0,0,0,1986,1991,5,96,0,0,1987, - 1991,5,60,0,0,1988,1991,5,80,0,0,1989,1991,3,72,36,0,1990,1986,1, - 0,0,0,1990,1987,1,0,0,0,1990,1988,1,0,0,0,1990,1989,1,0,0,0,1991, - 67,1,0,0,0,1992,2008,3,1358,679,0,1993,2008,3,1382,691,0,1994,1995, - 3,1152,576,0,1995,1996,3,1358,679,0,1996,1997,3,1156,578,0,1997, - 2008,1,0,0,0,1998,1999,3,1152,576,0,1999,2000,5,2,0,0,2000,2001, - 3,1356,678,0,2001,2002,5,3,0,0,2002,2003,3,1358,679,0,2003,2008, - 1,0,0,0,2004,2008,3,292,146,0,2005,2008,5,53,0,0,2006,2008,5,245, - 0,0,2007,1992,1,0,0,0,2007,1993,1,0,0,0,2007,1994,1,0,0,0,2007,1998, - 1,0,0,0,2007,2004,1,0,0,0,2007,2005,1,0,0,0,2007,2006,1,0,0,0,2008, - 69,1,0,0,0,2009,2013,3,1358,679,0,2010,2013,5,53,0,0,2011,2013,1, - 0,0,0,2012,2009,1,0,0,0,2012,2010,1,0,0,0,2012,2011,1,0,0,0,2013, - 71,1,0,0,0,2014,2017,3,1378,689,0,2015,2017,3,1358,679,0,2016,2014, - 1,0,0,0,2016,2015,1,0,0,0,2017,73,1,0,0,0,2018,2019,5,306,0,0,2019, - 2020,3,76,38,0,2020,75,1,0,0,0,2021,2030,3,78,39,0,2022,2023,5,411, - 0,0,2023,2030,5,379,0,0,2024,2025,5,349,0,0,2025,2026,5,235,0,0, - 2026,2030,5,242,0,0,2027,2028,5,325,0,0,2028,2030,5,106,0,0,2029, - 2021,1,0,0,0,2029,2022,1,0,0,0,2029,2024,1,0,0,0,2029,2027,1,0,0, - 0,2030,77,1,0,0,0,2031,2034,3,58,29,0,2032,2034,5,30,0,0,2033,2031, - 1,0,0,0,2033,2032,1,0,0,0,2034,79,1,0,0,0,2035,2036,5,326,0,0,2036, - 2039,3,52,26,0,2037,2039,3,74,37,0,2038,2035,1,0,0,0,2038,2037,1, - 0,0,0,2039,81,1,0,0,0,2040,2041,5,326,0,0,2041,2044,3,56,28,0,2042, - 2044,3,74,37,0,2043,2040,1,0,0,0,2043,2042,1,0,0,0,2044,83,1,0,0, - 0,2045,2055,5,328,0,0,2046,2056,3,58,29,0,2047,2048,5,411,0,0,2048, - 2056,5,379,0,0,2049,2050,5,349,0,0,2050,2051,5,235,0,0,2051,2056, - 5,242,0,0,2052,2053,5,325,0,0,2053,2056,5,106,0,0,2054,2056,5,30, - 0,0,2055,2046,1,0,0,0,2055,2047,1,0,0,0,2055,2049,1,0,0,0,2055,2052, - 1,0,0,0,2055,2054,1,0,0,0,2056,85,1,0,0,0,2057,2058,5,326,0,0,2058, - 2059,5,165,0,0,2059,2060,3,88,44,0,2060,2061,3,90,45,0,2061,87,1, - 0,0,0,2062,2065,5,30,0,0,2063,2065,3,1334,667,0,2064,2062,1,0,0, - 0,2064,2063,1,0,0,0,2065,89,1,0,0,0,2066,2067,7,8,0,0,2067,91,1, - 0,0,0,2068,2069,5,155,0,0,2069,93,1,0,0,0,2070,2071,5,187,0,0,2071, - 2072,7,9,0,0,2072,95,1,0,0,0,2073,2074,5,138,0,0,2074,2077,5,92, - 0,0,2075,2076,5,220,0,0,2076,2078,5,389,0,0,2077,2075,1,0,0,0,2077, - 2078,1,0,0,0,2078,2079,1,0,0,0,2079,2082,3,1074,537,0,2080,2083, - 3,98,49,0,2081,2083,3,100,50,0,2082,2080,1,0,0,0,2082,2081,1,0,0, - 0,2083,2183,1,0,0,0,2084,2085,5,138,0,0,2085,2086,5,92,0,0,2086, - 2087,5,30,0,0,2087,2088,5,68,0,0,2088,2089,5,344,0,0,2089,2093,3, - 1340,670,0,2090,2091,5,274,0,0,2091,2092,5,147,0,0,2092,2094,3,1370, - 685,0,2093,2090,1,0,0,0,2093,2094,1,0,0,0,2094,2095,1,0,0,0,2095, - 2096,5,326,0,0,2096,2097,5,344,0,0,2097,2098,3,1340,670,0,2098,2099, - 3,938,469,0,2099,2183,1,0,0,0,2100,2101,5,138,0,0,2101,2104,5,226, - 0,0,2102,2103,5,220,0,0,2103,2105,5,389,0,0,2104,2102,1,0,0,0,2104, - 2105,1,0,0,0,2105,2106,1,0,0,0,2106,2109,3,1336,668,0,2107,2110, - 3,98,49,0,2108,2110,3,102,51,0,2109,2107,1,0,0,0,2109,2108,1,0,0, - 0,2110,2183,1,0,0,0,2111,2112,5,138,0,0,2112,2113,5,226,0,0,2113, - 2114,5,30,0,0,2114,2115,5,68,0,0,2115,2116,5,344,0,0,2116,2120,3, - 1340,670,0,2117,2118,5,274,0,0,2118,2119,5,147,0,0,2119,2121,3,1370, - 685,0,2120,2117,1,0,0,0,2120,2121,1,0,0,0,2121,2122,1,0,0,0,2122, - 2123,5,326,0,0,2123,2124,5,344,0,0,2124,2125,3,1340,670,0,2125,2126, - 3,938,469,0,2126,2183,1,0,0,0,2127,2128,5,138,0,0,2128,2131,5,321, - 0,0,2129,2130,5,220,0,0,2130,2132,5,389,0,0,2131,2129,1,0,0,0,2131, - 2132,1,0,0,0,2132,2133,1,0,0,0,2133,2134,3,1336,668,0,2134,2135, - 3,98,49,0,2135,2183,1,0,0,0,2136,2137,5,138,0,0,2137,2140,5,369, - 0,0,2138,2139,5,220,0,0,2139,2141,5,389,0,0,2140,2138,1,0,0,0,2140, - 2141,1,0,0,0,2141,2142,1,0,0,0,2142,2143,3,1336,668,0,2143,2144, - 3,98,49,0,2144,2183,1,0,0,0,2145,2146,5,138,0,0,2146,2147,5,251, - 0,0,2147,2150,5,369,0,0,2148,2149,5,220,0,0,2149,2151,5,389,0,0, - 2150,2148,1,0,0,0,2150,2151,1,0,0,0,2151,2152,1,0,0,0,2152,2153, - 3,1336,668,0,2153,2154,3,98,49,0,2154,2183,1,0,0,0,2155,2156,5,138, - 0,0,2156,2157,5,251,0,0,2157,2158,5,369,0,0,2158,2159,5,30,0,0,2159, - 2160,5,68,0,0,2160,2161,5,344,0,0,2161,2165,3,1340,670,0,2162,2163, - 5,274,0,0,2163,2164,5,147,0,0,2164,2166,3,1370,685,0,2165,2162,1, - 0,0,0,2165,2166,1,0,0,0,2166,2167,1,0,0,0,2167,2168,5,326,0,0,2168, - 2169,5,344,0,0,2169,2170,3,1340,670,0,2170,2171,3,938,469,0,2171, - 2183,1,0,0,0,2172,2173,5,138,0,0,2173,2174,5,63,0,0,2174,2177,5, - 92,0,0,2175,2176,5,220,0,0,2176,2178,5,389,0,0,2177,2175,1,0,0,0, - 2177,2178,1,0,0,0,2178,2179,1,0,0,0,2179,2180,3,1074,537,0,2180, - 2181,3,98,49,0,2181,2183,1,0,0,0,2182,2073,1,0,0,0,2182,2084,1,0, - 0,0,2182,2100,1,0,0,0,2182,2111,1,0,0,0,2182,2127,1,0,0,0,2182,2136, - 1,0,0,0,2182,2145,1,0,0,0,2182,2155,1,0,0,0,2182,2172,1,0,0,0,2183, - 97,1,0,0,0,2184,2189,3,104,52,0,2185,2186,5,6,0,0,2186,2188,3,104, - 52,0,2187,2185,1,0,0,0,2188,2191,1,0,0,0,2189,2187,1,0,0,0,2189, - 2190,1,0,0,0,2190,99,1,0,0,0,2191,2189,1,0,0,0,2192,2193,5,435,0, - 0,2193,2194,5,278,0,0,2194,2195,3,1336,668,0,2195,2196,3,128,64, - 0,2196,2201,1,0,0,0,2197,2198,5,436,0,0,2198,2199,5,278,0,0,2199, - 2201,3,1336,668,0,2200,2192,1,0,0,0,2200,2197,1,0,0,0,2201,101,1, - 0,0,0,2202,2203,5,435,0,0,2203,2204,5,278,0,0,2204,2205,3,1336,668, - 0,2205,103,1,0,0,0,2206,2207,5,133,0,0,2207,2459,3,188,94,0,2208, - 2209,5,133,0,0,2209,2210,5,220,0,0,2210,2211,5,77,0,0,2211,2212, - 5,389,0,0,2212,2459,3,188,94,0,2213,2214,5,133,0,0,2214,2215,5,44, - 0,0,2215,2459,3,188,94,0,2216,2217,5,133,0,0,2217,2218,5,44,0,0, - 2218,2219,5,220,0,0,2219,2220,5,77,0,0,2220,2221,5,389,0,0,2221, - 2459,3,188,94,0,2222,2223,5,138,0,0,2223,2224,3,724,362,0,2224,2225, - 3,1372,686,0,2225,2226,3,106,53,0,2226,2459,1,0,0,0,2227,2228,5, - 138,0,0,2228,2229,3,724,362,0,2229,2230,3,1372,686,0,2230,2231,5, - 191,0,0,2231,2232,5,77,0,0,2232,2233,5,78,0,0,2233,2459,1,0,0,0, - 2234,2235,5,138,0,0,2235,2236,3,724,362,0,2236,2237,3,1372,686,0, - 2237,2238,5,326,0,0,2238,2239,5,77,0,0,2239,2240,5,78,0,0,2240,2459, - 1,0,0,0,2241,2242,5,138,0,0,2242,2243,3,724,362,0,2243,2244,3,1372, - 686,0,2244,2245,5,191,0,0,2245,2246,5,437,0,0,2246,2459,1,0,0,0, - 2247,2248,5,138,0,0,2248,2249,3,724,362,0,2249,2250,3,1372,686,0, - 2250,2251,5,191,0,0,2251,2252,5,437,0,0,2252,2253,5,220,0,0,2253, - 2254,5,389,0,0,2254,2459,1,0,0,0,2255,2256,5,138,0,0,2256,2257,3, - 724,362,0,2257,2258,3,1372,686,0,2258,2259,5,326,0,0,2259,2260,5, - 335,0,0,2260,2261,3,1364,682,0,2261,2459,1,0,0,0,2262,2263,5,138, - 0,0,2263,2264,3,724,362,0,2264,2265,3,1356,678,0,2265,2266,5,326, - 0,0,2266,2267,5,335,0,0,2267,2268,3,1364,682,0,2268,2459,1,0,0,0, - 2269,2270,5,138,0,0,2270,2271,3,724,362,0,2271,2272,3,1372,686,0, - 2272,2273,5,326,0,0,2273,2274,3,116,58,0,2274,2459,1,0,0,0,2275, - 2276,5,138,0,0,2276,2277,3,724,362,0,2277,2278,3,1372,686,0,2278, - 2279,5,306,0,0,2279,2280,3,116,58,0,2280,2459,1,0,0,0,2281,2282, - 5,138,0,0,2282,2283,3,724,362,0,2283,2284,3,1372,686,0,2284,2285, - 5,326,0,0,2285,2286,5,338,0,0,2286,2287,3,1372,686,0,2287,2459,1, - 0,0,0,2288,2289,5,138,0,0,2289,2290,3,724,362,0,2290,2291,3,1372, - 686,0,2291,2292,5,133,0,0,2292,2293,5,438,0,0,2293,2294,3,198,99, - 0,2294,2295,5,36,0,0,2295,2296,5,219,0,0,2296,2297,3,284,142,0,2297, - 2459,1,0,0,0,2298,2299,5,138,0,0,2299,2300,3,724,362,0,2300,2301, - 3,1372,686,0,2301,2302,3,124,62,0,2302,2459,1,0,0,0,2303,2304,5, - 138,0,0,2304,2305,3,724,362,0,2305,2306,3,1372,686,0,2306,2307,5, - 191,0,0,2307,2308,5,219,0,0,2308,2459,1,0,0,0,2309,2310,5,138,0, - 0,2310,2311,3,724,362,0,2311,2312,3,1372,686,0,2312,2313,5,191,0, - 0,2313,2314,5,219,0,0,2314,2315,5,220,0,0,2315,2316,5,389,0,0,2316, - 2459,1,0,0,0,2317,2318,5,191,0,0,2318,2319,3,724,362,0,2319,2320, - 5,220,0,0,2320,2321,5,389,0,0,2321,2322,3,1372,686,0,2322,2323,3, - 108,54,0,2323,2459,1,0,0,0,2324,2325,5,191,0,0,2325,2326,3,724,362, - 0,2326,2327,3,1372,686,0,2327,2328,3,108,54,0,2328,2459,1,0,0,0, - 2329,2330,5,138,0,0,2330,2331,3,724,362,0,2331,2332,3,1372,686,0, - 2332,2333,3,726,363,0,2333,2334,5,353,0,0,2334,2335,3,1118,559,0, - 2335,2336,3,110,55,0,2336,2337,3,112,56,0,2337,2459,1,0,0,0,2338, - 2339,5,138,0,0,2339,2340,3,724,362,0,2340,2341,3,1372,686,0,2341, - 2342,3,344,172,0,2342,2459,1,0,0,0,2343,2344,5,133,0,0,2344,2459, - 3,208,104,0,2345,2346,5,138,0,0,2346,2347,5,45,0,0,2347,2348,3,1340, - 670,0,2348,2349,3,440,220,0,2349,2459,1,0,0,0,2350,2351,5,365,0, - 0,2351,2352,5,45,0,0,2352,2459,3,1340,670,0,2353,2354,5,191,0,0, - 2354,2355,5,45,0,0,2355,2356,5,220,0,0,2356,2357,5,389,0,0,2357, - 2358,3,1340,670,0,2358,2359,3,108,54,0,2359,2459,1,0,0,0,2360,2361, - 5,191,0,0,2361,2362,5,45,0,0,2362,2363,3,1340,670,0,2363,2364,3, - 108,54,0,2364,2459,1,0,0,0,2365,2366,5,326,0,0,2366,2367,5,372,0, - 0,2367,2459,5,270,0,0,2368,2369,5,158,0,0,2369,2370,5,80,0,0,2370, - 2459,3,1340,670,0,2371,2372,5,326,0,0,2372,2373,5,372,0,0,2373,2459, - 5,158,0,0,2374,2375,5,326,0,0,2375,2459,5,439,0,0,2376,2377,5,326, - 0,0,2377,2459,5,360,0,0,2378,2379,5,193,0,0,2379,2380,5,350,0,0, - 2380,2459,3,1340,670,0,2381,2382,5,193,0,0,2382,2383,5,139,0,0,2383, - 2384,5,350,0,0,2384,2459,3,1340,670,0,2385,2386,5,193,0,0,2386,2387, - 5,305,0,0,2387,2388,5,350,0,0,2388,2459,3,1340,670,0,2389,2390,5, - 193,0,0,2390,2391,5,350,0,0,2391,2459,5,30,0,0,2392,2393,5,193,0, - 0,2393,2394,5,350,0,0,2394,2459,5,99,0,0,2395,2396,5,186,0,0,2396, - 2397,5,350,0,0,2397,2459,3,1340,670,0,2398,2399,5,186,0,0,2399,2400, - 5,350,0,0,2400,2459,5,30,0,0,2401,2402,5,186,0,0,2402,2403,5,350, - 0,0,2403,2459,5,99,0,0,2404,2405,5,193,0,0,2405,2406,5,314,0,0,2406, - 2459,3,1340,670,0,2407,2408,5,193,0,0,2408,2409,5,139,0,0,2409,2410, - 5,314,0,0,2410,2459,3,1340,670,0,2411,2412,5,193,0,0,2412,2413,5, - 305,0,0,2413,2414,5,314,0,0,2414,2459,3,1340,670,0,2415,2416,5,186, - 0,0,2416,2417,5,314,0,0,2417,2459,3,1340,670,0,2418,2419,5,228,0, - 0,2419,2459,3,1336,668,0,2420,2421,5,262,0,0,2421,2422,5,228,0,0, - 2422,2459,3,1336,668,0,2423,2424,5,268,0,0,2424,2459,3,524,262,0, - 2425,2426,5,77,0,0,2426,2459,5,268,0,0,2427,2428,5,275,0,0,2428, - 2429,5,94,0,0,2429,2459,3,1368,684,0,2430,2431,5,326,0,0,2431,2432, - 5,344,0,0,2432,2459,3,1340,670,0,2433,2434,5,326,0,0,2434,2459,3, - 116,58,0,2435,2436,5,306,0,0,2436,2459,3,116,58,0,2437,2438,5,305, - 0,0,2438,2439,5,219,0,0,2439,2459,3,114,57,0,2440,2441,5,193,0,0, - 2441,2442,5,407,0,0,2442,2443,5,242,0,0,2443,2459,5,320,0,0,2444, - 2445,5,186,0,0,2445,2446,5,407,0,0,2446,2447,5,242,0,0,2447,2459, - 5,320,0,0,2448,2449,5,209,0,0,2449,2450,5,407,0,0,2450,2451,5,242, - 0,0,2451,2459,5,320,0,0,2452,2453,5,262,0,0,2453,2454,5,209,0,0, - 2454,2455,5,407,0,0,2455,2456,5,242,0,0,2456,2459,5,320,0,0,2457, - 2459,3,344,172,0,2458,2206,1,0,0,0,2458,2208,1,0,0,0,2458,2213,1, - 0,0,0,2458,2216,1,0,0,0,2458,2222,1,0,0,0,2458,2227,1,0,0,0,2458, - 2234,1,0,0,0,2458,2241,1,0,0,0,2458,2247,1,0,0,0,2458,2255,1,0,0, - 0,2458,2262,1,0,0,0,2458,2269,1,0,0,0,2458,2275,1,0,0,0,2458,2281, - 1,0,0,0,2458,2288,1,0,0,0,2458,2298,1,0,0,0,2458,2303,1,0,0,0,2458, - 2309,1,0,0,0,2458,2317,1,0,0,0,2458,2324,1,0,0,0,2458,2329,1,0,0, - 0,2458,2338,1,0,0,0,2458,2343,1,0,0,0,2458,2345,1,0,0,0,2458,2350, - 1,0,0,0,2458,2353,1,0,0,0,2458,2360,1,0,0,0,2458,2365,1,0,0,0,2458, - 2368,1,0,0,0,2458,2371,1,0,0,0,2458,2374,1,0,0,0,2458,2376,1,0,0, - 0,2458,2378,1,0,0,0,2458,2381,1,0,0,0,2458,2385,1,0,0,0,2458,2389, - 1,0,0,0,2458,2392,1,0,0,0,2458,2395,1,0,0,0,2458,2398,1,0,0,0,2458, - 2401,1,0,0,0,2458,2404,1,0,0,0,2458,2407,1,0,0,0,2458,2411,1,0,0, - 0,2458,2415,1,0,0,0,2458,2418,1,0,0,0,2458,2420,1,0,0,0,2458,2423, - 1,0,0,0,2458,2425,1,0,0,0,2458,2427,1,0,0,0,2458,2430,1,0,0,0,2458, - 2433,1,0,0,0,2458,2435,1,0,0,0,2458,2437,1,0,0,0,2458,2440,1,0,0, - 0,2458,2444,1,0,0,0,2458,2448,1,0,0,0,2458,2452,1,0,0,0,2458,2457, - 1,0,0,0,2459,105,1,0,0,0,2460,2461,5,326,0,0,2461,2462,5,53,0,0, - 2462,2466,3,1162,581,0,2463,2464,5,191,0,0,2464,2466,5,53,0,0,2465, - 2460,1,0,0,0,2465,2463,1,0,0,0,2466,107,1,0,0,0,2467,2471,5,150, - 0,0,2468,2471,5,308,0,0,2469,2471,1,0,0,0,2470,2467,1,0,0,0,2470, - 2468,1,0,0,0,2470,2469,1,0,0,0,2471,109,1,0,0,0,2472,2473,5,43,0, - 0,2473,2476,3,524,262,0,2474,2476,1,0,0,0,2475,2472,1,0,0,0,2475, - 2474,1,0,0,0,2476,111,1,0,0,0,2477,2478,5,100,0,0,2478,2481,3,1162, - 581,0,2479,2481,1,0,0,0,2480,2477,1,0,0,0,2480,2479,1,0,0,0,2481, - 113,1,0,0,0,2482,2489,5,263,0,0,2483,2489,5,113,0,0,2484,2489,5, - 53,0,0,2485,2486,5,100,0,0,2486,2487,5,226,0,0,2487,2489,3,1340, - 670,0,2488,2482,1,0,0,0,2488,2483,1,0,0,0,2488,2484,1,0,0,0,2488, - 2485,1,0,0,0,2489,115,1,0,0,0,2490,2491,5,2,0,0,2491,2492,3,120, - 60,0,2492,2493,5,3,0,0,2493,117,1,0,0,0,2494,2495,5,105,0,0,2495, - 2498,3,116,58,0,2496,2498,1,0,0,0,2497,2494,1,0,0,0,2497,2496,1, - 0,0,0,2498,119,1,0,0,0,2499,2504,3,122,61,0,2500,2501,5,6,0,0,2501, - 2503,3,122,61,0,2502,2500,1,0,0,0,2503,2506,1,0,0,0,2504,2502,1, - 0,0,0,2504,2505,1,0,0,0,2505,121,1,0,0,0,2506,2504,1,0,0,0,2507, - 2516,3,1380,690,0,2508,2509,5,10,0,0,2509,2517,3,466,233,0,2510, - 2511,5,11,0,0,2511,2514,3,1380,690,0,2512,2513,5,10,0,0,2513,2515, - 3,466,233,0,2514,2512,1,0,0,0,2514,2515,1,0,0,0,2515,2517,1,0,0, - 0,2516,2508,1,0,0,0,2516,2510,1,0,0,0,2516,2517,1,0,0,0,2517,123, - 1,0,0,0,2518,2520,3,126,63,0,2519,2518,1,0,0,0,2520,2521,1,0,0,0, - 2521,2519,1,0,0,0,2521,2522,1,0,0,0,2522,125,1,0,0,0,2523,2527,5, - 307,0,0,2524,2525,3,16,8,0,2525,2526,3,292,146,0,2526,2528,1,0,0, - 0,2527,2524,1,0,0,0,2527,2528,1,0,0,0,2528,2536,1,0,0,0,2529,2533, - 5,326,0,0,2530,2534,3,288,144,0,2531,2532,5,438,0,0,2532,2534,3, - 198,99,0,2533,2530,1,0,0,0,2533,2531,1,0,0,0,2534,2536,1,0,0,0,2535, - 2523,1,0,0,0,2535,2529,1,0,0,0,2536,127,1,0,0,0,2537,2538,5,62,0, - 0,2538,2539,5,415,0,0,2539,2540,5,105,0,0,2540,2541,5,2,0,0,2541, - 2542,3,132,66,0,2542,2543,5,3,0,0,2543,2564,1,0,0,0,2544,2545,5, - 62,0,0,2545,2546,5,415,0,0,2546,2547,5,68,0,0,2547,2548,5,2,0,0, - 2548,2549,3,1280,640,0,2549,2550,5,3,0,0,2550,2564,1,0,0,0,2551, - 2552,5,62,0,0,2552,2553,5,415,0,0,2553,2554,5,64,0,0,2554,2555,5, - 2,0,0,2555,2556,3,1280,640,0,2556,2557,5,3,0,0,2557,2558,5,94,0, - 0,2558,2559,5,2,0,0,2559,2560,3,1280,640,0,2560,2561,5,3,0,0,2561, - 2564,1,0,0,0,2562,2564,5,53,0,0,2563,2537,1,0,0,0,2563,2544,1,0, - 0,0,2563,2551,1,0,0,0,2563,2562,1,0,0,0,2564,129,1,0,0,0,2565,2566, - 3,1378,689,0,2566,2567,3,1356,678,0,2567,131,1,0,0,0,2568,2573,3, - 130,65,0,2569,2570,5,6,0,0,2570,2572,3,130,65,0,2571,2569,1,0,0, - 0,2572,2575,1,0,0,0,2573,2571,1,0,0,0,2573,2574,1,0,0,0,2574,133, - 1,0,0,0,2575,2573,1,0,0,0,2576,2577,5,138,0,0,2577,2578,5,353,0, - 0,2578,2579,3,524,262,0,2579,2580,3,136,68,0,2580,135,1,0,0,0,2581, - 2586,3,138,69,0,2582,2583,5,6,0,0,2583,2585,3,138,69,0,2584,2582, - 1,0,0,0,2585,2588,1,0,0,0,2586,2584,1,0,0,0,2586,2587,1,0,0,0,2587, - 137,1,0,0,0,2588,2586,1,0,0,0,2589,2590,5,133,0,0,2590,2591,5,143, - 0,0,2591,2592,3,1102,551,0,2592,2593,3,108,54,0,2593,2613,1,0,0, - 0,2594,2595,5,191,0,0,2595,2598,5,143,0,0,2596,2597,5,220,0,0,2597, - 2599,5,389,0,0,2598,2596,1,0,0,0,2598,2599,1,0,0,0,2599,2600,1,0, - 0,0,2600,2601,3,1372,686,0,2601,2602,3,108,54,0,2602,2613,1,0,0, - 0,2603,2604,5,138,0,0,2604,2605,5,143,0,0,2605,2606,3,1372,686,0, - 2606,2607,3,726,363,0,2607,2608,5,353,0,0,2608,2609,3,1118,559,0, - 2609,2610,3,110,55,0,2610,2611,3,108,54,0,2611,2613,1,0,0,0,2612, - 2589,1,0,0,0,2612,2594,1,0,0,0,2612,2603,1,0,0,0,2613,139,1,0,0, - 0,2614,2617,5,157,0,0,2615,2618,3,954,477,0,2616,2618,5,30,0,0,2617, - 2615,1,0,0,0,2617,2616,1,0,0,0,2618,141,1,0,0,0,2619,2620,5,169, - 0,0,2620,2621,3,156,78,0,2621,2622,3,1336,668,0,2622,2623,3,214, - 107,0,2623,2624,3,144,72,0,2624,2625,3,146,73,0,2625,2626,3,148, - 74,0,2626,2627,3,158,79,0,2627,2628,3,16,8,0,2628,2629,3,150,75, - 0,2629,2630,3,1094,547,0,2630,2642,1,0,0,0,2631,2632,5,169,0,0,2632, - 2633,5,2,0,0,2633,2634,3,894,447,0,2634,2635,5,3,0,0,2635,2636,5, - 94,0,0,2636,2637,3,146,73,0,2637,2638,3,148,74,0,2638,2639,3,16, - 8,0,2639,2640,3,150,75,0,2640,2642,1,0,0,0,2641,2619,1,0,0,0,2641, - 2631,1,0,0,0,2642,143,1,0,0,0,2643,2644,7,10,0,0,2644,145,1,0,0, - 0,2645,2648,5,290,0,0,2646,2648,1,0,0,0,2647,2645,1,0,0,0,2647,2646, - 1,0,0,0,2648,147,1,0,0,0,2649,2653,3,1358,679,0,2650,2653,5,336, - 0,0,2651,2653,5,337,0,0,2652,2649,1,0,0,0,2652,2650,1,0,0,0,2652, - 2651,1,0,0,0,2653,149,1,0,0,0,2654,2660,3,152,76,0,2655,2656,5,2, - 0,0,2656,2657,3,162,81,0,2657,2658,5,3,0,0,2658,2660,1,0,0,0,2659, - 2654,1,0,0,0,2659,2655,1,0,0,0,2660,151,1,0,0,0,2661,2663,3,154, - 77,0,2662,2661,1,0,0,0,2663,2666,1,0,0,0,2664,2662,1,0,0,0,2664, - 2665,1,0,0,0,2665,153,1,0,0,0,2666,2664,1,0,0,0,2667,2703,5,107, - 0,0,2668,2703,5,112,0,0,2669,2670,5,183,0,0,2670,2671,3,834,417, - 0,2671,2672,3,1358,679,0,2672,2703,1,0,0,0,2673,2674,5,78,0,0,2674, - 2675,3,834,417,0,2675,2676,3,1358,679,0,2676,2703,1,0,0,0,2677,2703, - 5,171,0,0,2678,2703,5,216,0,0,2679,2680,5,291,0,0,2680,2681,3,834, - 417,0,2681,2682,3,1358,679,0,2682,2703,1,0,0,0,2683,2684,5,197,0, - 0,2684,2685,3,834,417,0,2685,2686,3,1358,679,0,2686,2703,1,0,0,0, - 2687,2688,5,209,0,0,2688,2689,5,291,0,0,2689,2703,3,216,108,0,2690, - 2691,5,209,0,0,2691,2692,5,291,0,0,2692,2703,5,9,0,0,2693,2694,5, - 209,0,0,2694,2695,5,77,0,0,2695,2696,5,78,0,0,2696,2703,3,216,108, - 0,2697,2698,5,209,0,0,2698,2699,5,78,0,0,2699,2703,3,216,108,0,2700, - 2701,5,194,0,0,2701,2703,3,1358,679,0,2702,2667,1,0,0,0,2702,2668, - 1,0,0,0,2702,2669,1,0,0,0,2702,2673,1,0,0,0,2702,2677,1,0,0,0,2702, - 2678,1,0,0,0,2702,2679,1,0,0,0,2702,2683,1,0,0,0,2702,2687,1,0,0, - 0,2702,2690,1,0,0,0,2702,2693,1,0,0,0,2702,2697,1,0,0,0,2702,2700, - 1,0,0,0,2703,155,1,0,0,0,2704,2707,5,107,0,0,2705,2707,1,0,0,0,2706, - 2704,1,0,0,0,2706,2705,1,0,0,0,2707,157,1,0,0,0,2708,2709,3,160, - 80,0,2709,2710,5,184,0,0,2710,2711,3,1358,679,0,2711,2714,1,0,0, - 0,2712,2714,1,0,0,0,2713,2708,1,0,0,0,2713,2712,1,0,0,0,2714,159, - 1,0,0,0,2715,2718,5,100,0,0,2716,2718,1,0,0,0,2717,2715,1,0,0,0, - 2717,2716,1,0,0,0,2718,161,1,0,0,0,2719,2724,3,164,82,0,2720,2721, - 5,6,0,0,2721,2723,3,164,82,0,2722,2720,1,0,0,0,2723,2726,1,0,0,0, - 2724,2722,1,0,0,0,2724,2725,1,0,0,0,2725,163,1,0,0,0,2726,2724,1, - 0,0,0,2727,2728,3,1380,690,0,2728,2729,3,166,83,0,2729,165,1,0,0, - 0,2730,2739,3,66,33,0,2731,2739,3,292,146,0,2732,2739,5,9,0,0,2733, - 2734,5,2,0,0,2734,2735,3,168,84,0,2735,2736,5,3,0,0,2736,2739,1, - 0,0,0,2737,2739,1,0,0,0,2738,2730,1,0,0,0,2738,2731,1,0,0,0,2738, - 2732,1,0,0,0,2738,2733,1,0,0,0,2738,2737,1,0,0,0,2739,167,1,0,0, - 0,2740,2745,3,170,85,0,2741,2742,5,6,0,0,2742,2744,3,170,85,0,2743, - 2741,1,0,0,0,2744,2747,1,0,0,0,2745,2743,1,0,0,0,2745,2746,1,0,0, - 0,2746,169,1,0,0,0,2747,2745,1,0,0,0,2748,2749,3,66,33,0,2749,171, - 1,0,0,0,2750,2751,5,46,0,0,2751,2752,3,174,87,0,2752,2756,5,92,0, - 0,2753,2754,5,220,0,0,2754,2755,5,77,0,0,2755,2757,5,389,0,0,2756, - 2753,1,0,0,0,2756,2757,1,0,0,0,2757,2758,1,0,0,0,2758,2789,3,1336, - 668,0,2759,2760,5,2,0,0,2760,2761,3,176,88,0,2761,2762,5,3,0,0,2762, - 2763,3,238,119,0,2763,2764,3,240,120,0,2764,2765,3,248,124,0,2765, - 2766,3,250,125,0,2766,2767,3,252,126,0,2767,2768,3,254,127,0,2768, - 2790,1,0,0,0,2769,2770,5,268,0,0,2770,2771,3,524,262,0,2771,2772, - 3,178,89,0,2772,2773,3,240,120,0,2773,2774,3,248,124,0,2774,2775, - 3,250,125,0,2775,2776,3,252,126,0,2776,2777,3,254,127,0,2777,2790, - 1,0,0,0,2778,2779,5,278,0,0,2779,2780,5,268,0,0,2780,2781,3,1336, - 668,0,2781,2782,3,178,89,0,2782,2783,3,128,64,0,2783,2784,3,240, - 120,0,2784,2785,3,248,124,0,2785,2786,3,250,125,0,2786,2787,3,252, - 126,0,2787,2788,3,254,127,0,2788,2790,1,0,0,0,2789,2759,1,0,0,0, - 2789,2769,1,0,0,0,2789,2778,1,0,0,0,2790,173,1,0,0,0,2791,2800,5, - 347,0,0,2792,2800,5,345,0,0,2793,2794,5,245,0,0,2794,2800,7,11,0, - 0,2795,2796,5,213,0,0,2796,2800,7,11,0,0,2797,2800,5,360,0,0,2798, - 2800,1,0,0,0,2799,2791,1,0,0,0,2799,2792,1,0,0,0,2799,2793,1,0,0, - 0,2799,2795,1,0,0,0,2799,2797,1,0,0,0,2799,2798,1,0,0,0,2800,175, - 1,0,0,0,2801,2804,3,180,90,0,2802,2804,1,0,0,0,2803,2801,1,0,0,0, - 2803,2802,1,0,0,0,2804,177,1,0,0,0,2805,2806,5,2,0,0,2806,2807,3, - 182,91,0,2807,2808,5,3,0,0,2808,2811,1,0,0,0,2809,2811,1,0,0,0,2810, - 2805,1,0,0,0,2810,2809,1,0,0,0,2811,179,1,0,0,0,2812,2817,3,184, - 92,0,2813,2814,5,6,0,0,2814,2816,3,184,92,0,2815,2813,1,0,0,0,2816, - 2819,1,0,0,0,2817,2815,1,0,0,0,2817,2818,1,0,0,0,2818,181,1,0,0, - 0,2819,2817,1,0,0,0,2820,2825,3,186,93,0,2821,2822,5,6,0,0,2822, - 2824,3,186,93,0,2823,2821,1,0,0,0,2824,2827,1,0,0,0,2825,2823,1, - 0,0,0,2825,2826,1,0,0,0,2826,183,1,0,0,0,2827,2825,1,0,0,0,2828, - 2832,3,208,104,0,2829,2832,3,202,101,0,2830,2832,3,188,94,0,2831, - 2828,1,0,0,0,2831,2829,1,0,0,0,2831,2830,1,0,0,0,2832,185,1,0,0, - 0,2833,2836,3,190,95,0,2834,2836,3,208,104,0,2835,2833,1,0,0,0,2835, - 2834,1,0,0,0,2836,187,1,0,0,0,2837,2838,3,1372,686,0,2838,2839,3, - 1118,559,0,2839,2840,3,340,170,0,2840,2841,3,192,96,0,2841,189,1, - 0,0,0,2842,2845,3,1372,686,0,2843,2844,5,105,0,0,2844,2846,5,273, - 0,0,2845,2843,1,0,0,0,2845,2846,1,0,0,0,2846,2847,1,0,0,0,2847,2848, - 3,192,96,0,2848,191,1,0,0,0,2849,2851,3,194,97,0,2850,2849,1,0,0, - 0,2851,2854,1,0,0,0,2852,2850,1,0,0,0,2852,2853,1,0,0,0,2853,193, - 1,0,0,0,2854,2852,1,0,0,0,2855,2856,5,45,0,0,2856,2857,3,1340,670, - 0,2857,2858,3,196,98,0,2858,2864,1,0,0,0,2859,2864,3,196,98,0,2860, - 2864,3,200,100,0,2861,2862,5,43,0,0,2862,2864,3,524,262,0,2863,2855, - 1,0,0,0,2863,2859,1,0,0,0,2863,2860,1,0,0,0,2863,2861,1,0,0,0,2864, - 195,1,0,0,0,2865,2866,5,77,0,0,2866,2904,5,78,0,0,2867,2904,5,78, - 0,0,2868,2869,5,98,0,0,2869,2870,3,664,332,0,2870,2871,3,256,128, - 0,2871,2904,1,0,0,0,2872,2873,5,85,0,0,2873,2874,5,236,0,0,2874, - 2875,3,664,332,0,2875,2876,3,256,128,0,2876,2904,1,0,0,0,2877,2878, - 5,42,0,0,2878,2879,5,2,0,0,2879,2880,3,1162,581,0,2880,2881,5,3, - 0,0,2881,2882,3,212,106,0,2882,2904,1,0,0,0,2883,2884,5,53,0,0,2884, - 2904,3,1204,602,0,2885,2886,5,438,0,0,2886,2887,3,198,99,0,2887, - 2895,5,36,0,0,2888,2889,5,219,0,0,2889,2896,3,284,142,0,2890,2891, - 5,2,0,0,2891,2892,3,1162,581,0,2892,2893,5,3,0,0,2893,2894,5,440, - 0,0,2894,2896,1,0,0,0,2895,2888,1,0,0,0,2895,2890,1,0,0,0,2896,2904, - 1,0,0,0,2897,2898,5,86,0,0,2898,2899,3,1336,668,0,2899,2900,3,214, - 107,0,2900,2901,3,222,111,0,2901,2902,3,230,115,0,2902,2904,1,0, - 0,0,2903,2865,1,0,0,0,2903,2867,1,0,0,0,2903,2868,1,0,0,0,2903,2872, - 1,0,0,0,2903,2877,1,0,0,0,2903,2883,1,0,0,0,2903,2885,1,0,0,0,2903, - 2897,1,0,0,0,2904,197,1,0,0,0,2905,2909,5,139,0,0,2906,2907,5,147, - 0,0,2907,2909,5,53,0,0,2908,2905,1,0,0,0,2908,2906,1,0,0,0,2909, - 199,1,0,0,0,2910,2916,5,54,0,0,2911,2912,5,77,0,0,2912,2916,5,54, - 0,0,2913,2914,5,69,0,0,2914,2916,7,8,0,0,2915,2910,1,0,0,0,2915, - 2911,1,0,0,0,2915,2913,1,0,0,0,2916,201,1,0,0,0,2917,2918,5,120, - 0,0,2918,2919,3,1336,668,0,2919,2920,3,204,102,0,2920,203,1,0,0, - 0,2921,2922,7,12,0,0,2922,2924,3,206,103,0,2923,2921,1,0,0,0,2924, - 2927,1,0,0,0,2925,2923,1,0,0,0,2925,2926,1,0,0,0,2926,205,1,0,0, - 0,2927,2925,1,0,0,0,2928,2929,7,13,0,0,2929,207,1,0,0,0,2930,2931, - 5,45,0,0,2931,2932,3,1340,670,0,2932,2933,3,210,105,0,2933,2936, - 1,0,0,0,2934,2936,3,210,105,0,2935,2930,1,0,0,0,2935,2934,1,0,0, - 0,2936,209,1,0,0,0,2937,2938,5,42,0,0,2938,2939,5,2,0,0,2939,2940, - 3,1162,581,0,2940,2941,5,3,0,0,2941,2942,3,440,220,0,2942,2996,1, - 0,0,0,2943,2955,5,98,0,0,2944,2945,5,2,0,0,2945,2946,3,216,108,0, - 2946,2947,5,3,0,0,2947,2948,3,220,110,0,2948,2949,3,664,332,0,2949, - 2950,3,256,128,0,2950,2951,3,440,220,0,2951,2956,1,0,0,0,2952,2953, - 3,258,129,0,2953,2954,3,440,220,0,2954,2956,1,0,0,0,2955,2944,1, - 0,0,0,2955,2952,1,0,0,0,2956,2996,1,0,0,0,2957,2958,5,85,0,0,2958, - 2970,5,236,0,0,2959,2960,5,2,0,0,2960,2961,3,216,108,0,2961,2962, - 5,3,0,0,2962,2963,3,220,110,0,2963,2964,3,664,332,0,2964,2965,3, - 256,128,0,2965,2966,3,440,220,0,2966,2971,1,0,0,0,2967,2968,3,258, - 129,0,2968,2969,3,440,220,0,2969,2971,1,0,0,0,2970,2959,1,0,0,0, - 2970,2967,1,0,0,0,2971,2996,1,0,0,0,2972,2973,5,199,0,0,2973,2974, - 3,596,298,0,2974,2975,5,2,0,0,2975,2976,3,224,112,0,2976,2977,5, - 3,0,0,2977,2978,3,220,110,0,2978,2979,3,664,332,0,2979,2980,3,256, - 128,0,2980,2981,3,228,114,0,2981,2982,3,440,220,0,2982,2996,1,0, - 0,0,2983,2984,5,63,0,0,2984,2985,5,236,0,0,2985,2986,5,2,0,0,2986, - 2987,3,216,108,0,2987,2988,5,3,0,0,2988,2989,5,86,0,0,2989,2990, - 3,1336,668,0,2990,2991,3,214,107,0,2991,2992,3,222,111,0,2992,2993, - 3,230,115,0,2993,2994,3,440,220,0,2994,2996,1,0,0,0,2995,2937,1, - 0,0,0,2995,2943,1,0,0,0,2995,2957,1,0,0,0,2995,2972,1,0,0,0,2995, - 2983,1,0,0,0,2996,211,1,0,0,0,2997,2998,5,262,0,0,2998,3001,5,228, - 0,0,2999,3001,1,0,0,0,3000,2997,1,0,0,0,3000,2999,1,0,0,0,3001,213, - 1,0,0,0,3002,3003,5,2,0,0,3003,3004,3,216,108,0,3004,3005,5,3,0, - 0,3005,3008,1,0,0,0,3006,3008,1,0,0,0,3007,3002,1,0,0,0,3007,3006, - 1,0,0,0,3008,215,1,0,0,0,3009,3014,3,218,109,0,3010,3011,5,6,0,0, - 3011,3013,3,218,109,0,3012,3010,1,0,0,0,3013,3016,1,0,0,0,3014,3012, - 1,0,0,0,3014,3015,1,0,0,0,3015,217,1,0,0,0,3016,3014,1,0,0,0,3017, - 3018,3,1372,686,0,3018,219,1,0,0,0,3019,3020,5,441,0,0,3020,3021, - 5,2,0,0,3021,3022,3,216,108,0,3022,3023,5,3,0,0,3023,3026,1,0,0, - 0,3024,3026,1,0,0,0,3025,3019,1,0,0,0,3025,3024,1,0,0,0,3026,221, - 1,0,0,0,3027,3028,5,249,0,0,3028,3031,7,14,0,0,3029,3031,1,0,0,0, - 3030,3027,1,0,0,0,3030,3029,1,0,0,0,3031,223,1,0,0,0,3032,3037,3, - 226,113,0,3033,3034,5,6,0,0,3034,3036,3,226,113,0,3035,3033,1,0, - 0,0,3036,3039,1,0,0,0,3037,3035,1,0,0,0,3037,3038,1,0,0,0,3038,225, - 1,0,0,0,3039,3037,1,0,0,0,3040,3041,3,602,301,0,3041,3048,5,105, - 0,0,3042,3049,3,684,342,0,3043,3044,5,271,0,0,3044,3045,5,2,0,0, - 3045,3046,3,684,342,0,3046,3047,5,3,0,0,3047,3049,1,0,0,0,3048,3042, - 1,0,0,0,3048,3043,1,0,0,0,3049,227,1,0,0,0,3050,3051,5,103,0,0,3051, - 3052,5,2,0,0,3052,3053,3,1162,581,0,3053,3054,5,3,0,0,3054,3057, - 1,0,0,0,3055,3057,1,0,0,0,3056,3050,1,0,0,0,3056,3055,1,0,0,0,3057, - 229,1,0,0,0,3058,3068,3,232,116,0,3059,3068,3,234,117,0,3060,3061, - 3,232,116,0,3061,3062,3,234,117,0,3062,3068,1,0,0,0,3063,3064,3, - 234,117,0,3064,3065,3,232,116,0,3065,3068,1,0,0,0,3066,3068,1,0, - 0,0,3067,3058,1,0,0,0,3067,3059,1,0,0,0,3067,3060,1,0,0,0,3067,3063, - 1,0,0,0,3067,3066,1,0,0,0,3068,231,1,0,0,0,3069,3070,5,80,0,0,3070, - 3071,5,362,0,0,3071,3072,3,236,118,0,3072,233,1,0,0,0,3073,3074, - 5,80,0,0,3074,3075,5,182,0,0,3075,3076,3,236,118,0,3076,235,1,0, - 0,0,3077,3078,5,262,0,0,3078,3084,5,132,0,0,3079,3084,5,308,0,0, - 3080,3084,5,150,0,0,3081,3082,5,326,0,0,3082,3084,7,15,0,0,3083, - 3077,1,0,0,0,3083,3079,1,0,0,0,3083,3080,1,0,0,0,3083,3081,1,0,0, - 0,3084,237,1,0,0,0,3085,3086,5,229,0,0,3086,3087,5,2,0,0,3087,3088, - 3,1334,667,0,3088,3089,5,3,0,0,3089,3092,1,0,0,0,3090,3092,1,0,0, - 0,3091,3085,1,0,0,0,3091,3090,1,0,0,0,3092,239,1,0,0,0,3093,3096, - 3,242,121,0,3094,3096,1,0,0,0,3095,3093,1,0,0,0,3095,3094,1,0,0, - 0,3096,241,1,0,0,0,3097,3098,5,278,0,0,3098,3099,5,147,0,0,3099, - 3100,3,1372,686,0,3100,3101,5,2,0,0,3101,3102,3,244,122,0,3102,3103, - 5,3,0,0,3103,243,1,0,0,0,3104,3109,3,246,123,0,3105,3106,5,6,0,0, - 3106,3108,3,246,123,0,3107,3105,1,0,0,0,3108,3111,1,0,0,0,3109,3107, - 1,0,0,0,3109,3110,1,0,0,0,3110,245,1,0,0,0,3111,3109,1,0,0,0,3112, - 3113,3,1372,686,0,3113,3114,3,608,304,0,3114,3115,3,610,305,0,3115, - 3127,1,0,0,0,3116,3117,3,1214,607,0,3117,3118,3,608,304,0,3118,3119, - 3,610,305,0,3119,3127,1,0,0,0,3120,3121,5,2,0,0,3121,3122,3,1162, - 581,0,3122,3123,5,3,0,0,3123,3124,3,608,304,0,3124,3125,3,610,305, - 0,3125,3127,1,0,0,0,3126,3112,1,0,0,0,3126,3116,1,0,0,0,3126,3120, - 1,0,0,0,3127,247,1,0,0,0,3128,3129,5,100,0,0,3129,3132,3,1340,670, - 0,3130,3132,1,0,0,0,3131,3128,1,0,0,0,3131,3130,1,0,0,0,3132,249, - 1,0,0,0,3133,3134,5,105,0,0,3134,3139,3,116,58,0,3135,3136,5,372, - 0,0,3136,3139,5,270,0,0,3137,3139,1,0,0,0,3138,3133,1,0,0,0,3138, - 3135,1,0,0,0,3138,3137,1,0,0,0,3139,251,1,0,0,0,3140,3141,5,80,0, - 0,3141,3147,5,161,0,0,3142,3148,5,191,0,0,3143,3144,5,182,0,0,3144, - 3148,5,313,0,0,3145,3146,5,285,0,0,3146,3148,5,313,0,0,3147,3142, - 1,0,0,0,3147,3143,1,0,0,0,3147,3145,1,0,0,0,3148,3151,1,0,0,0,3149, - 3151,1,0,0,0,3150,3140,1,0,0,0,3150,3149,1,0,0,0,3151,253,1,0,0, - 0,3152,3153,5,344,0,0,3153,3156,3,1340,670,0,3154,3156,1,0,0,0,3155, - 3152,1,0,0,0,3155,3154,1,0,0,0,3156,255,1,0,0,0,3157,3158,5,100, - 0,0,3158,3159,5,226,0,0,3159,3160,5,344,0,0,3160,3163,3,1340,670, - 0,3161,3163,1,0,0,0,3162,3157,1,0,0,0,3162,3161,1,0,0,0,3163,257, - 1,0,0,0,3164,3165,5,100,0,0,3165,3166,5,226,0,0,3166,3167,3,1340, - 670,0,3167,259,1,0,0,0,3168,3169,5,46,0,0,3169,3173,5,335,0,0,3170, - 3171,5,220,0,0,3171,3172,5,77,0,0,3172,3174,5,389,0,0,3173,3170, - 1,0,0,0,3173,3174,1,0,0,0,3174,3175,1,0,0,0,3175,3176,3,524,262, - 0,3176,3177,3,870,435,0,3177,3178,5,80,0,0,3178,3179,3,1280,640, - 0,3179,3180,5,64,0,0,3180,3181,3,1056,528,0,3181,261,1,0,0,0,3182, - 3183,5,138,0,0,3183,3186,5,335,0,0,3184,3185,5,220,0,0,3185,3187, - 5,389,0,0,3186,3184,1,0,0,0,3186,3187,1,0,0,0,3187,3188,1,0,0,0, - 3188,3189,3,524,262,0,3189,3190,5,326,0,0,3190,3191,5,335,0,0,3191, - 3192,3,1364,682,0,3192,263,1,0,0,0,3193,3194,5,46,0,0,3194,3195, - 3,174,87,0,3195,3199,5,92,0,0,3196,3197,5,220,0,0,3197,3198,5,77, - 0,0,3198,3200,5,389,0,0,3199,3196,1,0,0,0,3199,3200,1,0,0,0,3200, - 3201,1,0,0,0,3201,3202,3,266,133,0,3202,3203,5,36,0,0,3203,3204, - 3,960,480,0,3204,3205,3,268,134,0,3205,265,1,0,0,0,3206,3207,3,1336, - 668,0,3207,3208,3,214,107,0,3208,3209,3,248,124,0,3209,3210,3,250, - 125,0,3210,3211,3,252,126,0,3211,3212,3,254,127,0,3212,267,1,0,0, - 0,3213,3217,5,105,0,0,3214,3218,5,174,0,0,3215,3216,5,262,0,0,3216, - 3218,5,174,0,0,3217,3214,1,0,0,0,3217,3215,1,0,0,0,3218,3221,1,0, - 0,0,3219,3221,1,0,0,0,3220,3213,1,0,0,0,3220,3219,1,0,0,0,3221,269, - 1,0,0,0,3222,3223,5,46,0,0,3223,3224,3,274,137,0,3224,3225,5,251, - 0,0,3225,3229,5,369,0,0,3226,3227,5,220,0,0,3227,3228,5,77,0,0,3228, - 3230,5,389,0,0,3229,3226,1,0,0,0,3229,3230,1,0,0,0,3230,3231,1,0, - 0,0,3231,3232,3,272,136,0,3232,3233,5,36,0,0,3233,3234,3,960,480, - 0,3234,3235,3,268,134,0,3235,271,1,0,0,0,3236,3237,3,1336,668,0, - 3237,3238,3,214,107,0,3238,3239,3,248,124,0,3239,3240,3,118,59,0, - 3240,3241,3,254,127,0,3241,273,1,0,0,0,3242,3245,5,360,0,0,3243, - 3245,1,0,0,0,3244,3242,1,0,0,0,3244,3243,1,0,0,0,3245,275,1,0,0, - 0,3246,3247,5,298,0,0,3247,3248,5,251,0,0,3248,3249,5,369,0,0,3249, - 3250,3,592,296,0,3250,3251,3,1336,668,0,3251,3252,3,268,134,0,3252, - 277,1,0,0,0,3253,3254,5,46,0,0,3254,3255,3,174,87,0,3255,3259,5, - 321,0,0,3256,3257,5,220,0,0,3257,3258,5,77,0,0,3258,3260,5,389,0, - 0,3259,3256,1,0,0,0,3259,3260,1,0,0,0,3260,3261,1,0,0,0,3261,3262, - 3,1336,668,0,3262,3263,3,282,141,0,3263,279,1,0,0,0,3264,3265,5, - 138,0,0,3265,3268,5,321,0,0,3266,3267,5,220,0,0,3267,3269,5,389, - 0,0,3268,3266,1,0,0,0,3268,3269,1,0,0,0,3269,3270,1,0,0,0,3270,3271, - 3,1336,668,0,3271,3272,3,286,143,0,3272,281,1,0,0,0,3273,3276,3, - 286,143,0,3274,3276,1,0,0,0,3275,3273,1,0,0,0,3275,3274,1,0,0,0, - 3276,283,1,0,0,0,3277,3278,5,2,0,0,3278,3279,3,286,143,0,3279,3280, - 5,3,0,0,3280,3283,1,0,0,0,3281,3283,1,0,0,0,3282,3277,1,0,0,0,3282, - 3281,1,0,0,0,3283,285,1,0,0,0,3284,3286,3,288,144,0,3285,3284,1, - 0,0,0,3286,3287,1,0,0,0,3287,3285,1,0,0,0,3287,3288,1,0,0,0,3288, - 287,1,0,0,0,3289,3290,5,36,0,0,3290,3320,3,1122,561,0,3291,3292, - 5,148,0,0,3292,3320,3,292,146,0,3293,3320,5,173,0,0,3294,3295,5, - 225,0,0,3295,3296,3,290,145,0,3296,3297,3,292,146,0,3297,3320,1, - 0,0,0,3298,3299,5,252,0,0,3299,3320,3,292,146,0,3300,3301,5,255, - 0,0,3301,3320,3,292,146,0,3302,3303,5,262,0,0,3303,3320,7,16,0,0, - 3304,3305,5,274,0,0,3305,3306,5,147,0,0,3306,3320,3,524,262,0,3307, - 3308,5,321,0,0,3308,3309,5,259,0,0,3309,3320,3,524,262,0,3310,3311, - 5,333,0,0,3311,3312,3,16,8,0,3312,3313,3,292,146,0,3313,3320,1,0, - 0,0,3314,3315,5,307,0,0,3315,3317,3,16,8,0,3316,3318,3,292,146,0, - 3317,3316,1,0,0,0,3317,3318,1,0,0,0,3318,3320,1,0,0,0,3319,3289, - 1,0,0,0,3319,3291,1,0,0,0,3319,3293,1,0,0,0,3319,3294,1,0,0,0,3319, - 3298,1,0,0,0,3319,3300,1,0,0,0,3319,3302,1,0,0,0,3319,3304,1,0,0, - 0,3319,3307,1,0,0,0,3319,3310,1,0,0,0,3319,3314,1,0,0,0,3320,289, - 1,0,0,0,3321,3324,5,147,0,0,3322,3324,1,0,0,0,3323,3321,1,0,0,0, - 3323,3322,1,0,0,0,3324,291,1,0,0,0,3325,3332,3,1354,677,0,3326,3327, - 5,12,0,0,3327,3332,3,1354,677,0,3328,3329,5,13,0,0,3329,3332,3,1354, - 677,0,3330,3332,3,1364,682,0,3331,3325,1,0,0,0,3331,3326,1,0,0,0, - 3331,3328,1,0,0,0,3331,3330,1,0,0,0,3332,293,1,0,0,0,3333,3338,3, - 292,146,0,3334,3335,5,6,0,0,3335,3337,3,292,146,0,3336,3334,1,0, - 0,0,3337,3340,1,0,0,0,3338,3336,1,0,0,0,3338,3339,1,0,0,0,3339,295, - 1,0,0,0,3340,3338,1,0,0,0,3341,3342,5,46,0,0,3342,3343,3,618,309, - 0,3343,3344,3,298,149,0,3344,3345,3,308,154,0,3345,3346,5,238,0, - 0,3346,3352,3,1340,670,0,3347,3348,5,215,0,0,3348,3349,3,300,150, - 0,3349,3350,3,302,151,0,3350,3351,3,306,153,0,3351,3353,1,0,0,0, - 3352,3347,1,0,0,0,3352,3353,1,0,0,0,3353,297,1,0,0,0,3354,3357,5, - 352,0,0,3355,3357,1,0,0,0,3356,3354,1,0,0,0,3356,3355,1,0,0,0,3357, - 299,1,0,0,0,3358,3360,3,1340,670,0,3359,3361,3,526,263,0,3360,3359, - 1,0,0,0,3360,3361,1,0,0,0,3361,301,1,0,0,0,3362,3363,5,230,0,0,3363, - 3366,3,300,150,0,3364,3366,1,0,0,0,3365,3362,1,0,0,0,3365,3364,1, - 0,0,0,3366,303,1,0,0,0,3367,3368,5,366,0,0,3368,3372,3,300,150,0, - 3369,3370,5,262,0,0,3370,3372,5,366,0,0,3371,3367,1,0,0,0,3371,3369, - 1,0,0,0,3372,305,1,0,0,0,3373,3376,3,304,152,0,3374,3376,1,0,0,0, - 3375,3373,1,0,0,0,3375,3374,1,0,0,0,3376,307,1,0,0,0,3377,3380,5, - 288,0,0,3378,3380,1,0,0,0,3379,3377,1,0,0,0,3379,3378,1,0,0,0,3380, - 309,1,0,0,0,3381,3382,5,46,0,0,3382,3383,5,344,0,0,3383,3384,3,1340, - 670,0,3384,3385,3,312,156,0,3385,3386,5,246,0,0,3386,3387,3,1358, - 679,0,3387,3388,3,118,59,0,3388,311,1,0,0,0,3389,3390,5,275,0,0, - 3390,3393,3,1368,684,0,3391,3393,1,0,0,0,3392,3389,1,0,0,0,3392, - 3391,1,0,0,0,3393,313,1,0,0,0,3394,3395,5,191,0,0,3395,3398,5,344, - 0,0,3396,3397,5,220,0,0,3397,3399,5,389,0,0,3398,3396,1,0,0,0,3398, - 3399,1,0,0,0,3399,3400,1,0,0,0,3400,3401,3,1340,670,0,3401,315,1, - 0,0,0,3402,3403,5,46,0,0,3403,3407,5,204,0,0,3404,3405,5,220,0,0, - 3405,3406,5,77,0,0,3406,3408,5,389,0,0,3407,3404,1,0,0,0,3407,3408, - 1,0,0,0,3408,3409,1,0,0,0,3409,3410,3,1340,670,0,3410,3411,3,16, - 8,0,3411,3412,3,318,159,0,3412,317,1,0,0,0,3413,3415,3,320,160,0, - 3414,3413,1,0,0,0,3415,3418,1,0,0,0,3416,3414,1,0,0,0,3416,3417, - 1,0,0,0,3417,319,1,0,0,0,3418,3416,1,0,0,0,3419,3420,5,316,0,0,3420, - 3427,3,1340,670,0,3421,3422,5,368,0,0,3422,3427,3,72,36,0,3423,3424, - 5,64,0,0,3424,3427,3,72,36,0,3425,3427,5,150,0,0,3426,3419,1,0,0, - 0,3426,3421,1,0,0,0,3426,3423,1,0,0,0,3426,3425,1,0,0,0,3427,321, - 1,0,0,0,3428,3429,5,138,0,0,3429,3430,5,204,0,0,3430,3431,3,1340, - 670,0,3431,3432,5,362,0,0,3432,3433,3,324,162,0,3433,323,1,0,0,0, - 3434,3436,3,326,163,0,3435,3434,1,0,0,0,3436,3439,1,0,0,0,3437,3435, - 1,0,0,0,3437,3438,1,0,0,0,3438,325,1,0,0,0,3439,3437,1,0,0,0,3440, - 3441,5,94,0,0,3441,3442,3,72,36,0,3442,327,1,0,0,0,3443,3444,5,138, - 0,0,3444,3445,5,204,0,0,3445,3446,3,1340,670,0,3446,3447,3,40,20, - 0,3447,3448,3,516,258,0,3448,3449,3,1340,670,0,3449,3548,1,0,0,0, - 3450,3451,5,138,0,0,3451,3452,5,204,0,0,3452,3453,3,1340,670,0,3453, - 3454,3,40,20,0,3454,3455,3,514,257,0,3455,3456,3,524,262,0,3456, - 3548,1,0,0,0,3457,3458,5,138,0,0,3458,3459,5,204,0,0,3459,3460,3, - 1340,670,0,3460,3461,3,40,20,0,3461,3462,5,136,0,0,3462,3463,3,650, - 325,0,3463,3548,1,0,0,0,3464,3465,5,138,0,0,3465,3466,5,204,0,0, - 3466,3467,3,1340,670,0,3467,3468,3,40,20,0,3468,3469,5,41,0,0,3469, - 3470,5,2,0,0,3470,3471,3,1118,559,0,3471,3472,5,36,0,0,3472,3473, - 3,1118,559,0,3473,3474,5,3,0,0,3474,3548,1,0,0,0,3475,3476,5,138, - 0,0,3476,3477,5,204,0,0,3477,3478,3,1340,670,0,3478,3479,3,40,20, - 0,3479,3480,5,189,0,0,3480,3481,3,1118,559,0,3481,3548,1,0,0,0,3482, - 3483,5,138,0,0,3483,3484,5,204,0,0,3484,3485,3,1340,670,0,3485,3486, - 3,40,20,0,3486,3487,5,211,0,0,3487,3488,3,626,313,0,3488,3548,1, - 0,0,0,3489,3490,5,138,0,0,3490,3491,5,204,0,0,3491,3492,3,1340,670, - 0,3492,3493,3,40,20,0,3493,3494,5,271,0,0,3494,3495,3,688,344,0, - 3495,3548,1,0,0,0,3496,3497,5,138,0,0,3497,3498,5,204,0,0,3498,3499, - 3,1340,670,0,3499,3500,3,40,20,0,3500,3501,5,271,0,0,3501,3502,5, - 156,0,0,3502,3503,3,524,262,0,3503,3504,5,100,0,0,3504,3505,3,1340, - 670,0,3505,3548,1,0,0,0,3506,3507,5,138,0,0,3507,3508,5,204,0,0, - 3508,3509,3,1340,670,0,3509,3510,3,40,20,0,3510,3511,5,271,0,0,3511, - 3512,5,206,0,0,3512,3513,3,524,262,0,3513,3514,5,100,0,0,3514,3515, - 3,1340,670,0,3515,3548,1,0,0,0,3516,3517,5,138,0,0,3517,3518,5,204, - 0,0,3518,3519,3,1340,670,0,3519,3520,3,40,20,0,3520,3521,5,289,0, - 0,3521,3522,3,626,313,0,3522,3548,1,0,0,0,3523,3524,5,138,0,0,3524, - 3525,5,204,0,0,3525,3526,3,1340,670,0,3526,3527,3,40,20,0,3527,3528, - 5,442,0,0,3528,3529,3,626,313,0,3529,3548,1,0,0,0,3530,3531,5,138, - 0,0,3531,3532,5,204,0,0,3532,3533,3,1340,670,0,3533,3534,3,40,20, - 0,3534,3535,5,443,0,0,3535,3536,5,62,0,0,3536,3537,3,1118,559,0, - 3537,3538,5,238,0,0,3538,3539,3,1340,670,0,3539,3548,1,0,0,0,3540, - 3541,5,138,0,0,3541,3542,5,204,0,0,3542,3543,3,1340,670,0,3543,3544, - 3,40,20,0,3544,3545,5,353,0,0,3545,3546,3,1118,559,0,3546,3548,1, - 0,0,0,3547,3443,1,0,0,0,3547,3450,1,0,0,0,3547,3457,1,0,0,0,3547, - 3464,1,0,0,0,3547,3475,1,0,0,0,3547,3482,1,0,0,0,3547,3489,1,0,0, - 0,3547,3496,1,0,0,0,3547,3506,1,0,0,0,3547,3516,1,0,0,0,3547,3523, - 1,0,0,0,3547,3530,1,0,0,0,3547,3540,1,0,0,0,3548,329,1,0,0,0,3549, - 3550,5,46,0,0,3550,3551,5,63,0,0,3551,3552,5,174,0,0,3552,3553,5, - 374,0,0,3553,3554,3,1340,670,0,3554,3555,3,336,168,0,3555,3556,3, - 340,170,0,3556,331,1,0,0,0,3557,3558,5,215,0,0,3558,3566,3,300,150, - 0,3559,3560,5,262,0,0,3560,3566,5,215,0,0,3561,3562,5,366,0,0,3562, - 3566,3,300,150,0,3563,3564,5,262,0,0,3564,3566,5,366,0,0,3565,3557, - 1,0,0,0,3565,3559,1,0,0,0,3565,3561,1,0,0,0,3565,3563,1,0,0,0,3566, - 333,1,0,0,0,3567,3569,3,332,166,0,3568,3567,1,0,0,0,3569,3570,1, - 0,0,0,3570,3568,1,0,0,0,3570,3571,1,0,0,0,3571,335,1,0,0,0,3572, - 3575,3,334,167,0,3573,3575,1,0,0,0,3574,3572,1,0,0,0,3574,3573,1, - 0,0,0,3575,337,1,0,0,0,3576,3577,5,138,0,0,3577,3578,5,63,0,0,3578, - 3579,5,174,0,0,3579,3580,5,374,0,0,3580,3581,3,1340,670,0,3581,3582, - 3,336,168,0,3582,3583,3,344,172,0,3583,3592,1,0,0,0,3584,3585,5, - 138,0,0,3585,3586,5,63,0,0,3586,3587,5,174,0,0,3587,3588,5,374,0, - 0,3588,3589,3,1340,670,0,3589,3590,3,334,167,0,3590,3592,1,0,0,0, - 3591,3576,1,0,0,0,3591,3584,1,0,0,0,3592,339,1,0,0,0,3593,3594,5, - 273,0,0,3594,3595,5,2,0,0,3595,3596,3,342,171,0,3596,3597,5,3,0, - 0,3597,3600,1,0,0,0,3598,3600,1,0,0,0,3599,3593,1,0,0,0,3599,3598, - 1,0,0,0,3600,341,1,0,0,0,3601,3606,3,350,175,0,3602,3603,5,6,0,0, - 3603,3605,3,350,175,0,3604,3602,1,0,0,0,3605,3608,1,0,0,0,3606,3604, - 1,0,0,0,3606,3607,1,0,0,0,3607,343,1,0,0,0,3608,3606,1,0,0,0,3609, - 3610,5,273,0,0,3610,3611,5,2,0,0,3611,3612,3,346,173,0,3612,3613, - 5,3,0,0,3613,345,1,0,0,0,3614,3619,3,348,174,0,3615,3616,5,6,0,0, - 3616,3618,3,348,174,0,3617,3615,1,0,0,0,3618,3621,1,0,0,0,3619,3617, - 1,0,0,0,3619,3620,1,0,0,0,3620,347,1,0,0,0,3621,3619,1,0,0,0,3622, - 3630,3,350,175,0,3623,3624,5,326,0,0,3624,3630,3,350,175,0,3625, - 3626,5,133,0,0,3626,3630,3,350,175,0,3627,3628,5,191,0,0,3628,3630, - 3,352,176,0,3629,3622,1,0,0,0,3629,3623,1,0,0,0,3629,3625,1,0,0, - 0,3629,3627,1,0,0,0,3630,349,1,0,0,0,3631,3632,3,352,176,0,3632, - 3633,3,354,177,0,3633,351,1,0,0,0,3634,3635,3,1380,690,0,3635,353, - 1,0,0,0,3636,3637,3,1358,679,0,3637,355,1,0,0,0,3638,3639,5,46,0, - 0,3639,3640,5,324,0,0,3640,3641,3,1340,670,0,3641,3642,3,358,179, - 0,3642,3643,3,362,181,0,3643,3644,5,63,0,0,3644,3645,5,174,0,0,3645, - 3646,5,374,0,0,3646,3647,3,1340,670,0,3647,3648,3,340,170,0,3648, - 3664,1,0,0,0,3649,3650,5,46,0,0,3650,3651,5,324,0,0,3651,3652,5, - 220,0,0,3652,3653,5,77,0,0,3653,3654,5,389,0,0,3654,3655,3,1340, - 670,0,3655,3656,3,358,179,0,3656,3657,3,362,181,0,3657,3658,5,63, - 0,0,3658,3659,5,174,0,0,3659,3660,5,374,0,0,3660,3661,3,1340,670, - 0,3661,3662,3,340,170,0,3662,3664,1,0,0,0,3663,3638,1,0,0,0,3663, - 3649,1,0,0,0,3664,357,1,0,0,0,3665,3666,5,353,0,0,3666,3669,3,1358, - 679,0,3667,3669,1,0,0,0,3668,3665,1,0,0,0,3668,3667,1,0,0,0,3669, - 359,1,0,0,0,3670,3673,5,368,0,0,3671,3674,3,1358,679,0,3672,3674, - 5,78,0,0,3673,3671,1,0,0,0,3673,3672,1,0,0,0,3674,361,1,0,0,0,3675, - 3678,3,360,180,0,3676,3678,1,0,0,0,3677,3675,1,0,0,0,3677,3676,1, - 0,0,0,3678,363,1,0,0,0,3679,3680,5,138,0,0,3680,3681,5,324,0,0,3681, - 3687,3,1340,670,0,3682,3688,3,344,172,0,3683,3685,3,360,180,0,3684, - 3686,3,344,172,0,3685,3684,1,0,0,0,3685,3686,1,0,0,0,3686,3688,1, - 0,0,0,3687,3682,1,0,0,0,3687,3683,1,0,0,0,3688,365,1,0,0,0,3689, - 3690,5,46,0,0,3690,3691,5,63,0,0,3691,3692,5,92,0,0,3692,3693,3, - 1336,668,0,3693,3694,5,2,0,0,3694,3695,3,176,88,0,3695,3696,5,3, - 0,0,3696,3697,3,238,119,0,3697,3698,5,324,0,0,3698,3699,3,1340,670, - 0,3699,3700,3,340,170,0,3700,3746,1,0,0,0,3701,3702,5,46,0,0,3702, - 3703,5,63,0,0,3703,3704,5,92,0,0,3704,3705,5,220,0,0,3705,3706,5, - 77,0,0,3706,3707,5,389,0,0,3707,3708,3,1336,668,0,3708,3709,5,2, - 0,0,3709,3710,3,176,88,0,3710,3711,5,3,0,0,3711,3712,3,238,119,0, - 3712,3713,5,324,0,0,3713,3714,3,1340,670,0,3714,3715,3,340,170,0, - 3715,3746,1,0,0,0,3716,3717,5,46,0,0,3717,3718,5,63,0,0,3718,3719, - 5,92,0,0,3719,3720,3,1336,668,0,3720,3721,5,278,0,0,3721,3722,5, - 268,0,0,3722,3723,3,1336,668,0,3723,3724,3,178,89,0,3724,3725,3, - 128,64,0,3725,3726,5,324,0,0,3726,3727,3,1340,670,0,3727,3728,3, - 340,170,0,3728,3746,1,0,0,0,3729,3730,5,46,0,0,3730,3731,5,63,0, - 0,3731,3732,5,92,0,0,3732,3733,5,220,0,0,3733,3734,5,77,0,0,3734, - 3735,5,389,0,0,3735,3736,3,1336,668,0,3736,3737,5,278,0,0,3737,3738, - 5,268,0,0,3738,3739,3,1336,668,0,3739,3740,3,178,89,0,3740,3741, - 3,128,64,0,3741,3742,5,324,0,0,3742,3743,3,1340,670,0,3743,3744, - 3,340,170,0,3744,3746,1,0,0,0,3745,3689,1,0,0,0,3745,3701,1,0,0, - 0,3745,3716,1,0,0,0,3745,3729,1,0,0,0,3746,367,1,0,0,0,3747,3748, - 5,444,0,0,3748,3749,5,63,0,0,3749,3750,5,316,0,0,3750,3751,3,1340, - 670,0,3751,3752,3,372,186,0,3752,3753,5,64,0,0,3753,3754,5,324,0, - 0,3754,3755,3,1340,670,0,3755,3756,5,71,0,0,3756,3757,3,1340,670, - 0,3757,3758,3,340,170,0,3758,369,1,0,0,0,3759,3760,5,74,0,0,3760, - 3763,5,94,0,0,3761,3763,5,59,0,0,3762,3759,1,0,0,0,3762,3761,1,0, - 0,0,3763,371,1,0,0,0,3764,3765,3,370,185,0,3765,3766,5,2,0,0,3766, - 3767,3,1076,538,0,3767,3768,5,3,0,0,3768,3771,1,0,0,0,3769,3771, - 1,0,0,0,3770,3764,1,0,0,0,3770,3769,1,0,0,0,3771,373,1,0,0,0,3772, - 3773,5,46,0,0,3773,3774,5,99,0,0,3774,3775,5,248,0,0,3775,3776,5, - 62,0,0,3776,3777,3,376,188,0,3777,3778,5,324,0,0,3778,3779,3,1340, - 670,0,3779,3780,3,340,170,0,3780,3794,1,0,0,0,3781,3782,5,46,0,0, - 3782,3783,5,99,0,0,3783,3784,5,248,0,0,3784,3785,5,220,0,0,3785, - 3786,5,77,0,0,3786,3787,5,389,0,0,3787,3788,5,62,0,0,3788,3789,3, - 376,188,0,3789,3790,5,324,0,0,3790,3791,3,1340,670,0,3791,3792,3, - 340,170,0,3792,3794,1,0,0,0,3793,3772,1,0,0,0,3793,3781,1,0,0,0, - 3794,375,1,0,0,0,3795,3798,3,1368,684,0,3796,3798,5,99,0,0,3797, - 3795,1,0,0,0,3797,3796,1,0,0,0,3798,377,1,0,0,0,3799,3800,5,191, - 0,0,3800,3801,5,99,0,0,3801,3802,5,248,0,0,3802,3803,5,62,0,0,3803, - 3804,3,376,188,0,3804,3805,5,324,0,0,3805,3806,3,1340,670,0,3806, - 3818,1,0,0,0,3807,3808,5,191,0,0,3808,3809,5,99,0,0,3809,3810,5, - 248,0,0,3810,3811,5,220,0,0,3811,3812,5,389,0,0,3812,3813,5,62,0, - 0,3813,3814,3,376,188,0,3814,3815,5,324,0,0,3815,3816,3,1340,670, - 0,3816,3818,1,0,0,0,3817,3799,1,0,0,0,3817,3807,1,0,0,0,3818,379, - 1,0,0,0,3819,3820,5,138,0,0,3820,3821,5,99,0,0,3821,3822,5,248,0, - 0,3822,3823,5,62,0,0,3823,3824,3,376,188,0,3824,3825,5,324,0,0,3825, - 3826,3,1340,670,0,3826,3827,3,344,172,0,3827,381,1,0,0,0,3828,3829, - 5,46,0,0,3829,3830,5,445,0,0,3830,3831,3,1340,670,0,3831,3832,5, - 80,0,0,3832,3833,3,1336,668,0,3833,3834,3,394,197,0,3834,3835,3, - 396,198,0,3835,3836,3,390,195,0,3836,3837,3,386,193,0,3837,3838, - 3,388,194,0,3838,383,1,0,0,0,3839,3840,5,138,0,0,3840,3841,5,445, - 0,0,3841,3842,3,1340,670,0,3842,3843,5,80,0,0,3843,3844,3,1336,668, - 0,3844,3845,3,392,196,0,3845,3846,3,386,193,0,3846,3847,3,388,194, - 0,3847,385,1,0,0,0,3848,3849,5,100,0,0,3849,3850,5,2,0,0,3850,3851, - 3,1162,581,0,3851,3852,5,3,0,0,3852,3855,1,0,0,0,3853,3855,1,0,0, - 0,3854,3848,1,0,0,0,3854,3853,1,0,0,0,3855,387,1,0,0,0,3856,3857, - 5,105,0,0,3857,3858,5,42,0,0,3858,3859,5,2,0,0,3859,3860,3,1162, - 581,0,3860,3861,5,3,0,0,3861,3864,1,0,0,0,3862,3864,1,0,0,0,3863, - 3856,1,0,0,0,3863,3862,1,0,0,0,3864,389,1,0,0,0,3865,3866,5,94,0, - 0,3866,3869,3,1370,685,0,3867,3869,1,0,0,0,3868,3865,1,0,0,0,3868, - 3867,1,0,0,0,3869,391,1,0,0,0,3870,3871,5,94,0,0,3871,3874,3,1370, - 685,0,3872,3874,1,0,0,0,3873,3870,1,0,0,0,3873,3872,1,0,0,0,3874, - 393,1,0,0,0,3875,3876,5,36,0,0,3876,3879,3,1382,691,0,3877,3879, - 1,0,0,0,3878,3875,1,0,0,0,3878,3877,1,0,0,0,3879,395,1,0,0,0,3880, - 3881,5,62,0,0,3881,3884,3,398,199,0,3882,3884,1,0,0,0,3883,3880, - 1,0,0,0,3883,3882,1,0,0,0,3884,397,1,0,0,0,3885,3886,7,17,0,0,3886, - 399,1,0,0,0,3887,3888,5,46,0,0,3888,3889,5,131,0,0,3889,3890,5,446, - 0,0,3890,3891,3,1340,670,0,3891,3892,5,353,0,0,3892,3893,3,402,201, - 0,3893,3894,5,215,0,0,3894,3895,3,300,150,0,3895,401,1,0,0,0,3896, - 3897,7,18,0,0,3897,403,1,0,0,0,3898,3899,5,46,0,0,3899,3900,5,350, - 0,0,3900,3901,3,1340,670,0,3901,3902,3,406,203,0,3902,3903,3,408, - 204,0,3903,3904,5,80,0,0,3904,3905,3,1336,668,0,3905,3906,3,412, - 206,0,3906,3907,3,424,212,0,3907,3908,3,430,215,0,3908,3909,5,202, - 0,0,3909,3910,3,432,216,0,3910,3911,3,1346,673,0,3911,3912,5,2,0, - 0,3912,3913,3,434,217,0,3913,3914,5,3,0,0,3914,3937,1,0,0,0,3915, - 3916,5,46,0,0,3916,3917,5,45,0,0,3917,3918,5,350,0,0,3918,3919,3, - 1340,670,0,3919,3920,5,135,0,0,3920,3921,3,408,204,0,3921,3922,5, - 80,0,0,3922,3923,3,1336,668,0,3923,3924,3,438,219,0,3924,3925,3, - 440,220,0,3925,3926,5,62,0,0,3926,3927,5,192,0,0,3927,3928,5,407, - 0,0,3928,3929,3,430,215,0,3929,3930,5,202,0,0,3930,3931,3,432,216, - 0,3931,3932,3,1346,673,0,3932,3933,5,2,0,0,3933,3934,3,434,217,0, - 3934,3935,5,3,0,0,3935,3937,1,0,0,0,3936,3898,1,0,0,0,3936,3915, - 1,0,0,0,3937,405,1,0,0,0,3938,3943,5,145,0,0,3939,3943,5,135,0,0, - 3940,3941,5,233,0,0,3941,3943,5,268,0,0,3942,3938,1,0,0,0,3942,3939, - 1,0,0,0,3942,3940,1,0,0,0,3943,407,1,0,0,0,3944,3949,3,410,205,0, - 3945,3946,5,82,0,0,3946,3948,3,410,205,0,3947,3945,1,0,0,0,3948, - 3951,1,0,0,0,3949,3947,1,0,0,0,3949,3950,1,0,0,0,3950,409,1,0,0, - 0,3951,3949,1,0,0,0,3952,3960,5,232,0,0,3953,3960,5,182,0,0,3954, - 3960,5,362,0,0,3955,3956,5,362,0,0,3956,3957,5,268,0,0,3957,3960, - 3,216,108,0,3958,3960,5,351,0,0,3959,3952,1,0,0,0,3959,3953,1,0, - 0,0,3959,3954,1,0,0,0,3959,3955,1,0,0,0,3959,3958,1,0,0,0,3960,411, - 1,0,0,0,3961,3962,5,447,0,0,3962,3965,3,414,207,0,3963,3965,1,0, - 0,0,3964,3961,1,0,0,0,3964,3963,1,0,0,0,3965,413,1,0,0,0,3966,3968, - 3,416,208,0,3967,3966,1,0,0,0,3968,3969,1,0,0,0,3969,3967,1,0,0, - 0,3969,3970,1,0,0,0,3970,415,1,0,0,0,3971,3972,3,418,209,0,3972, - 3973,3,420,210,0,3973,3974,3,834,417,0,3974,3975,3,422,211,0,3975, - 417,1,0,0,0,3976,3977,7,19,0,0,3977,419,1,0,0,0,3978,3979,7,20,0, - 0,3979,421,1,0,0,0,3980,3981,3,1372,686,0,3981,423,1,0,0,0,3982, - 3983,5,62,0,0,3983,3984,3,426,213,0,3984,3985,3,428,214,0,3985,3988, - 1,0,0,0,3986,3988,1,0,0,0,3987,3982,1,0,0,0,3987,3986,1,0,0,0,3988, - 425,1,0,0,0,3989,3992,5,192,0,0,3990,3992,1,0,0,0,3991,3989,1,0, - 0,0,3991,3990,1,0,0,0,3992,427,1,0,0,0,3993,3994,7,21,0,0,3994,429, - 1,0,0,0,3995,3996,5,102,0,0,3996,3997,5,2,0,0,3997,3998,3,1162,581, - 0,3998,3999,5,3,0,0,3999,4002,1,0,0,0,4000,4002,1,0,0,0,4001,3995, - 1,0,0,0,4001,4000,1,0,0,0,4002,431,1,0,0,0,4003,4004,7,22,0,0,4004, - 433,1,0,0,0,4005,4008,3,436,218,0,4006,4008,1,0,0,0,4007,4005,1, - 0,0,0,4007,4006,1,0,0,0,4008,4013,1,0,0,0,4009,4010,5,6,0,0,4010, - 4012,3,436,218,0,4011,4009,1,0,0,0,4012,4015,1,0,0,0,4013,4011,1, - 0,0,0,4013,4014,1,0,0,0,4014,435,1,0,0,0,4015,4013,1,0,0,0,4016, - 4021,3,1356,678,0,4017,4021,3,1354,677,0,4018,4021,3,1358,679,0, - 4019,4021,3,1380,690,0,4020,4016,1,0,0,0,4020,4017,1,0,0,0,4020, - 4018,1,0,0,0,4020,4019,1,0,0,0,4021,437,1,0,0,0,4022,4023,5,64,0, - 0,4023,4026,3,1336,668,0,4024,4026,1,0,0,0,4025,4022,1,0,0,0,4025, - 4024,1,0,0,0,4026,439,1,0,0,0,4027,4029,3,442,221,0,4028,4027,1, - 0,0,0,4029,4032,1,0,0,0,4030,4028,1,0,0,0,4030,4031,1,0,0,0,4031, - 441,1,0,0,0,4032,4030,1,0,0,0,4033,4034,5,77,0,0,4034,4045,5,54, - 0,0,4035,4045,5,54,0,0,4036,4037,5,69,0,0,4037,4045,5,221,0,0,4038, - 4039,5,69,0,0,4039,4045,5,180,0,0,4040,4041,5,77,0,0,4041,4045,5, - 364,0,0,4042,4043,5,262,0,0,4043,4045,5,228,0,0,4044,4033,1,0,0, - 0,4044,4035,1,0,0,0,4044,4036,1,0,0,0,4044,4038,1,0,0,0,4044,4040, - 1,0,0,0,4044,4042,1,0,0,0,4045,443,1,0,0,0,4046,4047,5,46,0,0,4047, - 4048,5,198,0,0,4048,4049,5,350,0,0,4049,4050,3,1340,670,0,4050,4051, - 5,80,0,0,4051,4052,3,1380,690,0,4052,4053,5,202,0,0,4053,4054,3, - 432,216,0,4054,4055,3,1346,673,0,4055,4056,5,2,0,0,4056,4057,5,3, - 0,0,4057,4073,1,0,0,0,4058,4059,5,46,0,0,4059,4060,5,198,0,0,4060, - 4061,5,350,0,0,4061,4062,3,1340,670,0,4062,4063,5,80,0,0,4063,4064, - 3,1380,690,0,4064,4065,5,102,0,0,4065,4066,3,446,223,0,4066,4067, - 5,202,0,0,4067,4068,3,432,216,0,4068,4069,3,1346,673,0,4069,4070, - 5,2,0,0,4070,4071,5,3,0,0,4071,4073,1,0,0,0,4072,4046,1,0,0,0,4072, - 4058,1,0,0,0,4073,445,1,0,0,0,4074,4079,3,448,224,0,4075,4076,5, - 33,0,0,4076,4078,3,448,224,0,4077,4075,1,0,0,0,4078,4081,1,0,0,0, - 4079,4077,1,0,0,0,4079,4080,1,0,0,0,4080,447,1,0,0,0,4081,4079,1, - 0,0,0,4082,4083,3,1372,686,0,4083,4084,5,68,0,0,4084,4085,5,2,0, - 0,4085,4086,3,450,225,0,4086,4087,5,3,0,0,4087,449,1,0,0,0,4088, - 4093,3,1358,679,0,4089,4090,5,6,0,0,4090,4092,3,1358,679,0,4091, - 4089,1,0,0,0,4092,4095,1,0,0,0,4093,4091,1,0,0,0,4093,4094,1,0,0, - 0,4094,451,1,0,0,0,4095,4093,1,0,0,0,4096,4097,5,138,0,0,4097,4098, - 5,198,0,0,4098,4099,5,350,0,0,4099,4100,3,1340,670,0,4100,4101,3, - 454,227,0,4101,453,1,0,0,0,4102,4109,5,193,0,0,4103,4104,5,193,0, - 0,4104,4109,5,305,0,0,4105,4106,5,193,0,0,4106,4109,5,139,0,0,4107, - 4109,5,186,0,0,4108,4102,1,0,0,0,4108,4103,1,0,0,0,4108,4105,1,0, - 0,0,4108,4107,1,0,0,0,4109,455,1,0,0,0,4110,4111,5,46,0,0,4111,4112, - 5,140,0,0,4112,4113,3,524,262,0,4113,4114,5,42,0,0,4114,4115,5,2, - 0,0,4115,4116,3,1162,581,0,4116,4117,5,3,0,0,4117,4118,3,440,220, - 0,4118,457,1,0,0,0,4119,4120,5,46,0,0,4120,4121,3,618,309,0,4121, - 4122,5,136,0,0,4122,4123,3,1346,673,0,4123,4124,3,646,323,0,4124, - 4125,3,460,230,0,4125,4226,1,0,0,0,4126,4127,5,46,0,0,4127,4128, - 3,618,309,0,4128,4129,5,136,0,0,4129,4130,3,1346,673,0,4130,4131, - 3,468,234,0,4131,4226,1,0,0,0,4132,4133,5,46,0,0,4133,4134,5,271, - 0,0,4134,4135,3,684,342,0,4135,4136,3,460,230,0,4136,4226,1,0,0, - 0,4137,4138,5,46,0,0,4138,4139,5,353,0,0,4139,4140,3,524,262,0,4140, - 4141,3,460,230,0,4141,4226,1,0,0,0,4142,4143,5,46,0,0,4143,4144, - 5,353,0,0,4144,4226,3,524,262,0,4145,4146,5,46,0,0,4146,4147,5,353, - 0,0,4147,4148,3,524,262,0,4148,4149,5,36,0,0,4149,4150,5,2,0,0,4150, - 4151,3,1098,549,0,4151,4152,5,3,0,0,4152,4226,1,0,0,0,4153,4154, - 5,46,0,0,4154,4155,5,353,0,0,4155,4156,3,524,262,0,4156,4157,5,36, - 0,0,4157,4158,5,196,0,0,4158,4159,5,2,0,0,4159,4160,3,474,237,0, - 4160,4161,5,3,0,0,4161,4226,1,0,0,0,4162,4163,5,46,0,0,4163,4164, - 5,353,0,0,4164,4165,3,524,262,0,4165,4166,5,36,0,0,4166,4167,5,292, - 0,0,4167,4168,3,460,230,0,4168,4226,1,0,0,0,4169,4170,5,46,0,0,4170, - 4171,5,348,0,0,4171,4172,5,318,0,0,4172,4173,5,276,0,0,4173,4174, - 3,524,262,0,4174,4175,3,460,230,0,4175,4226,1,0,0,0,4176,4177,5, - 46,0,0,4177,4178,5,348,0,0,4178,4179,5,318,0,0,4179,4180,5,185,0, - 0,4180,4181,3,524,262,0,4181,4182,3,460,230,0,4182,4226,1,0,0,0, - 4183,4184,5,46,0,0,4184,4185,5,348,0,0,4185,4186,5,318,0,0,4186, - 4187,5,346,0,0,4187,4188,3,524,262,0,4188,4189,3,460,230,0,4189, - 4226,1,0,0,0,4190,4191,5,46,0,0,4191,4192,5,348,0,0,4192,4193,5, - 318,0,0,4193,4194,5,163,0,0,4194,4195,3,524,262,0,4195,4196,3,460, - 230,0,4196,4226,1,0,0,0,4197,4198,5,46,0,0,4198,4199,5,108,0,0,4199, - 4200,3,524,262,0,4200,4201,3,460,230,0,4201,4226,1,0,0,0,4202,4203, - 5,46,0,0,4203,4204,5,108,0,0,4204,4205,5,220,0,0,4205,4206,5,77, - 0,0,4206,4207,5,389,0,0,4207,4208,3,524,262,0,4208,4209,3,460,230, - 0,4209,4226,1,0,0,0,4210,4211,5,46,0,0,4211,4212,5,108,0,0,4212, - 4213,3,524,262,0,4213,4214,5,64,0,0,4214,4215,3,524,262,0,4215,4226, - 1,0,0,0,4216,4217,5,46,0,0,4217,4218,5,108,0,0,4218,4219,5,220,0, - 0,4219,4220,5,77,0,0,4220,4221,5,389,0,0,4221,4222,3,524,262,0,4222, - 4223,5,64,0,0,4223,4224,3,524,262,0,4224,4226,1,0,0,0,4225,4119, - 1,0,0,0,4225,4126,1,0,0,0,4225,4132,1,0,0,0,4225,4137,1,0,0,0,4225, - 4142,1,0,0,0,4225,4145,1,0,0,0,4225,4153,1,0,0,0,4225,4162,1,0,0, - 0,4225,4169,1,0,0,0,4225,4176,1,0,0,0,4225,4183,1,0,0,0,4225,4190, - 1,0,0,0,4225,4197,1,0,0,0,4225,4202,1,0,0,0,4225,4210,1,0,0,0,4225, - 4216,1,0,0,0,4226,459,1,0,0,0,4227,4228,5,2,0,0,4228,4229,3,462, - 231,0,4229,4230,5,3,0,0,4230,461,1,0,0,0,4231,4236,3,464,232,0,4232, - 4233,5,6,0,0,4233,4235,3,464,232,0,4234,4232,1,0,0,0,4235,4238,1, - 0,0,0,4236,4234,1,0,0,0,4236,4237,1,0,0,0,4237,463,1,0,0,0,4238, - 4236,1,0,0,0,4239,4242,3,1380,690,0,4240,4241,5,10,0,0,4241,4243, - 3,466,233,0,4242,4240,1,0,0,0,4242,4243,1,0,0,0,4243,465,1,0,0,0, - 4244,4251,3,640,320,0,4245,4251,3,1392,696,0,4246,4251,3,1276,638, - 0,4247,4251,3,292,146,0,4248,4251,3,1358,679,0,4249,4251,5,400,0, - 0,4250,4244,1,0,0,0,4250,4245,1,0,0,0,4250,4246,1,0,0,0,4250,4247, - 1,0,0,0,4250,4248,1,0,0,0,4250,4249,1,0,0,0,4251,467,1,0,0,0,4252, - 4253,5,2,0,0,4253,4254,3,470,235,0,4254,4255,5,3,0,0,4255,469,1, - 0,0,0,4256,4261,3,472,236,0,4257,4258,5,6,0,0,4258,4260,3,472,236, - 0,4259,4257,1,0,0,0,4260,4263,1,0,0,0,4261,4259,1,0,0,0,4261,4262, - 1,0,0,0,4262,471,1,0,0,0,4263,4261,1,0,0,0,4264,4265,3,1382,691, - 0,4265,4266,5,10,0,0,4266,4267,3,466,233,0,4267,473,1,0,0,0,4268, - 4271,3,476,238,0,4269,4271,1,0,0,0,4270,4268,1,0,0,0,4270,4269,1, - 0,0,0,4271,475,1,0,0,0,4272,4277,3,1358,679,0,4273,4274,5,6,0,0, - 4274,4276,3,1358,679,0,4275,4273,1,0,0,0,4276,4279,1,0,0,0,4277, - 4275,1,0,0,0,4277,4278,1,0,0,0,4278,477,1,0,0,0,4279,4277,1,0,0, - 0,4280,4281,5,138,0,0,4281,4282,5,353,0,0,4282,4283,3,524,262,0, - 4283,4284,5,133,0,0,4284,4285,5,450,0,0,4285,4286,3,480,240,0,4286, - 4287,3,1358,679,0,4287,4318,1,0,0,0,4288,4289,5,138,0,0,4289,4290, - 5,353,0,0,4290,4291,3,524,262,0,4291,4292,5,133,0,0,4292,4293,5, - 450,0,0,4293,4294,3,480,240,0,4294,4295,3,1358,679,0,4295,4296,5, - 145,0,0,4296,4297,3,1358,679,0,4297,4318,1,0,0,0,4298,4299,5,138, - 0,0,4299,4300,5,353,0,0,4300,4301,3,524,262,0,4301,4302,5,133,0, - 0,4302,4303,5,450,0,0,4303,4304,3,480,240,0,4304,4305,3,1358,679, - 0,4305,4306,5,135,0,0,4306,4307,3,1358,679,0,4307,4318,1,0,0,0,4308, - 4309,5,138,0,0,4309,4310,5,353,0,0,4310,4311,3,524,262,0,4311,4312, - 5,302,0,0,4312,4313,5,450,0,0,4313,4314,3,1358,679,0,4314,4315,5, - 94,0,0,4315,4316,3,1358,679,0,4316,4318,1,0,0,0,4317,4280,1,0,0, - 0,4317,4288,1,0,0,0,4317,4298,1,0,0,0,4317,4308,1,0,0,0,4318,479, - 1,0,0,0,4319,4320,5,220,0,0,4320,4321,5,77,0,0,4321,4324,5,389,0, - 0,4322,4324,1,0,0,0,4323,4319,1,0,0,0,4323,4322,1,0,0,0,4324,481, - 1,0,0,0,4325,4326,5,46,0,0,4326,4327,5,271,0,0,4327,4328,5,156,0, - 0,4328,4329,3,524,262,0,4329,4330,3,488,244,0,4330,4331,5,62,0,0, - 4331,4332,5,353,0,0,4332,4333,3,1118,559,0,4333,4334,5,100,0,0,4334, - 4335,3,1340,670,0,4335,4336,3,490,245,0,4336,4337,5,36,0,0,4337, - 4338,3,484,242,0,4338,483,1,0,0,0,4339,4344,3,486,243,0,4340,4341, - 5,6,0,0,4341,4343,3,486,243,0,4342,4340,1,0,0,0,4343,4346,1,0,0, - 0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,485,1,0,0,0,4346,4344, - 1,0,0,0,4347,4348,5,271,0,0,4348,4349,3,1356,678,0,4349,4350,3,684, - 342,0,4350,4351,3,492,246,0,4351,4352,3,494,247,0,4352,4373,1,0, - 0,0,4353,4354,5,271,0,0,4354,4355,3,1356,678,0,4355,4356,3,688,344, - 0,4356,4357,3,492,246,0,4357,4358,3,494,247,0,4358,4373,1,0,0,0, - 4359,4360,5,211,0,0,4360,4361,3,1356,678,0,4361,4362,3,626,313,0, - 4362,4373,1,0,0,0,4363,4364,5,211,0,0,4364,4365,3,1356,678,0,4365, - 4366,5,2,0,0,4366,4367,3,1286,643,0,4367,4368,5,3,0,0,4368,4369, - 3,626,313,0,4369,4373,1,0,0,0,4370,4371,5,338,0,0,4371,4373,3,1118, - 559,0,4372,4347,1,0,0,0,4372,4353,1,0,0,0,4372,4359,1,0,0,0,4372, - 4363,1,0,0,0,4372,4370,1,0,0,0,4373,487,1,0,0,0,4374,4377,5,53,0, - 0,4375,4377,1,0,0,0,4376,4374,1,0,0,0,4376,4375,1,0,0,0,4377,489, - 1,0,0,0,4378,4379,5,206,0,0,4379,4382,3,524,262,0,4380,4382,1,0, - 0,0,4381,4378,1,0,0,0,4381,4380,1,0,0,0,4382,491,1,0,0,0,4383,4384, - 5,62,0,0,4384,4391,5,318,0,0,4385,4386,5,62,0,0,4386,4387,5,83,0, - 0,4387,4388,5,147,0,0,4388,4391,3,524,262,0,4389,4391,1,0,0,0,4390, - 4383,1,0,0,0,4390,4385,1,0,0,0,4390,4389,1,0,0,0,4391,493,1,0,0, - 0,4392,4395,5,295,0,0,4393,4395,1,0,0,0,4394,4392,1,0,0,0,4394,4393, - 1,0,0,0,4395,495,1,0,0,0,4396,4397,5,46,0,0,4397,4398,5,271,0,0, - 4398,4399,5,206,0,0,4399,4400,3,524,262,0,4400,4401,5,100,0,0,4401, - 4402,3,1340,670,0,4402,497,1,0,0,0,4403,4404,5,138,0,0,4404,4405, - 5,271,0,0,4405,4406,5,206,0,0,4406,4407,3,524,262,0,4407,4408,5, - 100,0,0,4408,4409,3,1340,670,0,4409,4410,5,133,0,0,4410,4411,3,484, - 242,0,4411,4422,1,0,0,0,4412,4413,5,138,0,0,4413,4414,5,271,0,0, - 4414,4415,5,206,0,0,4415,4416,3,524,262,0,4416,4417,5,100,0,0,4417, - 4418,3,1340,670,0,4418,4419,5,191,0,0,4419,4420,3,500,250,0,4420, - 4422,1,0,0,0,4421,4403,1,0,0,0,4421,4412,1,0,0,0,4422,499,1,0,0, - 0,4423,4428,3,502,251,0,4424,4425,5,6,0,0,4425,4427,3,502,251,0, - 4426,4424,1,0,0,0,4427,4430,1,0,0,0,4428,4426,1,0,0,0,4428,4429, - 1,0,0,0,4429,501,1,0,0,0,4430,4428,1,0,0,0,4431,4432,5,271,0,0,4432, - 4433,3,1356,678,0,4433,4434,5,2,0,0,4434,4435,3,1286,643,0,4435, - 4436,5,3,0,0,4436,4444,1,0,0,0,4437,4438,5,211,0,0,4438,4439,3,1356, - 678,0,4439,4440,5,2,0,0,4440,4441,3,1286,643,0,4441,4442,5,3,0,0, - 4442,4444,1,0,0,0,4443,4431,1,0,0,0,4443,4437,1,0,0,0,4444,503,1, - 0,0,0,4445,4446,5,191,0,0,4446,4447,5,271,0,0,4447,4448,5,156,0, - 0,4448,4449,3,524,262,0,4449,4450,5,100,0,0,4450,4451,3,1340,670, - 0,4451,4452,3,108,54,0,4452,4464,1,0,0,0,4453,4454,5,191,0,0,4454, - 4455,5,271,0,0,4455,4456,5,156,0,0,4456,4457,5,220,0,0,4457,4458, - 5,389,0,0,4458,4459,3,524,262,0,4459,4460,5,100,0,0,4460,4461,3, - 1340,670,0,4461,4462,3,108,54,0,4462,4464,1,0,0,0,4463,4445,1,0, - 0,0,4463,4453,1,0,0,0,4464,505,1,0,0,0,4465,4466,5,191,0,0,4466, - 4467,5,271,0,0,4467,4468,5,206,0,0,4468,4469,3,524,262,0,4469,4470, - 5,100,0,0,4470,4471,3,1340,670,0,4471,4472,3,108,54,0,4472,4484, - 1,0,0,0,4473,4474,5,191,0,0,4474,4475,5,271,0,0,4475,4476,5,206, - 0,0,4476,4477,5,220,0,0,4477,4478,5,389,0,0,4478,4479,3,524,262, - 0,4479,4480,5,100,0,0,4480,4481,3,1340,670,0,4481,4482,3,108,54, - 0,4482,4484,1,0,0,0,4483,4465,1,0,0,0,4483,4473,1,0,0,0,4484,507, - 1,0,0,0,4485,4486,5,191,0,0,4486,4487,5,274,0,0,4487,4488,5,147, - 0,0,4488,4489,3,1370,685,0,4489,4490,3,108,54,0,4490,509,1,0,0,0, - 4491,4492,5,294,0,0,4492,4493,5,274,0,0,4493,4494,5,147,0,0,4494, - 4495,3,1370,685,0,4495,4496,5,94,0,0,4496,4497,3,1368,684,0,4497, - 511,1,0,0,0,4498,4499,5,191,0,0,4499,4500,3,514,257,0,4500,4501, - 5,220,0,0,4501,4502,5,389,0,0,4502,4503,3,522,261,0,4503,4504,3, - 108,54,0,4504,4577,1,0,0,0,4505,4506,5,191,0,0,4506,4507,3,514,257, - 0,4507,4508,3,522,261,0,4508,4509,3,108,54,0,4509,4577,1,0,0,0,4510, - 4511,5,191,0,0,4511,4512,3,518,259,0,4512,4513,5,220,0,0,4513,4514, - 5,389,0,0,4514,4515,3,1338,669,0,4515,4516,3,108,54,0,4516,4577, - 1,0,0,0,4517,4518,5,191,0,0,4518,4519,3,518,259,0,4519,4520,3,1338, - 669,0,4520,4521,3,108,54,0,4521,4577,1,0,0,0,4522,4523,5,191,0,0, - 4523,4524,3,520,260,0,4524,4525,3,1340,670,0,4525,4526,5,80,0,0, - 4526,4527,3,524,262,0,4527,4528,3,108,54,0,4528,4577,1,0,0,0,4529, - 4530,5,191,0,0,4530,4531,3,520,260,0,4531,4532,5,220,0,0,4532,4533, - 5,389,0,0,4533,4534,3,1340,670,0,4534,4535,5,80,0,0,4535,4536,3, - 524,262,0,4536,4537,3,108,54,0,4537,4577,1,0,0,0,4538,4539,5,191, - 0,0,4539,4540,5,353,0,0,4540,4541,3,528,264,0,4541,4542,3,108,54, - 0,4542,4577,1,0,0,0,4543,4544,5,191,0,0,4544,4545,5,353,0,0,4545, - 4546,5,220,0,0,4546,4547,5,389,0,0,4547,4548,3,528,264,0,4548,4549, - 3,108,54,0,4549,4577,1,0,0,0,4550,4551,5,191,0,0,4551,4552,5,189, - 0,0,4552,4553,3,528,264,0,4553,4554,3,108,54,0,4554,4577,1,0,0,0, - 4555,4556,5,191,0,0,4556,4557,5,189,0,0,4557,4558,5,220,0,0,4558, - 4559,5,389,0,0,4559,4560,3,528,264,0,4560,4561,3,108,54,0,4561,4577, - 1,0,0,0,4562,4563,5,191,0,0,4563,4564,5,226,0,0,4564,4565,5,109, - 0,0,4565,4566,3,522,261,0,4566,4567,3,108,54,0,4567,4577,1,0,0,0, - 4568,4569,5,191,0,0,4569,4570,5,226,0,0,4570,4571,5,109,0,0,4571, - 4572,5,220,0,0,4572,4573,5,389,0,0,4573,4574,3,522,261,0,4574,4575, - 3,108,54,0,4575,4577,1,0,0,0,4576,4498,1,0,0,0,4576,4505,1,0,0,0, - 4576,4510,1,0,0,0,4576,4517,1,0,0,0,4576,4522,1,0,0,0,4576,4529, - 1,0,0,0,4576,4538,1,0,0,0,4576,4543,1,0,0,0,4576,4550,1,0,0,0,4576, - 4555,1,0,0,0,4576,4562,1,0,0,0,4576,4568,1,0,0,0,4577,513,1,0,0, - 0,4578,4602,5,92,0,0,4579,4602,5,321,0,0,4580,4602,5,369,0,0,4581, - 4582,5,251,0,0,4582,4602,5,369,0,0,4583,4602,5,226,0,0,4584,4585, - 5,63,0,0,4585,4602,5,92,0,0,4586,4602,5,108,0,0,4587,4602,5,168, - 0,0,4588,4602,5,335,0,0,4589,4590,5,348,0,0,4590,4591,5,318,0,0, - 4591,4602,5,276,0,0,4592,4593,5,348,0,0,4593,4594,5,318,0,0,4594, - 4602,5,185,0,0,4595,4596,5,348,0,0,4596,4597,5,318,0,0,4597,4602, - 5,346,0,0,4598,4599,5,348,0,0,4599,4600,5,318,0,0,4600,4602,5,163, - 0,0,4601,4578,1,0,0,0,4601,4579,1,0,0,0,4601,4580,1,0,0,0,4601,4581, - 1,0,0,0,4601,4583,1,0,0,0,4601,4584,1,0,0,0,4601,4586,1,0,0,0,4601, - 4587,1,0,0,0,4601,4588,1,0,0,0,4601,4589,1,0,0,0,4601,4592,1,0,0, - 0,4601,4595,1,0,0,0,4601,4598,1,0,0,0,4602,515,1,0,0,0,4603,4609, - 3,518,259,0,4604,4609,5,175,0,0,4605,4609,5,311,0,0,4606,4609,5, - 451,0,0,4607,4609,5,344,0,0,4608,4603,1,0,0,0,4608,4604,1,0,0,0, - 4608,4605,1,0,0,0,4608,4606,1,0,0,0,4608,4607,1,0,0,0,4609,517,1, - 0,0,0,4610,4611,5,131,0,0,4611,4625,5,446,0,0,4612,4613,5,198,0, - 0,4613,4625,5,350,0,0,4614,4625,5,204,0,0,4615,4616,5,63,0,0,4616, - 4617,5,174,0,0,4617,4625,5,374,0,0,4618,4619,3,308,154,0,4619,4620, - 5,238,0,0,4620,4625,1,0,0,0,4621,4625,5,452,0,0,4622,4625,5,316, - 0,0,4623,4625,5,324,0,0,4624,4610,1,0,0,0,4624,4612,1,0,0,0,4624, - 4614,1,0,0,0,4624,4615,1,0,0,0,4624,4618,1,0,0,0,4624,4621,1,0,0, - 0,4624,4622,1,0,0,0,4624,4623,1,0,0,0,4625,519,1,0,0,0,4626,4627, - 7,23,0,0,4627,521,1,0,0,0,4628,4633,3,524,262,0,4629,4630,5,6,0, - 0,4630,4632,3,524,262,0,4631,4629,1,0,0,0,4632,4635,1,0,0,0,4633, - 4631,1,0,0,0,4633,4634,1,0,0,0,4634,523,1,0,0,0,4635,4633,1,0,0, - 0,4636,4638,3,1372,686,0,4637,4639,3,526,263,0,4638,4637,1,0,0,0, - 4638,4639,1,0,0,0,4639,525,1,0,0,0,4640,4641,5,11,0,0,4641,4643, - 3,1342,671,0,4642,4640,1,0,0,0,4643,4644,1,0,0,0,4644,4642,1,0,0, - 0,4644,4645,1,0,0,0,4645,527,1,0,0,0,4646,4651,3,1118,559,0,4647, - 4648,5,6,0,0,4648,4650,3,1118,559,0,4649,4647,1,0,0,0,4650,4653, - 1,0,0,0,4651,4649,1,0,0,0,4651,4652,1,0,0,0,4652,529,1,0,0,0,4653, - 4651,1,0,0,0,4654,4655,5,351,0,0,4655,4656,3,988,494,0,4656,4657, - 3,1076,538,0,4657,4658,3,532,266,0,4658,4659,3,108,54,0,4659,531, - 1,0,0,0,4660,4661,5,167,0,0,4661,4666,5,219,0,0,4662,4663,5,307, - 0,0,4663,4666,5,219,0,0,4664,4666,1,0,0,0,4665,4660,1,0,0,0,4665, - 4662,1,0,0,0,4665,4664,1,0,0,0,4666,533,1,0,0,0,4667,4668,5,159, - 0,0,4668,4669,5,80,0,0,4669,4670,3,514,257,0,4670,4671,3,524,262, - 0,4671,4672,5,116,0,0,4672,4673,3,536,268,0,4673,4815,1,0,0,0,4674, - 4675,5,159,0,0,4675,4676,5,80,0,0,4676,4677,5,44,0,0,4677,4678,3, - 524,262,0,4678,4679,5,116,0,0,4679,4680,3,536,268,0,4680,4815,1, - 0,0,0,4681,4682,5,159,0,0,4682,4683,5,80,0,0,4683,4684,3,516,258, - 0,4684,4685,3,1340,670,0,4685,4686,5,116,0,0,4686,4687,3,536,268, - 0,4687,4815,1,0,0,0,4688,4689,5,159,0,0,4689,4690,5,80,0,0,4690, - 4691,5,353,0,0,4691,4692,3,1118,559,0,4692,4693,5,116,0,0,4693,4694, - 3,536,268,0,4694,4815,1,0,0,0,4695,4696,5,159,0,0,4696,4697,5,80, - 0,0,4697,4698,5,189,0,0,4698,4699,3,1118,559,0,4699,4700,5,116,0, - 0,4700,4701,3,536,268,0,4701,4815,1,0,0,0,4702,4703,5,159,0,0,4703, - 4704,5,80,0,0,4704,4705,5,136,0,0,4705,4706,3,650,325,0,4706,4707, - 5,116,0,0,4707,4708,3,536,268,0,4708,4815,1,0,0,0,4709,4710,5,159, - 0,0,4710,4711,5,80,0,0,4711,4712,5,211,0,0,4712,4713,3,626,313,0, - 4713,4714,5,116,0,0,4714,4715,3,536,268,0,4715,4815,1,0,0,0,4716, - 4717,5,159,0,0,4717,4718,5,80,0,0,4718,4719,5,271,0,0,4719,4720, - 3,688,344,0,4720,4721,5,116,0,0,4721,4722,3,536,268,0,4722,4815, - 1,0,0,0,4723,4724,5,159,0,0,4724,4725,5,80,0,0,4725,4726,5,45,0, - 0,4726,4727,3,1340,670,0,4727,4728,5,80,0,0,4728,4729,3,524,262, - 0,4729,4730,5,116,0,0,4730,4731,3,536,268,0,4731,4815,1,0,0,0,4732, - 4733,5,159,0,0,4733,4734,5,80,0,0,4734,4735,5,45,0,0,4735,4736,3, - 1340,670,0,4736,4737,5,80,0,0,4737,4738,5,189,0,0,4738,4739,3,524, - 262,0,4739,4740,5,116,0,0,4740,4741,3,536,268,0,4741,4815,1,0,0, - 0,4742,4743,5,159,0,0,4743,4744,5,80,0,0,4744,4745,3,520,260,0,4745, - 4746,3,1340,670,0,4746,4747,5,80,0,0,4747,4748,3,524,262,0,4748, - 4749,5,116,0,0,4749,4750,3,536,268,0,4750,4815,1,0,0,0,4751,4752, - 5,159,0,0,4752,4753,5,80,0,0,4753,4754,5,289,0,0,4754,4755,3,626, - 313,0,4755,4756,5,116,0,0,4756,4757,3,536,268,0,4757,4815,1,0,0, - 0,4758,4759,5,159,0,0,4759,4760,5,80,0,0,4760,4761,5,442,0,0,4761, - 4762,3,626,313,0,4762,4763,5,116,0,0,4763,4764,3,536,268,0,4764, - 4815,1,0,0,0,4765,4766,5,159,0,0,4766,4767,5,80,0,0,4767,4768,5, - 443,0,0,4768,4769,5,62,0,0,4769,4770,3,1118,559,0,4770,4771,5,238, - 0,0,4771,4772,3,1340,670,0,4772,4773,5,116,0,0,4773,4774,3,536,268, - 0,4774,4815,1,0,0,0,4775,4776,5,159,0,0,4776,4777,5,80,0,0,4777, - 4778,5,271,0,0,4778,4779,5,156,0,0,4779,4780,3,524,262,0,4780,4781, - 5,100,0,0,4781,4782,3,1340,670,0,4782,4783,5,116,0,0,4783,4784,3, - 536,268,0,4784,4815,1,0,0,0,4785,4786,5,159,0,0,4786,4787,5,80,0, - 0,4787,4788,5,271,0,0,4788,4789,5,206,0,0,4789,4790,3,524,262,0, - 4790,4791,5,100,0,0,4791,4792,3,1340,670,0,4792,4793,5,116,0,0,4793, - 4794,3,536,268,0,4794,4815,1,0,0,0,4795,4796,5,159,0,0,4796,4797, - 5,80,0,0,4797,4798,5,239,0,0,4798,4799,5,267,0,0,4799,4800,3,292, - 146,0,4800,4801,5,116,0,0,4801,4802,3,536,268,0,4802,4815,1,0,0, - 0,4803,4804,5,159,0,0,4804,4805,5,80,0,0,4805,4806,5,41,0,0,4806, - 4807,5,2,0,0,4807,4808,3,1118,559,0,4808,4809,5,36,0,0,4809,4810, - 3,1118,559,0,4810,4811,5,3,0,0,4811,4812,5,116,0,0,4812,4813,3,536, - 268,0,4813,4815,1,0,0,0,4814,4667,1,0,0,0,4814,4674,1,0,0,0,4814, - 4681,1,0,0,0,4814,4688,1,0,0,0,4814,4695,1,0,0,0,4814,4702,1,0,0, - 0,4814,4709,1,0,0,0,4814,4716,1,0,0,0,4814,4723,1,0,0,0,4814,4732, - 1,0,0,0,4814,4742,1,0,0,0,4814,4751,1,0,0,0,4814,4758,1,0,0,0,4814, - 4765,1,0,0,0,4814,4775,1,0,0,0,4814,4785,1,0,0,0,4814,4795,1,0,0, - 0,4814,4803,1,0,0,0,4815,535,1,0,0,0,4816,4819,3,1358,679,0,4817, - 4819,5,78,0,0,4818,4816,1,0,0,0,4818,4817,1,0,0,0,4819,537,1,0,0, - 0,4820,4821,5,320,0,0,4821,4822,5,237,0,0,4822,4823,3,540,270,0, - 4823,4824,5,80,0,0,4824,4825,3,514,257,0,4825,4826,3,524,262,0,4826, - 4827,5,116,0,0,4827,4828,3,542,271,0,4828,4912,1,0,0,0,4829,4830, - 5,320,0,0,4830,4831,5,237,0,0,4831,4832,3,540,270,0,4832,4833,5, - 80,0,0,4833,4834,5,44,0,0,4834,4835,3,524,262,0,4835,4836,5,116, - 0,0,4836,4837,3,542,271,0,4837,4912,1,0,0,0,4838,4839,5,320,0,0, - 4839,4840,5,237,0,0,4840,4841,3,540,270,0,4841,4842,5,80,0,0,4842, - 4843,3,516,258,0,4843,4844,3,1340,670,0,4844,4845,5,116,0,0,4845, - 4846,3,542,271,0,4846,4912,1,0,0,0,4847,4848,5,320,0,0,4848,4849, - 5,237,0,0,4849,4850,3,540,270,0,4850,4851,5,80,0,0,4851,4852,5,353, - 0,0,4852,4853,3,1118,559,0,4853,4854,5,116,0,0,4854,4855,3,542,271, - 0,4855,4912,1,0,0,0,4856,4857,5,320,0,0,4857,4858,5,237,0,0,4858, - 4859,3,540,270,0,4859,4860,5,80,0,0,4860,4861,5,189,0,0,4861,4862, - 3,1118,559,0,4862,4863,5,116,0,0,4863,4864,3,542,271,0,4864,4912, - 1,0,0,0,4865,4866,5,320,0,0,4866,4867,5,237,0,0,4867,4868,3,540, - 270,0,4868,4869,5,80,0,0,4869,4870,5,136,0,0,4870,4871,3,650,325, - 0,4871,4872,5,116,0,0,4872,4873,3,542,271,0,4873,4912,1,0,0,0,4874, - 4875,5,320,0,0,4875,4876,5,237,0,0,4876,4877,3,540,270,0,4877,4878, - 5,80,0,0,4878,4879,5,211,0,0,4879,4880,3,626,313,0,4880,4881,5,116, - 0,0,4881,4882,3,542,271,0,4882,4912,1,0,0,0,4883,4884,5,320,0,0, - 4884,4885,5,237,0,0,4885,4886,3,540,270,0,4886,4887,5,80,0,0,4887, - 4888,5,239,0,0,4888,4889,5,267,0,0,4889,4890,3,292,146,0,4890,4891, - 5,116,0,0,4891,4892,3,542,271,0,4892,4912,1,0,0,0,4893,4894,5,320, - 0,0,4894,4895,5,237,0,0,4895,4896,3,540,270,0,4896,4897,5,80,0,0, - 4897,4898,5,289,0,0,4898,4899,3,626,313,0,4899,4900,5,116,0,0,4900, - 4901,3,542,271,0,4901,4912,1,0,0,0,4902,4903,5,320,0,0,4903,4904, - 5,237,0,0,4904,4905,3,540,270,0,4905,4906,5,80,0,0,4906,4907,5,442, - 0,0,4907,4908,3,626,313,0,4908,4909,5,116,0,0,4909,4910,3,542,271, - 0,4910,4912,1,0,0,0,4911,4820,1,0,0,0,4911,4829,1,0,0,0,4911,4838, - 1,0,0,0,4911,4847,1,0,0,0,4911,4856,1,0,0,0,4911,4865,1,0,0,0,4911, - 4874,1,0,0,0,4911,4883,1,0,0,0,4911,4893,1,0,0,0,4911,4902,1,0,0, - 0,4912,539,1,0,0,0,4913,4914,5,62,0,0,4914,4917,3,72,36,0,4915,4917, - 1,0,0,0,4916,4913,1,0,0,0,4916,4915,1,0,0,0,4917,541,1,0,0,0,4918, - 4921,3,1358,679,0,4919,4921,5,78,0,0,4920,4918,1,0,0,0,4920,4919, - 1,0,0,0,4921,543,1,0,0,0,4922,4923,5,61,0,0,4923,4927,3,546,273, - 0,4924,4925,5,258,0,0,4925,4927,3,546,273,0,4926,4922,1,0,0,0,4926, - 4924,1,0,0,0,4927,545,1,0,0,0,4928,4995,3,954,477,0,4929,4930,3, - 548,274,0,4930,4931,3,954,477,0,4931,4995,1,0,0,0,4932,4933,5,261, - 0,0,4933,4934,3,550,275,0,4934,4935,3,954,477,0,4935,4995,1,0,0, - 0,4936,4937,5,286,0,0,4937,4938,3,550,275,0,4938,4939,3,954,477, - 0,4939,4995,1,0,0,0,4940,4941,5,207,0,0,4941,4942,3,550,275,0,4942, - 4943,3,954,477,0,4943,4995,1,0,0,0,4944,4945,5,240,0,0,4945,4946, - 3,550,275,0,4946,4947,3,954,477,0,4947,4995,1,0,0,0,4948,4949,5, - 130,0,0,4949,4950,3,1364,682,0,4950,4951,3,550,275,0,4951,4952,3, - 954,477,0,4952,4995,1,0,0,0,4953,4954,5,300,0,0,4954,4955,3,1364, - 682,0,4955,4956,3,550,275,0,4956,4957,3,954,477,0,4957,4995,1,0, - 0,0,4958,4959,3,1364,682,0,4959,4960,3,550,275,0,4960,4961,3,954, - 477,0,4961,4995,1,0,0,0,4962,4963,5,30,0,0,4963,4964,3,550,275,0, - 4964,4965,3,954,477,0,4965,4995,1,0,0,0,4966,4967,5,210,0,0,4967, - 4968,3,550,275,0,4968,4969,3,954,477,0,4969,4995,1,0,0,0,4970,4971, - 5,210,0,0,4971,4972,3,1364,682,0,4972,4973,3,550,275,0,4973,4974, - 3,954,477,0,4974,4995,1,0,0,0,4975,4976,5,210,0,0,4976,4977,5,30, - 0,0,4977,4978,3,550,275,0,4978,4979,3,954,477,0,4979,4995,1,0,0, - 0,4980,4981,5,144,0,0,4981,4982,3,550,275,0,4982,4983,3,954,477, - 0,4983,4995,1,0,0,0,4984,4985,5,144,0,0,4985,4986,3,1364,682,0,4986, - 4987,3,550,275,0,4987,4988,3,954,477,0,4988,4995,1,0,0,0,4989,4990, - 5,144,0,0,4990,4991,5,30,0,0,4991,4992,3,550,275,0,4992,4993,3,954, - 477,0,4993,4995,1,0,0,0,4994,4928,1,0,0,0,4994,4929,1,0,0,0,4994, - 4932,1,0,0,0,4994,4936,1,0,0,0,4994,4940,1,0,0,0,4994,4944,1,0,0, - 0,4994,4948,1,0,0,0,4994,4953,1,0,0,0,4994,4958,1,0,0,0,4994,4962, - 1,0,0,0,4994,4966,1,0,0,0,4994,4970,1,0,0,0,4994,4975,1,0,0,0,4994, - 4980,1,0,0,0,4994,4984,1,0,0,0,4994,4989,1,0,0,0,4995,547,1,0,0, - 0,4996,4997,7,24,0,0,4997,549,1,0,0,0,4998,5001,3,548,274,0,4999, - 5001,1,0,0,0,5000,4998,1,0,0,0,5000,4999,1,0,0,0,5001,551,1,0,0, - 0,5002,5003,5,65,0,0,5003,5004,3,556,278,0,5004,5005,5,80,0,0,5005, - 5006,3,562,281,0,5006,5007,5,94,0,0,5007,5008,3,564,282,0,5008,5009, - 3,568,284,0,5009,553,1,0,0,0,5010,5011,5,310,0,0,5011,5012,3,556, - 278,0,5012,5013,5,80,0,0,5013,5014,3,562,281,0,5014,5015,5,64,0, - 0,5015,5016,3,564,282,0,5016,5017,3,108,54,0,5017,5030,1,0,0,0,5018, - 5019,5,310,0,0,5019,5020,5,65,0,0,5020,5021,5,272,0,0,5021,5022, - 5,62,0,0,5022,5023,3,556,278,0,5023,5024,5,80,0,0,5024,5025,3,562, - 281,0,5025,5026,5,64,0,0,5026,5027,3,564,282,0,5027,5028,3,108,54, - 0,5028,5030,1,0,0,0,5029,5010,1,0,0,0,5029,5018,1,0,0,0,5030,555, - 1,0,0,0,5031,5047,3,558,279,0,5032,5047,5,30,0,0,5033,5034,5,30, - 0,0,5034,5047,5,287,0,0,5035,5036,5,30,0,0,5036,5037,5,2,0,0,5037, - 5038,3,216,108,0,5038,5039,5,3,0,0,5039,5047,1,0,0,0,5040,5041,5, - 30,0,0,5041,5042,5,287,0,0,5042,5043,5,2,0,0,5043,5044,3,216,108, - 0,5044,5045,5,3,0,0,5045,5047,1,0,0,0,5046,5031,1,0,0,0,5046,5032, - 1,0,0,0,5046,5033,1,0,0,0,5046,5035,1,0,0,0,5046,5040,1,0,0,0,5047, - 557,1,0,0,0,5048,5053,3,560,280,0,5049,5050,5,6,0,0,5050,5052,3, - 560,280,0,5051,5049,1,0,0,0,5052,5055,1,0,0,0,5053,5051,1,0,0,0, - 5053,5054,1,0,0,0,5054,559,1,0,0,0,5055,5053,1,0,0,0,5056,5057,5, - 88,0,0,5057,5066,3,214,107,0,5058,5059,5,86,0,0,5059,5066,3,214, - 107,0,5060,5061,5,46,0,0,5061,5066,3,214,107,0,5062,5063,3,1372, - 686,0,5063,5064,3,214,107,0,5064,5066,1,0,0,0,5065,5056,1,0,0,0, - 5065,5058,1,0,0,0,5065,5060,1,0,0,0,5065,5062,1,0,0,0,5066,561,1, - 0,0,0,5067,5126,3,1334,667,0,5068,5069,5,92,0,0,5069,5126,3,1334, - 667,0,5070,5071,5,321,0,0,5071,5126,3,1334,667,0,5072,5073,5,63, - 0,0,5073,5074,5,174,0,0,5074,5075,5,374,0,0,5075,5126,3,1338,669, - 0,5076,5077,5,63,0,0,5077,5078,5,324,0,0,5078,5126,3,1338,669,0, - 5079,5080,5,211,0,0,5080,5126,3,624,312,0,5081,5082,5,289,0,0,5082, - 5126,3,624,312,0,5083,5084,5,442,0,0,5084,5126,3,624,312,0,5085, - 5086,5,175,0,0,5086,5126,3,1338,669,0,5087,5088,5,189,0,0,5088,5126, - 3,522,261,0,5089,5090,5,238,0,0,5090,5126,3,1338,669,0,5091,5092, - 5,239,0,0,5092,5093,5,267,0,0,5093,5126,3,294,147,0,5094,5095,5, - 316,0,0,5095,5126,3,1338,669,0,5096,5097,5,344,0,0,5097,5126,3,1338, - 669,0,5098,5099,5,353,0,0,5099,5126,3,522,261,0,5100,5101,5,30,0, - 0,5101,5102,5,343,0,0,5102,5103,5,68,0,0,5103,5104,5,316,0,0,5104, - 5126,3,1338,669,0,5105,5106,5,30,0,0,5106,5107,5,322,0,0,5107,5108, - 5,68,0,0,5108,5109,5,316,0,0,5109,5126,3,1338,669,0,5110,5111,5, - 30,0,0,5111,5112,5,212,0,0,5112,5113,5,68,0,0,5113,5114,5,316,0, - 0,5114,5126,3,1338,669,0,5115,5116,5,30,0,0,5116,5117,5,457,0,0, - 5117,5118,5,68,0,0,5118,5119,5,316,0,0,5119,5126,3,1338,669,0,5120, - 5121,5,30,0,0,5121,5122,5,455,0,0,5122,5123,5,68,0,0,5123,5124,5, - 316,0,0,5124,5126,3,1338,669,0,5125,5067,1,0,0,0,5125,5068,1,0,0, - 0,5125,5070,1,0,0,0,5125,5072,1,0,0,0,5125,5076,1,0,0,0,5125,5079, - 1,0,0,0,5125,5081,1,0,0,0,5125,5083,1,0,0,0,5125,5085,1,0,0,0,5125, - 5087,1,0,0,0,5125,5089,1,0,0,0,5125,5091,1,0,0,0,5125,5094,1,0,0, - 0,5125,5096,1,0,0,0,5125,5098,1,0,0,0,5125,5100,1,0,0,0,5125,5105, - 1,0,0,0,5125,5110,1,0,0,0,5125,5115,1,0,0,0,5125,5120,1,0,0,0,5126, - 563,1,0,0,0,5127,5132,3,566,283,0,5128,5129,5,6,0,0,5129,5131,3, - 566,283,0,5130,5128,1,0,0,0,5131,5134,1,0,0,0,5132,5130,1,0,0,0, - 5132,5133,1,0,0,0,5133,565,1,0,0,0,5134,5132,1,0,0,0,5135,5139,3, - 1368,684,0,5136,5137,5,66,0,0,5137,5139,3,1368,684,0,5138,5135,1, - 0,0,0,5138,5136,1,0,0,0,5139,567,1,0,0,0,5140,5141,5,105,0,0,5141, - 5142,5,65,0,0,5142,5145,5,272,0,0,5143,5145,1,0,0,0,5144,5140,1, - 0,0,0,5144,5143,1,0,0,0,5145,569,1,0,0,0,5146,5147,5,65,0,0,5147, - 5148,3,558,279,0,5148,5149,5,94,0,0,5149,5150,3,1370,685,0,5150, - 5151,3,574,287,0,5151,5152,3,576,288,0,5152,571,1,0,0,0,5153,5154, - 5,310,0,0,5154,5155,3,558,279,0,5155,5156,5,64,0,0,5156,5157,3,1370, - 685,0,5157,5158,3,576,288,0,5158,5159,3,108,54,0,5159,5171,1,0,0, - 0,5160,5161,5,310,0,0,5161,5162,5,134,0,0,5162,5163,5,272,0,0,5163, - 5164,5,62,0,0,5164,5165,3,558,279,0,5165,5166,5,64,0,0,5166,5167, - 3,1370,685,0,5167,5168,3,576,288,0,5168,5169,3,108,54,0,5169,5171, - 1,0,0,0,5170,5153,1,0,0,0,5170,5160,1,0,0,0,5171,573,1,0,0,0,5172, - 5173,5,105,0,0,5173,5174,5,134,0,0,5174,5177,5,272,0,0,5175,5177, - 1,0,0,0,5176,5172,1,0,0,0,5176,5175,1,0,0,0,5177,575,1,0,0,0,5178, - 5179,5,214,0,0,5179,5180,5,147,0,0,5180,5183,3,1368,684,0,5181,5183, - 1,0,0,0,5182,5178,1,0,0,0,5182,5181,1,0,0,0,5183,577,1,0,0,0,5184, - 5185,5,138,0,0,5185,5186,5,53,0,0,5186,5187,5,287,0,0,5187,5188, - 3,580,290,0,5188,5189,3,584,292,0,5189,579,1,0,0,0,5190,5192,3,582, - 291,0,5191,5190,1,0,0,0,5192,5195,1,0,0,0,5193,5191,1,0,0,0,5193, - 5194,1,0,0,0,5194,581,1,0,0,0,5195,5193,1,0,0,0,5196,5197,5,68,0, - 0,5197,5198,5,316,0,0,5198,5206,3,1338,669,0,5199,5200,5,62,0,0, - 5200,5201,5,311,0,0,5201,5206,3,1370,685,0,5202,5203,5,62,0,0,5203, - 5204,5,99,0,0,5204,5206,3,1370,685,0,5205,5196,1,0,0,0,5205,5199, - 1,0,0,0,5205,5202,1,0,0,0,5206,583,1,0,0,0,5207,5208,5,65,0,0,5208, - 5209,3,556,278,0,5209,5210,5,80,0,0,5210,5211,3,586,293,0,5211,5212, - 5,94,0,0,5212,5213,3,564,282,0,5213,5214,3,568,284,0,5214,5235,1, - 0,0,0,5215,5216,5,310,0,0,5216,5217,3,556,278,0,5217,5218,5,80,0, - 0,5218,5219,3,586,293,0,5219,5220,5,64,0,0,5220,5221,3,564,282,0, - 5221,5222,3,108,54,0,5222,5235,1,0,0,0,5223,5224,5,310,0,0,5224, - 5225,5,65,0,0,5225,5226,5,272,0,0,5226,5227,5,62,0,0,5227,5228,3, - 556,278,0,5228,5229,5,80,0,0,5229,5230,3,586,293,0,5230,5231,5,64, - 0,0,5231,5232,3,564,282,0,5232,5233,3,108,54,0,5233,5235,1,0,0,0, - 5234,5207,1,0,0,0,5234,5215,1,0,0,0,5234,5223,1,0,0,0,5235,585,1, - 0,0,0,5236,5237,7,25,0,0,5237,587,1,0,0,0,5238,5239,5,46,0,0,5239, - 5240,3,590,295,0,5240,5241,5,226,0,0,5241,5242,3,592,296,0,5242, - 5243,3,594,297,0,5243,5244,5,80,0,0,5244,5245,3,1074,537,0,5245, - 5246,3,596,298,0,5246,5247,5,2,0,0,5247,5248,3,598,299,0,5248,5249, - 5,3,0,0,5249,5250,3,604,302,0,5250,5251,3,118,59,0,5251,5252,3,254, - 127,0,5252,5253,3,1094,547,0,5253,5274,1,0,0,0,5254,5255,5,46,0, - 0,5255,5256,3,590,295,0,5256,5257,5,226,0,0,5257,5258,3,592,296, - 0,5258,5259,5,220,0,0,5259,5260,5,77,0,0,5260,5261,5,389,0,0,5261, - 5262,3,1340,670,0,5262,5263,5,80,0,0,5263,5264,3,1074,537,0,5264, - 5265,3,596,298,0,5265,5266,5,2,0,0,5266,5267,3,598,299,0,5267,5268, - 5,3,0,0,5268,5269,3,604,302,0,5269,5270,3,118,59,0,5270,5271,3,254, - 127,0,5271,5272,3,1094,547,0,5272,5274,1,0,0,0,5273,5238,1,0,0,0, - 5273,5254,1,0,0,0,5274,589,1,0,0,0,5275,5278,5,98,0,0,5276,5278, - 1,0,0,0,5277,5275,1,0,0,0,5277,5276,1,0,0,0,5278,591,1,0,0,0,5279, - 5282,5,109,0,0,5280,5282,1,0,0,0,5281,5279,1,0,0,0,5281,5280,1,0, - 0,0,5282,593,1,0,0,0,5283,5286,3,1340,670,0,5284,5286,1,0,0,0,5285, - 5283,1,0,0,0,5285,5284,1,0,0,0,5286,595,1,0,0,0,5287,5288,5,100, - 0,0,5288,5291,3,1340,670,0,5289,5291,1,0,0,0,5290,5287,1,0,0,0,5290, - 5289,1,0,0,0,5291,597,1,0,0,0,5292,5297,3,602,301,0,5293,5294,5, - 6,0,0,5294,5296,3,602,301,0,5295,5293,1,0,0,0,5296,5299,1,0,0,0, - 5297,5295,1,0,0,0,5297,5298,1,0,0,0,5298,599,1,0,0,0,5299,5297,1, - 0,0,0,5300,5301,3,608,304,0,5301,5302,3,610,305,0,5302,5303,3,612, - 306,0,5303,5304,3,614,307,0,5304,5312,1,0,0,0,5305,5306,3,608,304, - 0,5306,5307,3,524,262,0,5307,5308,3,116,58,0,5308,5309,3,612,306, - 0,5309,5310,3,614,307,0,5310,5312,1,0,0,0,5311,5300,1,0,0,0,5311, - 5305,1,0,0,0,5312,601,1,0,0,0,5313,5314,3,1372,686,0,5314,5315,3, - 600,300,0,5315,5325,1,0,0,0,5316,5317,3,1214,607,0,5317,5318,3,600, - 300,0,5318,5325,1,0,0,0,5319,5320,5,2,0,0,5320,5321,3,1162,581,0, - 5321,5322,5,3,0,0,5322,5323,3,600,300,0,5323,5325,1,0,0,0,5324,5313, - 1,0,0,0,5324,5316,1,0,0,0,5324,5319,1,0,0,0,5325,603,1,0,0,0,5326, - 5327,5,441,0,0,5327,5328,5,2,0,0,5328,5329,3,606,303,0,5329,5330, - 5,3,0,0,5330,5333,1,0,0,0,5331,5333,1,0,0,0,5332,5326,1,0,0,0,5332, - 5331,1,0,0,0,5333,605,1,0,0,0,5334,5339,3,602,301,0,5335,5336,5, - 6,0,0,5336,5338,3,602,301,0,5337,5335,1,0,0,0,5338,5341,1,0,0,0, - 5339,5337,1,0,0,0,5339,5340,1,0,0,0,5340,607,1,0,0,0,5341,5339,1, - 0,0,0,5342,5343,5,43,0,0,5343,5346,3,524,262,0,5344,5346,1,0,0,0, - 5345,5342,1,0,0,0,5345,5344,1,0,0,0,5346,609,1,0,0,0,5347,5350,3, - 524,262,0,5348,5350,1,0,0,0,5349,5347,1,0,0,0,5349,5348,1,0,0,0, - 5350,611,1,0,0,0,5351,5355,5,37,0,0,5352,5355,5,55,0,0,5353,5355, - 1,0,0,0,5354,5351,1,0,0,0,5354,5352,1,0,0,0,5354,5353,1,0,0,0,5355, - 613,1,0,0,0,5356,5357,5,266,0,0,5357,5362,5,207,0,0,5358,5359,5, - 266,0,0,5359,5362,5,240,0,0,5360,5362,1,0,0,0,5361,5356,1,0,0,0, - 5361,5358,1,0,0,0,5361,5360,1,0,0,0,5362,615,1,0,0,0,5363,5364,5, - 46,0,0,5364,5365,3,618,309,0,5365,5366,7,22,0,0,5366,5367,3,1346, - 673,0,5367,5377,3,628,314,0,5368,5375,5,309,0,0,5369,5376,3,638, - 319,0,5370,5371,5,92,0,0,5371,5372,5,2,0,0,5372,5373,3,668,334,0, - 5373,5374,5,3,0,0,5374,5376,1,0,0,0,5375,5369,1,0,0,0,5375,5370, - 1,0,0,0,5376,5378,1,0,0,0,5377,5368,1,0,0,0,5377,5378,1,0,0,0,5378, - 5379,1,0,0,0,5379,5380,3,654,327,0,5380,617,1,0,0,0,5381,5382,5, - 82,0,0,5382,5385,5,304,0,0,5383,5385,1,0,0,0,5384,5381,1,0,0,0,5384, - 5383,1,0,0,0,5385,619,1,0,0,0,5386,5388,5,2,0,0,5387,5389,3,622, - 311,0,5388,5387,1,0,0,0,5388,5389,1,0,0,0,5389,5390,1,0,0,0,5390, - 5391,5,3,0,0,5391,621,1,0,0,0,5392,5397,3,632,316,0,5393,5394,5, - 6,0,0,5394,5396,3,632,316,0,5395,5393,1,0,0,0,5396,5399,1,0,0,0, - 5397,5395,1,0,0,0,5397,5398,1,0,0,0,5398,623,1,0,0,0,5399,5397,1, - 0,0,0,5400,5405,3,626,313,0,5401,5402,5,6,0,0,5402,5404,3,626,313, - 0,5403,5401,1,0,0,0,5404,5407,1,0,0,0,5405,5403,1,0,0,0,5405,5406, - 1,0,0,0,5406,625,1,0,0,0,5407,5405,1,0,0,0,5408,5409,3,1346,673, - 0,5409,5410,3,620,310,0,5410,5417,1,0,0,0,5411,5417,3,1390,695,0, - 5412,5414,3,1372,686,0,5413,5415,3,1324,662,0,5414,5413,1,0,0,0, - 5414,5415,1,0,0,0,5415,5417,1,0,0,0,5416,5408,1,0,0,0,5416,5411, - 1,0,0,0,5416,5412,1,0,0,0,5417,627,1,0,0,0,5418,5420,5,2,0,0,5419, - 5421,3,630,315,0,5420,5419,1,0,0,0,5420,5421,1,0,0,0,5421,5422,1, - 0,0,0,5422,5423,5,3,0,0,5423,629,1,0,0,0,5424,5429,3,642,321,0,5425, - 5426,5,6,0,0,5426,5428,3,642,321,0,5427,5425,1,0,0,0,5428,5431,1, - 0,0,0,5429,5427,1,0,0,0,5429,5430,1,0,0,0,5430,631,1,0,0,0,5431, - 5429,1,0,0,0,5432,5434,3,634,317,0,5433,5435,3,636,318,0,5434,5433, - 1,0,0,0,5434,5435,1,0,0,0,5435,5436,1,0,0,0,5436,5437,3,640,320, - 0,5437,5446,1,0,0,0,5438,5440,3,636,318,0,5439,5441,3,634,317,0, - 5440,5439,1,0,0,0,5440,5441,1,0,0,0,5441,5442,1,0,0,0,5442,5443, - 3,640,320,0,5443,5446,1,0,0,0,5444,5446,3,640,320,0,5445,5432,1, - 0,0,0,5445,5438,1,0,0,0,5445,5444,1,0,0,0,5446,633,1,0,0,0,5447, - 5449,5,68,0,0,5448,5450,5,453,0,0,5449,5448,1,0,0,0,5449,5450,1, - 0,0,0,5450,5455,1,0,0,0,5451,5455,5,453,0,0,5452,5455,5,393,0,0, - 5453,5455,5,101,0,0,5454,5447,1,0,0,0,5454,5451,1,0,0,0,5454,5452, - 1,0,0,0,5454,5453,1,0,0,0,5455,635,1,0,0,0,5456,5461,3,1376,688, - 0,5457,5461,3,1394,697,0,5458,5461,5,119,0,0,5459,5461,5,126,0,0, - 5460,5456,1,0,0,0,5460,5457,1,0,0,0,5460,5458,1,0,0,0,5460,5459, - 1,0,0,0,5461,637,1,0,0,0,5462,5463,3,640,320,0,5463,639,1,0,0,0, - 5464,5479,3,1118,559,0,5465,5467,5,408,0,0,5466,5465,1,0,0,0,5466, - 5467,1,0,0,0,5467,5472,1,0,0,0,5468,5473,3,1394,697,0,5469,5473, - 3,1376,688,0,5470,5473,5,119,0,0,5471,5473,5,126,0,0,5472,5468,1, - 0,0,0,5472,5469,1,0,0,0,5472,5470,1,0,0,0,5472,5471,1,0,0,0,5473, - 5474,1,0,0,0,5474,5475,3,526,263,0,5475,5476,5,27,0,0,5476,5477, - 5,353,0,0,5477,5479,1,0,0,0,5478,5464,1,0,0,0,5478,5466,1,0,0,0, - 5479,641,1,0,0,0,5480,5483,3,632,316,0,5481,5482,7,26,0,0,5482,5484, - 3,1162,581,0,5483,5481,1,0,0,0,5483,5484,1,0,0,0,5484,643,1,0,0, - 0,5485,5486,3,632,316,0,5486,645,1,0,0,0,5487,5498,5,2,0,0,5488, - 5499,5,9,0,0,5489,5499,3,648,324,0,5490,5491,5,83,0,0,5491,5492, - 5,147,0,0,5492,5499,3,648,324,0,5493,5494,3,648,324,0,5494,5495, - 5,83,0,0,5495,5496,5,147,0,0,5496,5497,3,648,324,0,5497,5499,1,0, - 0,0,5498,5488,1,0,0,0,5498,5489,1,0,0,0,5498,5490,1,0,0,0,5498,5493, - 1,0,0,0,5499,5500,1,0,0,0,5500,5501,5,3,0,0,5501,647,1,0,0,0,5502, - 5507,3,644,322,0,5503,5504,5,6,0,0,5504,5506,3,644,322,0,5505,5503, - 1,0,0,0,5506,5509,1,0,0,0,5507,5505,1,0,0,0,5507,5508,1,0,0,0,5508, - 649,1,0,0,0,5509,5507,1,0,0,0,5510,5511,3,1346,673,0,5511,5512,3, - 646,323,0,5512,651,1,0,0,0,5513,5518,3,650,325,0,5514,5515,5,6,0, - 0,5515,5517,3,650,325,0,5516,5514,1,0,0,0,5517,5520,1,0,0,0,5518, - 5516,1,0,0,0,5518,5519,1,0,0,0,5519,653,1,0,0,0,5520,5518,1,0,0, - 0,5521,5523,3,658,329,0,5522,5521,1,0,0,0,5523,5524,1,0,0,0,5524, - 5522,1,0,0,0,5524,5525,1,0,0,0,5525,5526,1,0,0,0,5526,5527,6,327, - -1,0,5527,655,1,0,0,0,5528,5529,5,149,0,0,5529,5530,5,80,0,0,5530, - 5531,5,78,0,0,5531,5564,5,458,0,0,5532,5533,5,309,0,0,5533,5534, - 5,78,0,0,5534,5535,5,80,0,0,5535,5536,5,78,0,0,5536,5564,5,458,0, - 0,5537,5564,5,339,0,0,5538,5564,5,222,0,0,5539,5564,5,331,0,0,5540, - 5564,5,370,0,0,5541,5542,5,205,0,0,5542,5543,5,320,0,0,5543,5564, - 5,181,0,0,5544,5545,5,205,0,0,5545,5546,5,320,0,0,5546,5564,5,234, - 0,0,5547,5548,5,320,0,0,5548,5564,5,181,0,0,5549,5550,5,320,0,0, - 5550,5564,5,234,0,0,5551,5564,5,241,0,0,5552,5553,5,77,0,0,5553, - 5564,5,241,0,0,5554,5555,5,170,0,0,5555,5564,3,292,146,0,5556,5557, - 5,313,0,0,5557,5564,3,292,146,0,5558,5559,5,459,0,0,5559,5564,3, - 524,262,0,5560,5564,3,82,41,0,5561,5562,5,460,0,0,5562,5564,3,1372, - 686,0,5563,5528,1,0,0,0,5563,5532,1,0,0,0,5563,5537,1,0,0,0,5563, - 5538,1,0,0,0,5563,5539,1,0,0,0,5563,5540,1,0,0,0,5563,5541,1,0,0, - 0,5563,5544,1,0,0,0,5563,5547,1,0,0,0,5563,5549,1,0,0,0,5563,5551, - 1,0,0,0,5563,5552,1,0,0,0,5563,5554,1,0,0,0,5563,5556,1,0,0,0,5563, - 5558,1,0,0,0,5563,5560,1,0,0,0,5563,5561,1,0,0,0,5564,657,1,0,0, - 0,5565,5566,5,36,0,0,5566,5574,3,660,330,0,5567,5568,5,238,0,0,5568, - 5574,3,72,36,0,5569,5570,5,443,0,0,5570,5574,3,662,331,0,5571,5574, - 5,104,0,0,5572,5574,3,656,328,0,5573,5565,1,0,0,0,5573,5567,1,0, - 0,0,5573,5569,1,0,0,0,5573,5571,1,0,0,0,5573,5572,1,0,0,0,5574,659, - 1,0,0,0,5575,5581,3,1358,679,0,5576,5577,3,1358,679,0,5577,5578, - 5,6,0,0,5578,5579,3,1358,679,0,5579,5581,1,0,0,0,5580,5575,1,0,0, - 0,5580,5576,1,0,0,0,5581,661,1,0,0,0,5582,5583,5,62,0,0,5583,5584, - 5,353,0,0,5584,5591,3,1118,559,0,5585,5586,5,6,0,0,5586,5587,5,62, - 0,0,5587,5588,5,353,0,0,5588,5590,3,1118,559,0,5589,5585,1,0,0,0, - 5590,5593,1,0,0,0,5591,5589,1,0,0,0,5591,5592,1,0,0,0,5592,663,1, - 0,0,0,5593,5591,1,0,0,0,5594,5595,5,105,0,0,5595,5598,3,460,230, - 0,5596,5598,1,0,0,0,5597,5594,1,0,0,0,5597,5596,1,0,0,0,5598,665, - 1,0,0,0,5599,5600,3,636,318,0,5600,5601,3,640,320,0,5601,667,1,0, - 0,0,5602,5607,3,666,333,0,5603,5604,5,6,0,0,5604,5606,3,666,333, - 0,5605,5603,1,0,0,0,5606,5609,1,0,0,0,5607,5605,1,0,0,0,5607,5608, - 1,0,0,0,5608,669,1,0,0,0,5609,5607,1,0,0,0,5610,5611,5,138,0,0,5611, - 5612,7,27,0,0,5612,5613,3,626,313,0,5613,5614,3,672,336,0,5614,5615, - 3,674,337,0,5615,671,1,0,0,0,5616,5618,3,656,328,0,5617,5616,1,0, - 0,0,5618,5619,1,0,0,0,5619,5617,1,0,0,0,5619,5620,1,0,0,0,5620,673, - 1,0,0,0,5621,5624,5,308,0,0,5622,5624,1,0,0,0,5623,5621,1,0,0,0, - 5623,5622,1,0,0,0,5624,675,1,0,0,0,5625,5626,5,191,0,0,5626,5627, - 5,211,0,0,5627,5628,3,624,312,0,5628,5629,3,108,54,0,5629,5662,1, - 0,0,0,5630,5631,5,191,0,0,5631,5632,5,211,0,0,5632,5633,5,220,0, - 0,5633,5634,5,389,0,0,5634,5635,3,624,312,0,5635,5636,3,108,54,0, - 5636,5662,1,0,0,0,5637,5638,5,191,0,0,5638,5639,5,289,0,0,5639,5640, - 3,624,312,0,5640,5641,3,108,54,0,5641,5662,1,0,0,0,5642,5643,5,191, - 0,0,5643,5644,5,289,0,0,5644,5645,5,220,0,0,5645,5646,5,389,0,0, - 5646,5647,3,624,312,0,5647,5648,3,108,54,0,5648,5662,1,0,0,0,5649, - 5650,5,191,0,0,5650,5651,5,442,0,0,5651,5652,3,624,312,0,5652,5653, - 3,108,54,0,5653,5662,1,0,0,0,5654,5655,5,191,0,0,5655,5656,5,442, - 0,0,5656,5657,5,220,0,0,5657,5658,5,389,0,0,5658,5659,3,624,312, - 0,5659,5660,3,108,54,0,5660,5662,1,0,0,0,5661,5625,1,0,0,0,5661, - 5630,1,0,0,0,5661,5637,1,0,0,0,5661,5642,1,0,0,0,5661,5649,1,0,0, - 0,5661,5654,1,0,0,0,5662,677,1,0,0,0,5663,5664,5,191,0,0,5664,5665, - 5,136,0,0,5665,5666,3,652,326,0,5666,5667,3,108,54,0,5667,5676,1, - 0,0,0,5668,5669,5,191,0,0,5669,5670,5,136,0,0,5670,5671,5,220,0, - 0,5671,5672,5,389,0,0,5672,5673,3,652,326,0,5673,5674,3,108,54,0, - 5674,5676,1,0,0,0,5675,5663,1,0,0,0,5675,5668,1,0,0,0,5676,679,1, - 0,0,0,5677,5678,5,191,0,0,5678,5679,5,271,0,0,5679,5680,3,686,343, - 0,5680,5681,3,108,54,0,5681,5690,1,0,0,0,5682,5683,5,191,0,0,5683, - 5684,5,271,0,0,5684,5685,5,220,0,0,5685,5686,5,389,0,0,5686,5687, - 3,686,343,0,5687,5688,3,108,54,0,5688,5690,1,0,0,0,5689,5677,1,0, - 0,0,5689,5682,1,0,0,0,5690,681,1,0,0,0,5691,5692,5,2,0,0,5692,5693, - 3,1118,559,0,5693,5694,5,3,0,0,5694,5714,1,0,0,0,5695,5696,5,2,0, - 0,5696,5697,3,1118,559,0,5697,5698,5,6,0,0,5698,5699,3,1118,559, - 0,5699,5700,5,3,0,0,5700,5714,1,0,0,0,5701,5702,5,2,0,0,5702,5703, - 5,400,0,0,5703,5704,5,6,0,0,5704,5705,3,1118,559,0,5705,5706,5,3, - 0,0,5706,5714,1,0,0,0,5707,5708,5,2,0,0,5708,5709,3,1118,559,0,5709, - 5710,5,6,0,0,5710,5711,5,400,0,0,5711,5712,5,3,0,0,5712,5714,1,0, - 0,0,5713,5691,1,0,0,0,5713,5695,1,0,0,0,5713,5701,1,0,0,0,5713,5707, - 1,0,0,0,5714,683,1,0,0,0,5715,5716,3,1372,686,0,5716,5717,5,11,0, - 0,5717,5719,1,0,0,0,5718,5715,1,0,0,0,5719,5722,1,0,0,0,5720,5718, - 1,0,0,0,5720,5721,1,0,0,0,5721,5723,1,0,0,0,5722,5720,1,0,0,0,5723, - 5724,3,1270,635,0,5724,685,1,0,0,0,5725,5730,3,688,344,0,5726,5727, - 5,6,0,0,5727,5729,3,688,344,0,5728,5726,1,0,0,0,5729,5732,1,0,0, - 0,5730,5728,1,0,0,0,5730,5731,1,0,0,0,5731,687,1,0,0,0,5732,5730, - 1,0,0,0,5733,5734,3,684,342,0,5734,5735,3,682,341,0,5735,689,1,0, - 0,0,5736,5737,5,57,0,0,5737,5738,3,692,346,0,5738,691,1,0,0,0,5739, - 5741,3,694,347,0,5740,5739,1,0,0,0,5741,5742,1,0,0,0,5742,5740,1, - 0,0,0,5742,5743,1,0,0,0,5743,693,1,0,0,0,5744,5748,3,1358,679,0, - 5745,5746,5,238,0,0,5746,5748,3,72,36,0,5747,5744,1,0,0,0,5747,5745, - 1,0,0,0,5748,695,1,0,0,0,5749,5750,5,46,0,0,5750,5751,5,41,0,0,5751, - 5752,5,2,0,0,5752,5753,3,1118,559,0,5753,5754,5,36,0,0,5754,5755, - 3,1118,559,0,5755,5756,5,3,0,0,5756,5757,5,105,0,0,5757,5758,5,211, - 0,0,5758,5759,3,626,313,0,5759,5760,3,698,349,0,5760,5784,1,0,0, - 0,5761,5762,5,46,0,0,5762,5763,5,41,0,0,5763,5764,5,2,0,0,5764,5765, - 3,1118,559,0,5765,5766,5,36,0,0,5766,5767,3,1118,559,0,5767,5768, - 5,3,0,0,5768,5769,5,372,0,0,5769,5770,5,211,0,0,5770,5771,3,698, - 349,0,5771,5784,1,0,0,0,5772,5773,5,46,0,0,5773,5774,5,41,0,0,5774, - 5775,5,2,0,0,5775,5776,3,1118,559,0,5776,5777,5,36,0,0,5777,5778, - 3,1118,559,0,5778,5779,5,3,0,0,5779,5780,5,105,0,0,5780,5781,5,393, - 0,0,5781,5782,3,698,349,0,5782,5784,1,0,0,0,5783,5749,1,0,0,0,5783, - 5761,1,0,0,0,5783,5772,1,0,0,0,5784,697,1,0,0,0,5785,5786,5,36,0, - 0,5786,5791,5,223,0,0,5787,5788,5,36,0,0,5788,5791,5,141,0,0,5789, - 5791,1,0,0,0,5790,5785,1,0,0,0,5790,5787,1,0,0,0,5790,5789,1,0,0, - 0,5791,699,1,0,0,0,5792,5793,5,191,0,0,5793,5794,5,41,0,0,5794,5795, - 3,702,351,0,5795,5796,5,2,0,0,5796,5797,3,1118,559,0,5797,5798,5, - 36,0,0,5798,5799,3,1118,559,0,5799,5800,5,3,0,0,5800,5801,3,108, - 54,0,5801,701,1,0,0,0,5802,5803,5,220,0,0,5803,5806,5,389,0,0,5804, - 5806,1,0,0,0,5805,5802,1,0,0,0,5805,5804,1,0,0,0,5806,703,1,0,0, - 0,5807,5808,5,46,0,0,5808,5809,3,618,309,0,5809,5810,5,443,0,0,5810, - 5811,5,62,0,0,5811,5812,3,1118,559,0,5812,5813,5,238,0,0,5813,5814, - 3,1340,670,0,5814,5815,5,2,0,0,5815,5816,3,706,353,0,5816,5817,5, - 3,0,0,5817,705,1,0,0,0,5818,5819,5,64,0,0,5819,5820,5,461,0,0,5820, - 5821,5,105,0,0,5821,5822,5,211,0,0,5822,5823,3,626,313,0,5823,5824, - 5,6,0,0,5824,5825,5,94,0,0,5825,5826,5,461,0,0,5826,5827,5,105,0, - 0,5827,5828,5,211,0,0,5828,5829,3,626,313,0,5829,5853,1,0,0,0,5830, - 5831,5,94,0,0,5831,5832,5,461,0,0,5832,5833,5,105,0,0,5833,5834, - 5,211,0,0,5834,5835,3,626,313,0,5835,5836,5,6,0,0,5836,5837,5,64, - 0,0,5837,5838,5,461,0,0,5838,5839,5,105,0,0,5839,5840,5,211,0,0, - 5840,5841,3,626,313,0,5841,5853,1,0,0,0,5842,5843,5,64,0,0,5843, - 5844,5,461,0,0,5844,5845,5,105,0,0,5845,5846,5,211,0,0,5846,5853, - 3,626,313,0,5847,5848,5,94,0,0,5848,5849,5,461,0,0,5849,5850,5,105, - 0,0,5850,5851,5,211,0,0,5851,5853,3,626,313,0,5852,5818,1,0,0,0, - 5852,5830,1,0,0,0,5852,5842,1,0,0,0,5852,5847,1,0,0,0,5853,707,1, - 0,0,0,5854,5855,5,191,0,0,5855,5856,5,443,0,0,5856,5857,3,702,351, - 0,5857,5858,5,62,0,0,5858,5859,3,1118,559,0,5859,5860,5,238,0,0, - 5860,5861,3,1340,670,0,5861,5862,3,108,54,0,5862,709,1,0,0,0,5863, - 5864,5,299,0,0,5864,5865,3,712,356,0,5865,5866,3,592,296,0,5866, - 5867,3,1336,668,0,5867,5890,1,0,0,0,5868,5869,5,299,0,0,5869,5870, - 3,714,357,0,5870,5871,3,592,296,0,5871,5872,3,1340,670,0,5872,5890, - 1,0,0,0,5873,5874,5,299,0,0,5874,5875,5,2,0,0,5875,5876,3,716,358, - 0,5876,5877,5,3,0,0,5877,5878,3,712,356,0,5878,5879,3,592,296,0, - 5879,5880,3,1336,668,0,5880,5890,1,0,0,0,5881,5882,5,299,0,0,5882, - 5883,5,2,0,0,5883,5884,3,716,358,0,5884,5885,5,3,0,0,5885,5886,3, - 714,357,0,5886,5887,3,592,296,0,5887,5888,3,1340,670,0,5888,5890, - 1,0,0,0,5889,5863,1,0,0,0,5889,5868,1,0,0,0,5889,5873,1,0,0,0,5889, - 5881,1,0,0,0,5890,711,1,0,0,0,5891,5892,7,28,0,0,5892,713,1,0,0, - 0,5893,5894,7,29,0,0,5894,715,1,0,0,0,5895,5900,3,718,359,0,5896, - 5897,5,6,0,0,5897,5899,3,718,359,0,5898,5896,1,0,0,0,5899,5902,1, - 0,0,0,5900,5898,1,0,0,0,5900,5901,1,0,0,0,5901,717,1,0,0,0,5902, - 5900,1,0,0,0,5903,5904,7,30,0,0,5904,719,1,0,0,0,5905,5906,5,138, - 0,0,5906,5907,5,344,0,0,5907,5908,3,1340,670,0,5908,5909,5,326,0, - 0,5909,5910,3,116,58,0,5910,5918,1,0,0,0,5911,5912,5,138,0,0,5912, - 5913,5,344,0,0,5913,5914,3,1340,670,0,5914,5915,5,306,0,0,5915,5916, - 3,116,58,0,5916,5918,1,0,0,0,5917,5905,1,0,0,0,5917,5911,1,0,0,0, - 5918,721,1,0,0,0,5919,5920,5,138,0,0,5920,5921,5,136,0,0,5921,5922, - 3,650,325,0,5922,5923,5,302,0,0,5923,5924,5,94,0,0,5924,5925,3,1340, - 670,0,5925,6388,1,0,0,0,5926,5927,5,138,0,0,5927,5928,5,108,0,0, - 5928,5929,3,524,262,0,5929,5930,5,302,0,0,5930,5931,5,94,0,0,5931, - 5932,3,1340,670,0,5932,6388,1,0,0,0,5933,5934,5,138,0,0,5934,5935, - 5,168,0,0,5935,5936,3,524,262,0,5936,5937,5,302,0,0,5937,5938,5, - 94,0,0,5938,5939,3,1340,670,0,5939,6388,1,0,0,0,5940,5941,5,138, - 0,0,5941,5942,5,175,0,0,5942,5943,3,1340,670,0,5943,5944,5,302,0, - 0,5944,5945,5,94,0,0,5945,5946,3,1340,670,0,5946,6388,1,0,0,0,5947, - 5948,5,138,0,0,5948,5949,5,189,0,0,5949,5950,3,524,262,0,5950,5951, - 5,302,0,0,5951,5952,5,94,0,0,5952,5953,3,1340,670,0,5953,6388,1, - 0,0,0,5954,5955,5,138,0,0,5955,5956,5,189,0,0,5956,5957,3,524,262, - 0,5957,5958,5,302,0,0,5958,5959,5,45,0,0,5959,5960,3,1340,670,0, - 5960,5961,5,94,0,0,5961,5962,3,1340,670,0,5962,6388,1,0,0,0,5963, - 5964,5,138,0,0,5964,5965,5,63,0,0,5965,5966,5,174,0,0,5966,5967, - 5,374,0,0,5967,5968,3,1340,670,0,5968,5969,5,302,0,0,5969,5970,5, - 94,0,0,5970,5971,3,1340,670,0,5971,6388,1,0,0,0,5972,5973,5,138, - 0,0,5973,5974,5,211,0,0,5974,5975,3,626,313,0,5975,5976,5,302,0, - 0,5976,5977,5,94,0,0,5977,5978,3,1340,670,0,5978,6388,1,0,0,0,5979, - 5980,5,138,0,0,5980,5981,5,66,0,0,5981,5982,3,1366,683,0,5982,5983, - 5,302,0,0,5983,5984,5,94,0,0,5984,5985,3,1366,683,0,5985,6388,1, - 0,0,0,5986,5987,5,138,0,0,5987,5988,3,308,154,0,5988,5989,5,238, - 0,0,5989,5990,3,1340,670,0,5990,5991,5,302,0,0,5991,5992,5,94,0, - 0,5992,5993,3,1340,670,0,5993,6388,1,0,0,0,5994,5995,5,138,0,0,5995, - 5996,5,271,0,0,5996,5997,5,156,0,0,5997,5998,3,524,262,0,5998,5999, - 5,100,0,0,5999,6000,3,1340,670,0,6000,6001,5,302,0,0,6001,6002,5, - 94,0,0,6002,6003,3,1340,670,0,6003,6388,1,0,0,0,6004,6005,5,138, - 0,0,6005,6006,5,271,0,0,6006,6007,5,206,0,0,6007,6008,3,524,262, - 0,6008,6009,5,100,0,0,6009,6010,3,1340,670,0,6010,6011,5,302,0,0, - 6011,6012,5,94,0,0,6012,6013,3,1340,670,0,6013,6388,1,0,0,0,6014, - 6015,5,138,0,0,6015,6016,5,445,0,0,6016,6017,3,1340,670,0,6017,6018, - 5,80,0,0,6018,6019,3,1336,668,0,6019,6020,5,302,0,0,6020,6021,5, - 94,0,0,6021,6022,3,1340,670,0,6022,6388,1,0,0,0,6023,6024,5,138, - 0,0,6024,6025,5,445,0,0,6025,6026,5,220,0,0,6026,6027,5,389,0,0, - 6027,6028,3,1340,670,0,6028,6029,5,80,0,0,6029,6030,3,1336,668,0, - 6030,6031,5,302,0,0,6031,6032,5,94,0,0,6032,6033,3,1340,670,0,6033, - 6388,1,0,0,0,6034,6035,5,138,0,0,6035,6036,5,289,0,0,6036,6037,3, - 626,313,0,6037,6038,5,302,0,0,6038,6039,5,94,0,0,6039,6040,3,1340, - 670,0,6040,6388,1,0,0,0,6041,6042,5,138,0,0,6042,6043,5,452,0,0, - 6043,6044,3,1340,670,0,6044,6045,5,302,0,0,6045,6046,5,94,0,0,6046, - 6047,3,1340,670,0,6047,6388,1,0,0,0,6048,6049,5,138,0,0,6049,6050, - 5,442,0,0,6050,6051,3,626,313,0,6051,6052,5,302,0,0,6052,6053,5, - 94,0,0,6053,6054,3,1340,670,0,6054,6388,1,0,0,0,6055,6056,5,138, - 0,0,6056,6057,5,316,0,0,6057,6058,3,1340,670,0,6058,6059,5,302,0, - 0,6059,6060,5,94,0,0,6060,6061,3,1340,670,0,6061,6388,1,0,0,0,6062, - 6063,5,138,0,0,6063,6064,5,324,0,0,6064,6065,3,1340,670,0,6065,6066, - 5,302,0,0,6066,6067,5,94,0,0,6067,6068,3,1340,670,0,6068,6388,1, - 0,0,0,6069,6070,5,138,0,0,6070,6071,5,451,0,0,6071,6072,3,1340,670, - 0,6072,6073,5,302,0,0,6073,6074,5,94,0,0,6074,6075,3,1340,670,0, - 6075,6388,1,0,0,0,6076,6077,5,138,0,0,6077,6078,5,92,0,0,6078,6079, - 3,1074,537,0,6079,6080,5,302,0,0,6080,6081,5,94,0,0,6081,6082,3, - 1340,670,0,6082,6388,1,0,0,0,6083,6084,5,138,0,0,6084,6085,5,92, - 0,0,6085,6086,5,220,0,0,6086,6087,5,389,0,0,6087,6088,3,1074,537, - 0,6088,6089,5,302,0,0,6089,6090,5,94,0,0,6090,6091,3,1340,670,0, - 6091,6388,1,0,0,0,6092,6093,5,138,0,0,6093,6094,5,321,0,0,6094,6095, - 3,1336,668,0,6095,6096,5,302,0,0,6096,6097,5,94,0,0,6097,6098,3, - 1340,670,0,6098,6388,1,0,0,0,6099,6100,5,138,0,0,6100,6101,5,321, - 0,0,6101,6102,5,220,0,0,6102,6103,5,389,0,0,6103,6104,3,1336,668, - 0,6104,6105,5,302,0,0,6105,6106,5,94,0,0,6106,6107,3,1340,670,0, - 6107,6388,1,0,0,0,6108,6109,5,138,0,0,6109,6110,5,369,0,0,6110,6111, - 3,1336,668,0,6111,6112,5,302,0,0,6112,6113,5,94,0,0,6113,6114,3, - 1340,670,0,6114,6388,1,0,0,0,6115,6116,5,138,0,0,6116,6117,5,369, - 0,0,6117,6118,5,220,0,0,6118,6119,5,389,0,0,6119,6120,3,1336,668, - 0,6120,6121,5,302,0,0,6121,6122,5,94,0,0,6122,6123,3,1340,670,0, - 6123,6388,1,0,0,0,6124,6125,5,138,0,0,6125,6126,5,251,0,0,6126,6127, - 5,369,0,0,6127,6128,3,1336,668,0,6128,6129,5,302,0,0,6129,6130,5, - 94,0,0,6130,6131,3,1340,670,0,6131,6388,1,0,0,0,6132,6133,5,138, - 0,0,6133,6134,5,251,0,0,6134,6135,5,369,0,0,6135,6136,5,220,0,0, - 6136,6137,5,389,0,0,6137,6138,3,1336,668,0,6138,6139,5,302,0,0,6139, - 6140,5,94,0,0,6140,6141,3,1340,670,0,6141,6388,1,0,0,0,6142,6143, - 5,138,0,0,6143,6144,5,226,0,0,6144,6145,3,1336,668,0,6145,6146,5, - 302,0,0,6146,6147,5,94,0,0,6147,6148,3,1340,670,0,6148,6388,1,0, - 0,0,6149,6150,5,138,0,0,6150,6151,5,226,0,0,6151,6152,5,220,0,0, - 6152,6153,5,389,0,0,6153,6154,3,1336,668,0,6154,6155,5,302,0,0,6155, - 6156,5,94,0,0,6156,6157,3,1340,670,0,6157,6388,1,0,0,0,6158,6159, - 5,138,0,0,6159,6160,5,63,0,0,6160,6161,5,92,0,0,6161,6162,3,1074, - 537,0,6162,6163,5,302,0,0,6163,6164,5,94,0,0,6164,6165,3,1340,670, - 0,6165,6388,1,0,0,0,6166,6167,5,138,0,0,6167,6168,5,63,0,0,6168, - 6169,5,92,0,0,6169,6170,5,220,0,0,6170,6171,5,389,0,0,6171,6172, - 3,1074,537,0,6172,6173,5,302,0,0,6173,6174,5,94,0,0,6174,6175,3, - 1340,670,0,6175,6388,1,0,0,0,6176,6177,5,138,0,0,6177,6178,5,92, - 0,0,6178,6179,3,1074,537,0,6179,6180,5,302,0,0,6180,6181,3,724,362, - 0,6181,6182,3,1340,670,0,6182,6183,5,94,0,0,6183,6184,3,1340,670, - 0,6184,6388,1,0,0,0,6185,6186,5,138,0,0,6186,6187,5,92,0,0,6187, - 6188,5,220,0,0,6188,6189,5,389,0,0,6189,6190,3,1074,537,0,6190,6191, - 5,302,0,0,6191,6192,3,724,362,0,6192,6193,3,1340,670,0,6193,6194, - 5,94,0,0,6194,6195,3,1340,670,0,6195,6388,1,0,0,0,6196,6197,5,138, - 0,0,6197,6198,5,369,0,0,6198,6199,3,1336,668,0,6199,6200,5,302,0, - 0,6200,6201,3,724,362,0,6201,6202,3,1340,670,0,6202,6203,5,94,0, - 0,6203,6204,3,1340,670,0,6204,6388,1,0,0,0,6205,6206,5,138,0,0,6206, - 6207,5,369,0,0,6207,6208,5,220,0,0,6208,6209,5,389,0,0,6209,6210, - 3,1336,668,0,6210,6211,5,302,0,0,6211,6212,3,724,362,0,6212,6213, - 3,1340,670,0,6213,6214,5,94,0,0,6214,6215,3,1340,670,0,6215,6388, - 1,0,0,0,6216,6217,5,138,0,0,6217,6218,5,251,0,0,6218,6219,5,369, - 0,0,6219,6220,3,1336,668,0,6220,6221,5,302,0,0,6221,6222,3,724,362, - 0,6222,6223,3,1340,670,0,6223,6224,5,94,0,0,6224,6225,3,1340,670, - 0,6225,6388,1,0,0,0,6226,6227,5,138,0,0,6227,6228,5,251,0,0,6228, - 6229,5,369,0,0,6229,6230,5,220,0,0,6230,6231,5,389,0,0,6231,6232, - 3,1336,668,0,6232,6233,5,302,0,0,6233,6234,3,724,362,0,6234,6235, - 3,1340,670,0,6235,6236,5,94,0,0,6236,6237,3,1340,670,0,6237,6388, - 1,0,0,0,6238,6239,5,138,0,0,6239,6240,5,92,0,0,6240,6241,3,1074, - 537,0,6241,6242,5,302,0,0,6242,6243,5,45,0,0,6243,6244,3,1340,670, - 0,6244,6245,5,94,0,0,6245,6246,3,1340,670,0,6246,6388,1,0,0,0,6247, - 6248,5,138,0,0,6248,6249,5,92,0,0,6249,6250,5,220,0,0,6250,6251, - 5,389,0,0,6251,6252,3,1074,537,0,6252,6253,5,302,0,0,6253,6254,5, - 45,0,0,6254,6255,3,1340,670,0,6255,6256,5,94,0,0,6256,6257,3,1340, - 670,0,6257,6388,1,0,0,0,6258,6259,5,138,0,0,6259,6260,5,63,0,0,6260, - 6261,5,92,0,0,6261,6262,3,1074,537,0,6262,6263,5,302,0,0,6263,6264, - 3,724,362,0,6264,6265,3,1340,670,0,6265,6266,5,94,0,0,6266,6267, - 3,1340,670,0,6267,6388,1,0,0,0,6268,6269,5,138,0,0,6269,6270,5,63, - 0,0,6270,6271,5,92,0,0,6271,6272,5,220,0,0,6272,6273,5,389,0,0,6273, - 6274,3,1074,537,0,6274,6275,5,302,0,0,6275,6276,3,724,362,0,6276, - 6277,3,1340,670,0,6277,6278,5,94,0,0,6278,6279,3,1340,670,0,6279, - 6388,1,0,0,0,6280,6281,5,138,0,0,6281,6282,5,314,0,0,6282,6283,3, - 1340,670,0,6283,6284,5,80,0,0,6284,6285,3,1336,668,0,6285,6286,5, - 302,0,0,6286,6287,5,94,0,0,6287,6288,3,1340,670,0,6288,6388,1,0, - 0,0,6289,6290,5,138,0,0,6290,6291,5,350,0,0,6291,6292,3,1340,670, - 0,6292,6293,5,80,0,0,6293,6294,3,1336,668,0,6294,6295,5,302,0,0, - 6295,6296,5,94,0,0,6296,6297,3,1340,670,0,6297,6388,1,0,0,0,6298, - 6299,5,138,0,0,6299,6300,5,198,0,0,6300,6301,5,350,0,0,6301,6302, - 3,1340,670,0,6302,6303,5,302,0,0,6303,6304,5,94,0,0,6304,6305,3, - 1340,670,0,6305,6388,1,0,0,0,6306,6307,5,138,0,0,6307,6308,5,311, - 0,0,6308,6309,3,1366,683,0,6309,6310,5,302,0,0,6310,6311,5,94,0, - 0,6311,6312,3,1366,683,0,6312,6388,1,0,0,0,6313,6314,5,138,0,0,6314, - 6315,5,99,0,0,6315,6316,3,1366,683,0,6316,6317,5,302,0,0,6317,6318, - 5,94,0,0,6318,6319,3,1366,683,0,6319,6388,1,0,0,0,6320,6321,5,138, - 0,0,6321,6322,5,344,0,0,6322,6323,3,1340,670,0,6323,6324,5,302,0, - 0,6324,6325,5,94,0,0,6325,6326,3,1340,670,0,6326,6388,1,0,0,0,6327, - 6328,5,138,0,0,6328,6329,5,335,0,0,6329,6330,3,524,262,0,6330,6331, - 5,302,0,0,6331,6332,5,94,0,0,6332,6333,3,1340,670,0,6333,6388,1, - 0,0,0,6334,6335,5,138,0,0,6335,6336,5,348,0,0,6336,6337,5,318,0, - 0,6337,6338,5,276,0,0,6338,6339,3,524,262,0,6339,6340,5,302,0,0, - 6340,6341,5,94,0,0,6341,6342,3,1340,670,0,6342,6388,1,0,0,0,6343, - 6344,5,138,0,0,6344,6345,5,348,0,0,6345,6346,5,318,0,0,6346,6347, - 5,185,0,0,6347,6348,3,524,262,0,6348,6349,5,302,0,0,6349,6350,5, - 94,0,0,6350,6351,3,1340,670,0,6351,6388,1,0,0,0,6352,6353,5,138, - 0,0,6353,6354,5,348,0,0,6354,6355,5,318,0,0,6355,6356,5,346,0,0, - 6356,6357,3,524,262,0,6357,6358,5,302,0,0,6358,6359,5,94,0,0,6359, - 6360,3,1340,670,0,6360,6388,1,0,0,0,6361,6362,5,138,0,0,6362,6363, - 5,348,0,0,6363,6364,5,318,0,0,6364,6365,5,163,0,0,6365,6366,3,524, - 262,0,6366,6367,5,302,0,0,6367,6368,5,94,0,0,6368,6369,3,1340,670, - 0,6369,6388,1,0,0,0,6370,6371,5,138,0,0,6371,6372,5,353,0,0,6372, - 6373,3,524,262,0,6373,6374,5,302,0,0,6374,6375,5,94,0,0,6375,6376, - 3,1340,670,0,6376,6388,1,0,0,0,6377,6378,5,138,0,0,6378,6379,5,353, - 0,0,6379,6380,3,524,262,0,6380,6381,5,302,0,0,6381,6382,5,143,0, - 0,6382,6383,3,1340,670,0,6383,6384,5,94,0,0,6384,6385,3,1340,670, - 0,6385,6386,3,108,54,0,6386,6388,1,0,0,0,6387,5919,1,0,0,0,6387, - 5926,1,0,0,0,6387,5933,1,0,0,0,6387,5940,1,0,0,0,6387,5947,1,0,0, - 0,6387,5954,1,0,0,0,6387,5963,1,0,0,0,6387,5972,1,0,0,0,6387,5979, - 1,0,0,0,6387,5986,1,0,0,0,6387,5994,1,0,0,0,6387,6004,1,0,0,0,6387, - 6014,1,0,0,0,6387,6023,1,0,0,0,6387,6034,1,0,0,0,6387,6041,1,0,0, - 0,6387,6048,1,0,0,0,6387,6055,1,0,0,0,6387,6062,1,0,0,0,6387,6069, - 1,0,0,0,6387,6076,1,0,0,0,6387,6083,1,0,0,0,6387,6092,1,0,0,0,6387, - 6099,1,0,0,0,6387,6108,1,0,0,0,6387,6115,1,0,0,0,6387,6124,1,0,0, - 0,6387,6132,1,0,0,0,6387,6142,1,0,0,0,6387,6149,1,0,0,0,6387,6158, - 1,0,0,0,6387,6166,1,0,0,0,6387,6176,1,0,0,0,6387,6185,1,0,0,0,6387, - 6196,1,0,0,0,6387,6205,1,0,0,0,6387,6216,1,0,0,0,6387,6226,1,0,0, - 0,6387,6238,1,0,0,0,6387,6247,1,0,0,0,6387,6258,1,0,0,0,6387,6268, - 1,0,0,0,6387,6280,1,0,0,0,6387,6289,1,0,0,0,6387,6298,1,0,0,0,6387, - 6306,1,0,0,0,6387,6313,1,0,0,0,6387,6320,1,0,0,0,6387,6327,1,0,0, - 0,6387,6334,1,0,0,0,6387,6343,1,0,0,0,6387,6352,1,0,0,0,6387,6361, - 1,0,0,0,6387,6370,1,0,0,0,6387,6377,1,0,0,0,6388,723,1,0,0,0,6389, - 6392,5,44,0,0,6390,6392,1,0,0,0,6391,6389,1,0,0,0,6391,6390,1,0, - 0,0,6392,725,1,0,0,0,6393,6394,5,326,0,0,6394,6397,5,174,0,0,6395, - 6397,1,0,0,0,6396,6393,1,0,0,0,6396,6395,1,0,0,0,6397,727,1,0,0, - 0,6398,6399,5,138,0,0,6399,6400,5,211,0,0,6400,6401,3,626,313,0, - 6401,6402,3,730,365,0,6402,6403,5,462,0,0,6403,6404,5,80,0,0,6404, - 6405,5,204,0,0,6405,6406,3,1340,670,0,6406,6456,1,0,0,0,6407,6408, - 5,138,0,0,6408,6409,5,289,0,0,6409,6410,3,626,313,0,6410,6411,3, - 730,365,0,6411,6412,5,462,0,0,6412,6413,5,80,0,0,6413,6414,5,204, - 0,0,6414,6415,3,1340,670,0,6415,6456,1,0,0,0,6416,6417,5,138,0,0, - 6417,6418,5,442,0,0,6418,6419,3,626,313,0,6419,6420,3,730,365,0, - 6420,6421,5,462,0,0,6421,6422,5,80,0,0,6422,6423,5,204,0,0,6423, - 6424,3,1340,670,0,6424,6456,1,0,0,0,6425,6426,5,138,0,0,6426,6427, - 5,350,0,0,6427,6428,3,1340,670,0,6428,6429,5,80,0,0,6429,6430,3, - 1336,668,0,6430,6431,3,730,365,0,6431,6432,5,462,0,0,6432,6433,5, - 80,0,0,6433,6434,5,204,0,0,6434,6435,3,1340,670,0,6435,6456,1,0, - 0,0,6436,6437,5,138,0,0,6437,6438,5,251,0,0,6438,6439,5,369,0,0, - 6439,6440,3,1336,668,0,6440,6441,3,730,365,0,6441,6442,5,462,0,0, - 6442,6443,5,80,0,0,6443,6444,5,204,0,0,6444,6445,3,1340,670,0,6445, - 6456,1,0,0,0,6446,6447,5,138,0,0,6447,6448,5,226,0,0,6448,6449,3, - 1336,668,0,6449,6450,3,730,365,0,6450,6451,5,462,0,0,6451,6452,5, - 80,0,0,6452,6453,5,204,0,0,6453,6454,3,1340,670,0,6454,6456,1,0, - 0,0,6455,6398,1,0,0,0,6455,6407,1,0,0,0,6455,6416,1,0,0,0,6455,6425, - 1,0,0,0,6455,6436,1,0,0,0,6455,6446,1,0,0,0,6456,729,1,0,0,0,6457, - 6460,5,262,0,0,6458,6460,1,0,0,0,6459,6457,1,0,0,0,6459,6458,1,0, - 0,0,6460,731,1,0,0,0,6461,6462,5,138,0,0,6462,6463,5,136,0,0,6463, - 6464,3,650,325,0,6464,6465,5,326,0,0,6465,6466,5,316,0,0,6466,6467, - 3,1340,670,0,6467,6679,1,0,0,0,6468,6469,5,138,0,0,6469,6470,5,108, - 0,0,6470,6471,3,524,262,0,6471,6472,5,326,0,0,6472,6473,5,316,0, - 0,6473,6474,3,1340,670,0,6474,6679,1,0,0,0,6475,6476,5,138,0,0,6476, - 6477,5,168,0,0,6477,6478,3,524,262,0,6478,6479,5,326,0,0,6479,6480, - 5,316,0,0,6480,6481,3,1340,670,0,6481,6679,1,0,0,0,6482,6483,5,138, - 0,0,6483,6484,5,189,0,0,6484,6485,3,524,262,0,6485,6486,5,326,0, - 0,6486,6487,5,316,0,0,6487,6488,3,1340,670,0,6488,6679,1,0,0,0,6489, - 6490,5,138,0,0,6490,6491,5,204,0,0,6491,6492,3,1340,670,0,6492,6493, - 5,326,0,0,6493,6494,5,316,0,0,6494,6495,3,1340,670,0,6495,6679,1, - 0,0,0,6496,6497,5,138,0,0,6497,6498,5,211,0,0,6498,6499,3,626,313, - 0,6499,6500,5,326,0,0,6500,6501,5,316,0,0,6501,6502,3,1340,670,0, - 6502,6679,1,0,0,0,6503,6504,5,138,0,0,6504,6505,5,271,0,0,6505,6506, - 3,688,344,0,6506,6507,5,326,0,0,6507,6508,5,316,0,0,6508,6509,3, - 1340,670,0,6509,6679,1,0,0,0,6510,6511,5,138,0,0,6511,6512,5,271, - 0,0,6512,6513,5,156,0,0,6513,6514,3,524,262,0,6514,6515,5,100,0, - 0,6515,6516,3,1340,670,0,6516,6517,5,326,0,0,6517,6518,5,316,0,0, - 6518,6519,3,1340,670,0,6519,6679,1,0,0,0,6520,6521,5,138,0,0,6521, - 6522,5,271,0,0,6522,6523,5,206,0,0,6523,6524,3,524,262,0,6524,6525, - 5,100,0,0,6525,6526,3,1340,670,0,6526,6527,5,326,0,0,6527,6528,5, - 316,0,0,6528,6529,3,1340,670,0,6529,6679,1,0,0,0,6530,6531,5,138, - 0,0,6531,6532,5,289,0,0,6532,6533,3,626,313,0,6533,6534,5,326,0, - 0,6534,6535,5,316,0,0,6535,6536,3,1340,670,0,6536,6679,1,0,0,0,6537, - 6538,5,138,0,0,6538,6539,5,442,0,0,6539,6540,3,626,313,0,6540,6541, - 5,326,0,0,6541,6542,5,316,0,0,6542,6543,3,1340,670,0,6543,6679,1, - 0,0,0,6544,6545,5,138,0,0,6545,6546,5,92,0,0,6546,6547,3,1074,537, - 0,6547,6548,5,326,0,0,6548,6549,5,316,0,0,6549,6550,3,1340,670,0, - 6550,6679,1,0,0,0,6551,6552,5,138,0,0,6552,6553,5,92,0,0,6553,6554, - 5,220,0,0,6554,6555,5,389,0,0,6555,6556,3,1074,537,0,6556,6557,5, - 326,0,0,6557,6558,5,316,0,0,6558,6559,3,1340,670,0,6559,6679,1,0, - 0,0,6560,6561,5,138,0,0,6561,6562,5,335,0,0,6562,6563,3,524,262, - 0,6563,6564,5,326,0,0,6564,6565,5,316,0,0,6565,6566,3,1340,670,0, - 6566,6679,1,0,0,0,6567,6568,5,138,0,0,6568,6569,5,348,0,0,6569,6570, - 5,318,0,0,6570,6571,5,276,0,0,6571,6572,3,524,262,0,6572,6573,5, - 326,0,0,6573,6574,5,316,0,0,6574,6575,3,1340,670,0,6575,6679,1,0, - 0,0,6576,6577,5,138,0,0,6577,6578,5,348,0,0,6578,6579,5,318,0,0, - 6579,6580,5,185,0,0,6580,6581,3,524,262,0,6581,6582,5,326,0,0,6582, - 6583,5,316,0,0,6583,6584,3,1340,670,0,6584,6679,1,0,0,0,6585,6586, - 5,138,0,0,6586,6587,5,348,0,0,6587,6588,5,318,0,0,6588,6589,5,346, - 0,0,6589,6590,3,524,262,0,6590,6591,5,326,0,0,6591,6592,5,316,0, - 0,6592,6593,3,1340,670,0,6593,6679,1,0,0,0,6594,6595,5,138,0,0,6595, - 6596,5,348,0,0,6596,6597,5,318,0,0,6597,6598,5,163,0,0,6598,6599, - 3,524,262,0,6599,6600,5,326,0,0,6600,6601,5,316,0,0,6601,6602,3, - 1340,670,0,6602,6679,1,0,0,0,6603,6604,5,138,0,0,6604,6605,5,321, - 0,0,6605,6606,3,1336,668,0,6606,6607,5,326,0,0,6607,6608,5,316,0, - 0,6608,6609,3,1340,670,0,6609,6679,1,0,0,0,6610,6611,5,138,0,0,6611, - 6612,5,321,0,0,6612,6613,5,220,0,0,6613,6614,5,389,0,0,6614,6615, - 3,1336,668,0,6615,6616,5,326,0,0,6616,6617,5,316,0,0,6617,6618,3, - 1340,670,0,6618,6679,1,0,0,0,6619,6620,5,138,0,0,6620,6621,5,369, - 0,0,6621,6622,3,1336,668,0,6622,6623,5,326,0,0,6623,6624,5,316,0, - 0,6624,6625,3,1340,670,0,6625,6679,1,0,0,0,6626,6627,5,138,0,0,6627, - 6628,5,369,0,0,6628,6629,5,220,0,0,6629,6630,5,389,0,0,6630,6631, - 3,1336,668,0,6631,6632,5,326,0,0,6632,6633,5,316,0,0,6633,6634,3, - 1340,670,0,6634,6679,1,0,0,0,6635,6636,5,138,0,0,6636,6637,5,251, - 0,0,6637,6638,5,369,0,0,6638,6639,3,1336,668,0,6639,6640,5,326,0, - 0,6640,6641,5,316,0,0,6641,6642,3,1340,670,0,6642,6679,1,0,0,0,6643, - 6644,5,138,0,0,6644,6645,5,251,0,0,6645,6646,5,369,0,0,6646,6647, - 5,220,0,0,6647,6648,5,389,0,0,6648,6649,3,1336,668,0,6649,6650,5, - 326,0,0,6650,6651,5,316,0,0,6651,6652,3,1340,670,0,6652,6679,1,0, - 0,0,6653,6654,5,138,0,0,6654,6655,5,63,0,0,6655,6656,5,92,0,0,6656, - 6657,3,1074,537,0,6657,6658,5,326,0,0,6658,6659,5,316,0,0,6659,6660, - 3,1340,670,0,6660,6679,1,0,0,0,6661,6662,5,138,0,0,6662,6663,5,63, - 0,0,6663,6664,5,92,0,0,6664,6665,5,220,0,0,6665,6666,5,389,0,0,6666, - 6667,3,1074,537,0,6667,6668,5,326,0,0,6668,6669,5,316,0,0,6669,6670, - 3,1340,670,0,6670,6679,1,0,0,0,6671,6672,5,138,0,0,6672,6673,5,353, - 0,0,6673,6674,3,524,262,0,6674,6675,5,326,0,0,6675,6676,5,316,0, - 0,6676,6677,3,1340,670,0,6677,6679,1,0,0,0,6678,6461,1,0,0,0,6678, - 6468,1,0,0,0,6678,6475,1,0,0,0,6678,6482,1,0,0,0,6678,6489,1,0,0, - 0,6678,6496,1,0,0,0,6678,6503,1,0,0,0,6678,6510,1,0,0,0,6678,6520, - 1,0,0,0,6678,6530,1,0,0,0,6678,6537,1,0,0,0,6678,6544,1,0,0,0,6678, - 6551,1,0,0,0,6678,6560,1,0,0,0,6678,6567,1,0,0,0,6678,6576,1,0,0, - 0,6678,6585,1,0,0,0,6678,6594,1,0,0,0,6678,6603,1,0,0,0,6678,6610, - 1,0,0,0,6678,6619,1,0,0,0,6678,6626,1,0,0,0,6678,6635,1,0,0,0,6678, - 6643,1,0,0,0,6678,6653,1,0,0,0,6678,6661,1,0,0,0,6678,6671,1,0,0, - 0,6679,733,1,0,0,0,6680,6681,5,138,0,0,6681,6682,5,271,0,0,6682, - 6683,3,688,344,0,6683,6684,5,326,0,0,6684,6685,5,2,0,0,6685,6686, - 3,736,368,0,6686,6687,5,3,0,0,6687,735,1,0,0,0,6688,6693,3,738,369, - 0,6689,6690,5,6,0,0,6690,6692,3,738,369,0,6691,6689,1,0,0,0,6692, - 6695,1,0,0,0,6693,6691,1,0,0,0,6693,6694,1,0,0,0,6694,737,1,0,0, - 0,6695,6693,1,0,0,0,6696,6697,3,1380,690,0,6697,6698,5,10,0,0,6698, - 6699,5,400,0,0,6699,6705,1,0,0,0,6700,6701,3,1380,690,0,6701,6702, - 5,10,0,0,6702,6703,3,740,370,0,6703,6705,1,0,0,0,6704,6696,1,0,0, - 0,6704,6700,1,0,0,0,6705,739,1,0,0,0,6706,6712,3,640,320,0,6707, - 6712,3,1392,696,0,6708,6712,3,1276,638,0,6709,6712,3,292,146,0,6710, - 6712,3,1358,679,0,6711,6706,1,0,0,0,6711,6707,1,0,0,0,6711,6708, - 1,0,0,0,6711,6709,1,0,0,0,6711,6710,1,0,0,0,6712,741,1,0,0,0,6713, - 6714,5,138,0,0,6714,6715,5,353,0,0,6715,6716,3,524,262,0,6716,6717, - 5,326,0,0,6717,6718,5,2,0,0,6718,6719,3,736,368,0,6719,6720,5,3, - 0,0,6720,743,1,0,0,0,6721,6722,5,138,0,0,6722,6723,5,136,0,0,6723, - 6724,3,650,325,0,6724,6725,5,275,0,0,6725,6726,5,94,0,0,6726,6727, - 3,1368,684,0,6727,6905,1,0,0,0,6728,6729,5,138,0,0,6729,6730,5,108, - 0,0,6730,6731,3,524,262,0,6731,6732,5,275,0,0,6732,6733,5,94,0,0, - 6733,6734,3,1368,684,0,6734,6905,1,0,0,0,6735,6736,5,138,0,0,6736, - 6737,5,168,0,0,6737,6738,3,524,262,0,6738,6739,5,275,0,0,6739,6740, - 5,94,0,0,6740,6741,3,1368,684,0,6741,6905,1,0,0,0,6742,6743,5,138, - 0,0,6743,6744,5,175,0,0,6744,6745,3,1340,670,0,6745,6746,5,275,0, - 0,6746,6747,5,94,0,0,6747,6748,3,1368,684,0,6748,6905,1,0,0,0,6749, - 6750,5,138,0,0,6750,6751,5,189,0,0,6751,6752,3,524,262,0,6752,6753, - 5,275,0,0,6753,6754,5,94,0,0,6754,6755,3,1368,684,0,6755,6905,1, - 0,0,0,6756,6757,5,138,0,0,6757,6758,5,211,0,0,6758,6759,3,626,313, - 0,6759,6760,5,275,0,0,6760,6761,5,94,0,0,6761,6762,3,1368,684,0, - 6762,6905,1,0,0,0,6763,6764,5,138,0,0,6764,6765,3,308,154,0,6765, - 6766,5,238,0,0,6766,6767,3,1340,670,0,6767,6768,5,275,0,0,6768,6769, - 5,94,0,0,6769,6770,3,1368,684,0,6770,6905,1,0,0,0,6771,6772,5,138, - 0,0,6772,6773,5,239,0,0,6773,6774,5,267,0,0,6774,6775,3,292,146, - 0,6775,6776,5,275,0,0,6776,6777,5,94,0,0,6777,6778,3,1368,684,0, - 6778,6905,1,0,0,0,6779,6780,5,138,0,0,6780,6781,5,271,0,0,6781,6782, - 3,688,344,0,6782,6783,5,275,0,0,6783,6784,5,94,0,0,6784,6785,3,1368, - 684,0,6785,6905,1,0,0,0,6786,6787,5,138,0,0,6787,6788,5,271,0,0, - 6788,6789,5,156,0,0,6789,6790,3,524,262,0,6790,6791,5,100,0,0,6791, - 6792,3,1340,670,0,6792,6793,5,275,0,0,6793,6794,5,94,0,0,6794,6795, - 3,1368,684,0,6795,6905,1,0,0,0,6796,6797,5,138,0,0,6797,6798,5,271, - 0,0,6798,6799,5,206,0,0,6799,6800,3,524,262,0,6800,6801,5,100,0, - 0,6801,6802,3,1340,670,0,6802,6803,5,275,0,0,6803,6804,5,94,0,0, - 6804,6805,3,1368,684,0,6805,6905,1,0,0,0,6806,6807,5,138,0,0,6807, - 6808,5,289,0,0,6808,6809,3,626,313,0,6809,6810,5,275,0,0,6810,6811, - 5,94,0,0,6811,6812,3,1368,684,0,6812,6905,1,0,0,0,6813,6814,5,138, - 0,0,6814,6815,5,442,0,0,6815,6816,3,626,313,0,6816,6817,5,275,0, - 0,6817,6818,5,94,0,0,6818,6819,3,1368,684,0,6819,6905,1,0,0,0,6820, - 6821,5,138,0,0,6821,6822,5,316,0,0,6822,6823,3,1340,670,0,6823,6824, - 5,275,0,0,6824,6825,5,94,0,0,6825,6826,3,1368,684,0,6826,6905,1, - 0,0,0,6827,6828,5,138,0,0,6828,6829,5,353,0,0,6829,6830,3,524,262, - 0,6830,6831,5,275,0,0,6831,6832,5,94,0,0,6832,6833,3,1368,684,0, - 6833,6905,1,0,0,0,6834,6835,5,138,0,0,6835,6836,5,344,0,0,6836,6837, - 3,1340,670,0,6837,6838,5,275,0,0,6838,6839,5,94,0,0,6839,6840,3, - 1368,684,0,6840,6905,1,0,0,0,6841,6842,5,138,0,0,6842,6843,5,335, - 0,0,6843,6844,3,524,262,0,6844,6845,5,275,0,0,6845,6846,5,94,0,0, - 6846,6847,3,1368,684,0,6847,6905,1,0,0,0,6848,6849,5,138,0,0,6849, - 6850,5,348,0,0,6850,6851,5,318,0,0,6851,6852,5,185,0,0,6852,6853, - 3,524,262,0,6853,6854,5,275,0,0,6854,6855,5,94,0,0,6855,6856,3,1368, - 684,0,6856,6905,1,0,0,0,6857,6858,5,138,0,0,6858,6859,5,348,0,0, - 6859,6860,5,318,0,0,6860,6861,5,163,0,0,6861,6862,3,524,262,0,6862, - 6863,5,275,0,0,6863,6864,5,94,0,0,6864,6865,3,1368,684,0,6865,6905, - 1,0,0,0,6866,6867,5,138,0,0,6867,6868,5,63,0,0,6868,6869,5,174,0, - 0,6869,6870,5,374,0,0,6870,6871,3,1340,670,0,6871,6872,5,275,0,0, - 6872,6873,5,94,0,0,6873,6874,3,1368,684,0,6874,6905,1,0,0,0,6875, - 6876,5,138,0,0,6876,6877,5,324,0,0,6877,6878,3,1340,670,0,6878,6879, - 5,275,0,0,6879,6880,5,94,0,0,6880,6881,3,1368,684,0,6881,6905,1, - 0,0,0,6882,6883,5,138,0,0,6883,6884,5,198,0,0,6884,6885,5,350,0, - 0,6885,6886,3,1340,670,0,6886,6887,5,275,0,0,6887,6888,5,94,0,0, - 6888,6889,3,1368,684,0,6889,6905,1,0,0,0,6890,6891,5,138,0,0,6891, - 6892,5,452,0,0,6892,6893,3,1340,670,0,6893,6894,5,275,0,0,6894,6895, - 5,94,0,0,6895,6896,3,1368,684,0,6896,6905,1,0,0,0,6897,6898,5,138, - 0,0,6898,6899,5,451,0,0,6899,6900,3,1340,670,0,6900,6901,5,275,0, - 0,6901,6902,5,94,0,0,6902,6903,3,1368,684,0,6903,6905,1,0,0,0,6904, - 6721,1,0,0,0,6904,6728,1,0,0,0,6904,6735,1,0,0,0,6904,6742,1,0,0, - 0,6904,6749,1,0,0,0,6904,6756,1,0,0,0,6904,6763,1,0,0,0,6904,6771, - 1,0,0,0,6904,6779,1,0,0,0,6904,6786,1,0,0,0,6904,6796,1,0,0,0,6904, - 6806,1,0,0,0,6904,6813,1,0,0,0,6904,6820,1,0,0,0,6904,6827,1,0,0, - 0,6904,6834,1,0,0,0,6904,6841,1,0,0,0,6904,6848,1,0,0,0,6904,6857, - 1,0,0,0,6904,6866,1,0,0,0,6904,6875,1,0,0,0,6904,6882,1,0,0,0,6904, - 6890,1,0,0,0,6904,6897,1,0,0,0,6905,745,1,0,0,0,6906,6907,5,46,0, - 0,6907,6908,5,452,0,0,6908,6909,3,1340,670,0,6909,6910,3,748,374, - 0,6910,6911,3,664,332,0,6911,747,1,0,0,0,6912,6915,3,750,375,0,6913, - 6915,1,0,0,0,6914,6912,1,0,0,0,6914,6913,1,0,0,0,6915,749,1,0,0, - 0,6916,6917,5,62,0,0,6917,6918,5,92,0,0,6918,6923,3,1076,538,0,6919, - 6920,5,62,0,0,6920,6921,5,30,0,0,6921,6923,5,343,0,0,6922,6916,1, - 0,0,0,6922,6919,1,0,0,0,6923,751,1,0,0,0,6924,6925,5,138,0,0,6925, - 6926,5,452,0,0,6926,6927,3,1340,670,0,6927,6928,5,326,0,0,6928,6929, - 3,460,230,0,6929,6952,1,0,0,0,6930,6931,5,138,0,0,6931,6932,5,452, - 0,0,6932,6933,3,1340,670,0,6933,6934,5,133,0,0,6934,6935,5,92,0, - 0,6935,6936,3,1076,538,0,6936,6952,1,0,0,0,6937,6938,5,138,0,0,6938, - 6939,5,452,0,0,6939,6940,3,1340,670,0,6940,6941,5,326,0,0,6941,6942, - 5,92,0,0,6942,6943,3,1076,538,0,6943,6952,1,0,0,0,6944,6945,5,138, - 0,0,6945,6946,5,452,0,0,6946,6947,3,1340,670,0,6947,6948,5,191,0, - 0,6948,6949,5,92,0,0,6949,6950,3,1076,538,0,6950,6952,1,0,0,0,6951, - 6924,1,0,0,0,6951,6930,1,0,0,0,6951,6937,1,0,0,0,6951,6944,1,0,0, - 0,6952,753,1,0,0,0,6953,6954,5,46,0,0,6954,6955,5,451,0,0,6955,6956, - 3,1340,670,0,6956,6957,5,164,0,0,6957,6958,3,1358,679,0,6958,6959, - 5,452,0,0,6959,6960,3,756,378,0,6960,6961,3,664,332,0,6961,755,1, - 0,0,0,6962,6967,3,758,379,0,6963,6964,5,6,0,0,6964,6966,3,758,379, - 0,6965,6963,1,0,0,0,6966,6969,1,0,0,0,6967,6965,1,0,0,0,6967,6968, - 1,0,0,0,6968,757,1,0,0,0,6969,6967,1,0,0,0,6970,6971,3,1380,690, - 0,6971,759,1,0,0,0,6972,6973,5,138,0,0,6973,6974,5,451,0,0,6974, - 6975,3,1340,670,0,6975,6976,5,326,0,0,6976,6977,3,460,230,0,6977, - 7010,1,0,0,0,6978,6979,5,138,0,0,6979,6980,5,451,0,0,6980,6981,3, - 1340,670,0,6981,6982,5,164,0,0,6982,6983,3,1358,679,0,6983,7010, - 1,0,0,0,6984,6985,5,138,0,0,6985,6986,5,451,0,0,6986,6987,3,1340, - 670,0,6987,6988,5,298,0,0,6988,6989,5,452,0,0,6989,6990,3,664,332, - 0,6990,7010,1,0,0,0,6991,6992,5,138,0,0,6992,6993,5,451,0,0,6993, - 6994,3,1340,670,0,6994,6995,5,326,0,0,6995,6996,5,452,0,0,6996,6997, - 3,756,378,0,6997,6998,3,664,332,0,6998,7010,1,0,0,0,6999,7000,5, - 138,0,0,7000,7001,5,451,0,0,7001,7002,3,1340,670,0,7002,7003,5,193, - 0,0,7003,7010,1,0,0,0,7004,7005,5,138,0,0,7005,7006,5,451,0,0,7006, - 7007,3,1340,670,0,7007,7008,5,186,0,0,7008,7010,1,0,0,0,7009,6972, - 1,0,0,0,7009,6978,1,0,0,0,7009,6984,1,0,0,0,7009,6991,1,0,0,0,7009, - 6999,1,0,0,0,7009,7004,1,0,0,0,7010,761,1,0,0,0,7011,7012,5,191, - 0,0,7012,7013,5,451,0,0,7013,7014,3,1340,670,0,7014,7015,3,108,54, - 0,7015,7024,1,0,0,0,7016,7017,5,191,0,0,7017,7018,5,451,0,0,7018, - 7019,5,220,0,0,7019,7020,5,389,0,0,7020,7021,3,1340,670,0,7021,7022, - 3,108,54,0,7022,7024,1,0,0,0,7023,7011,1,0,0,0,7023,7016,1,0,0,0, - 7024,763,1,0,0,0,7025,7026,5,46,0,0,7026,7027,3,618,309,0,7027,7028, - 5,314,0,0,7028,7029,3,1340,670,0,7029,7030,5,36,0,0,7030,7031,5, - 80,0,0,7031,7032,3,774,387,0,7032,7033,5,94,0,0,7033,7034,3,1336, - 668,0,7034,7035,3,1094,547,0,7035,7036,5,57,0,0,7036,7037,3,776, - 388,0,7037,7038,3,766,383,0,7038,765,1,0,0,0,7039,7046,5,263,0,0, - 7040,7046,3,770,385,0,7041,7042,5,2,0,0,7042,7043,3,768,384,0,7043, - 7044,5,3,0,0,7044,7046,1,0,0,0,7045,7039,1,0,0,0,7045,7040,1,0,0, - 0,7045,7041,1,0,0,0,7046,767,1,0,0,0,7047,7052,3,772,386,0,7048, - 7049,5,7,0,0,7049,7051,3,772,386,0,7050,7048,1,0,0,0,7051,7054,1, - 0,0,0,7052,7050,1,0,0,0,7052,7053,1,0,0,0,7053,769,1,0,0,0,7054, - 7052,1,0,0,0,7055,7061,3,960,480,0,7056,7061,3,902,451,0,7057,7061, - 3,942,471,0,7058,7061,3,928,464,0,7059,7061,3,778,389,0,7060,7055, - 1,0,0,0,7060,7056,1,0,0,0,7060,7057,1,0,0,0,7060,7058,1,0,0,0,7060, - 7059,1,0,0,0,7061,771,1,0,0,0,7062,7065,3,770,385,0,7063,7065,1, - 0,0,0,7064,7062,1,0,0,0,7064,7063,1,0,0,0,7065,773,1,0,0,0,7066, - 7067,7,31,0,0,7067,775,1,0,0,0,7068,7072,5,233,0,0,7069,7072,5,137, - 0,0,7070,7072,1,0,0,0,7071,7068,1,0,0,0,7071,7069,1,0,0,0,7071,7070, - 1,0,0,0,7072,777,1,0,0,0,7073,7074,5,264,0,0,7074,7075,3,1372,686, - 0,7075,7076,3,780,390,0,7076,779,1,0,0,0,7077,7078,5,6,0,0,7078, - 7081,3,1358,679,0,7079,7081,1,0,0,0,7080,7077,1,0,0,0,7080,7079, - 1,0,0,0,7081,781,1,0,0,0,7082,7083,5,243,0,0,7083,7084,3,1372,686, - 0,7084,783,1,0,0,0,7085,7086,5,359,0,0,7086,7090,3,1372,686,0,7087, - 7088,5,359,0,0,7088,7090,5,9,0,0,7089,7085,1,0,0,0,7089,7087,1,0, - 0,0,7090,785,1,0,0,0,7091,7092,5,129,0,0,7092,7093,3,788,394,0,7093, - 7094,3,796,398,0,7094,7142,1,0,0,0,7095,7096,5,146,0,0,7096,7097, - 3,788,394,0,7097,7098,3,794,397,0,7098,7142,1,0,0,0,7099,7100,5, - 333,0,0,7100,7101,5,349,0,0,7101,7142,3,794,397,0,7102,7103,5,161, - 0,0,7103,7104,3,788,394,0,7104,7105,3,796,398,0,7105,7142,1,0,0, - 0,7106,7107,5,454,0,0,7107,7108,3,788,394,0,7108,7109,3,796,398, - 0,7109,7142,1,0,0,0,7110,7111,5,312,0,0,7111,7112,3,788,394,0,7112, - 7113,3,796,398,0,7113,7142,1,0,0,0,7114,7115,5,315,0,0,7115,7142, - 3,1372,686,0,7116,7117,5,301,0,0,7117,7118,5,315,0,0,7118,7142,3, - 1372,686,0,7119,7120,5,301,0,0,7120,7142,3,1372,686,0,7121,7122, - 5,312,0,0,7122,7123,3,788,394,0,7123,7124,5,94,0,0,7124,7125,5,315, - 0,0,7125,7126,3,1372,686,0,7126,7142,1,0,0,0,7127,7128,5,312,0,0, - 7128,7129,3,788,394,0,7129,7130,5,94,0,0,7130,7131,3,1372,686,0, - 7131,7142,1,0,0,0,7132,7133,5,283,0,0,7133,7134,5,349,0,0,7134,7142, - 3,1358,679,0,7135,7136,5,161,0,0,7136,7137,5,284,0,0,7137,7142,3, - 1358,679,0,7138,7139,5,312,0,0,7139,7140,5,284,0,0,7140,7142,3,1358, - 679,0,7141,7091,1,0,0,0,7141,7095,1,0,0,0,7141,7099,1,0,0,0,7141, - 7102,1,0,0,0,7141,7106,1,0,0,0,7141,7110,1,0,0,0,7141,7114,1,0,0, - 0,7141,7116,1,0,0,0,7141,7119,1,0,0,0,7141,7121,1,0,0,0,7141,7127, - 1,0,0,0,7141,7132,1,0,0,0,7141,7135,1,0,0,0,7141,7138,1,0,0,0,7142, - 787,1,0,0,0,7143,7147,5,373,0,0,7144,7147,5,349,0,0,7145,7147,1, - 0,0,0,7146,7143,1,0,0,0,7146,7144,1,0,0,0,7146,7145,1,0,0,0,7147, - 789,1,0,0,0,7148,7149,5,235,0,0,7149,7150,5,242,0,0,7150,7159,3, - 64,32,0,7151,7152,5,293,0,0,7152,7159,5,81,0,0,7153,7154,5,293,0, - 0,7154,7159,5,375,0,0,7155,7159,5,54,0,0,7156,7157,5,77,0,0,7157, - 7159,5,54,0,0,7158,7148,1,0,0,0,7158,7151,1,0,0,0,7158,7153,1,0, - 0,0,7158,7155,1,0,0,0,7158,7156,1,0,0,0,7159,791,1,0,0,0,7160,7167, - 3,790,395,0,7161,7163,5,6,0,0,7162,7161,1,0,0,0,7162,7163,1,0,0, - 0,7163,7164,1,0,0,0,7164,7166,3,790,395,0,7165,7162,1,0,0,0,7166, - 7169,1,0,0,0,7167,7165,1,0,0,0,7167,7168,1,0,0,0,7168,793,1,0,0, - 0,7169,7167,1,0,0,0,7170,7173,3,792,396,0,7171,7173,1,0,0,0,7172, - 7170,1,0,0,0,7172,7171,1,0,0,0,7173,795,1,0,0,0,7174,7176,5,33,0, - 0,7175,7177,5,262,0,0,7176,7175,1,0,0,0,7176,7177,1,0,0,0,7177,7178, - 1,0,0,0,7178,7181,5,153,0,0,7179,7181,1,0,0,0,7180,7174,1,0,0,0, - 7180,7179,1,0,0,0,7181,797,1,0,0,0,7182,7185,5,46,0,0,7183,7184, - 5,82,0,0,7184,7186,5,304,0,0,7185,7183,1,0,0,0,7185,7186,1,0,0,0, - 7186,7187,1,0,0,0,7187,7201,3,174,87,0,7188,7189,5,369,0,0,7189, - 7190,3,1336,668,0,7190,7191,3,214,107,0,7191,7192,3,118,59,0,7192, - 7202,1,0,0,0,7193,7194,5,296,0,0,7194,7195,5,369,0,0,7195,7196,3, - 1336,668,0,7196,7197,5,2,0,0,7197,7198,3,216,108,0,7198,7199,5,3, - 0,0,7199,7200,3,118,59,0,7200,7202,1,0,0,0,7201,7188,1,0,0,0,7201, - 7193,1,0,0,0,7202,7203,1,0,0,0,7203,7204,5,36,0,0,7204,7205,3,960, - 480,0,7205,7206,3,800,400,0,7206,799,1,0,0,0,7207,7209,5,105,0,0, - 7208,7210,7,32,0,0,7209,7208,1,0,0,0,7209,7210,1,0,0,0,7210,7211, - 1,0,0,0,7211,7212,5,42,0,0,7212,7215,5,272,0,0,7213,7215,1,0,0,0, - 7214,7207,1,0,0,0,7214,7213,1,0,0,0,7215,801,1,0,0,0,7216,7217,5, - 244,0,0,7217,7218,3,1344,672,0,7218,803,1,0,0,0,7219,7220,5,46,0, - 0,7220,7221,5,175,0,0,7221,7222,3,1340,670,0,7222,7223,3,16,8,0, - 7223,7224,3,806,403,0,7224,805,1,0,0,0,7225,7228,3,808,404,0,7226, - 7228,1,0,0,0,7227,7225,1,0,0,0,7227,7226,1,0,0,0,7228,807,1,0,0, - 0,7229,7231,3,810,405,0,7230,7229,1,0,0,0,7231,7232,1,0,0,0,7232, - 7230,1,0,0,0,7232,7233,1,0,0,0,7233,809,1,0,0,0,7234,7235,3,812, - 406,0,7235,7239,3,814,407,0,7236,7240,3,1364,682,0,7237,7240,3,66, - 33,0,7238,7240,5,53,0,0,7239,7236,1,0,0,0,7239,7237,1,0,0,0,7239, - 7238,1,0,0,0,7240,811,1,0,0,0,7241,7250,3,1382,691,0,7242,7243,5, - 164,0,0,7243,7250,5,74,0,0,7244,7250,5,194,0,0,7245,7250,5,246,0, - 0,7246,7250,5,275,0,0,7247,7250,5,344,0,0,7248,7250,5,346,0,0,7249, - 7241,1,0,0,0,7249,7242,1,0,0,0,7249,7244,1,0,0,0,7249,7245,1,0,0, - 0,7249,7246,1,0,0,0,7249,7247,1,0,0,0,7249,7248,1,0,0,0,7250,813, - 1,0,0,0,7251,7254,5,10,0,0,7252,7254,1,0,0,0,7253,7251,1,0,0,0,7253, - 7252,1,0,0,0,7254,815,1,0,0,0,7255,7256,5,138,0,0,7256,7257,5,175, - 0,0,7257,7264,3,1340,670,0,7258,7259,5,105,0,0,7259,7265,3,806,403, - 0,7260,7265,3,806,403,0,7261,7262,5,326,0,0,7262,7263,5,344,0,0, - 7263,7265,3,1340,670,0,7264,7258,1,0,0,0,7264,7260,1,0,0,0,7264, - 7261,1,0,0,0,7265,817,1,0,0,0,7266,7267,5,138,0,0,7267,7268,5,175, - 0,0,7268,7269,3,1340,670,0,7269,7270,3,80,40,0,7270,819,1,0,0,0, - 7271,7272,5,191,0,0,7272,7275,5,175,0,0,7273,7274,5,220,0,0,7274, - 7276,5,389,0,0,7275,7273,1,0,0,0,7275,7276,1,0,0,0,7276,7277,1,0, - 0,0,7277,7283,3,1340,670,0,7278,7279,3,16,8,0,7279,7280,5,2,0,0, - 7280,7281,3,822,411,0,7281,7282,5,3,0,0,7282,7284,1,0,0,0,7283,7278, - 1,0,0,0,7283,7284,1,0,0,0,7284,821,1,0,0,0,7285,7290,3,824,412,0, - 7286,7287,5,6,0,0,7287,7289,3,824,412,0,7288,7286,1,0,0,0,7289,7292, - 1,0,0,0,7290,7288,1,0,0,0,7290,7291,1,0,0,0,7291,823,1,0,0,0,7292, - 7290,1,0,0,0,7293,7294,5,209,0,0,7294,825,1,0,0,0,7295,7296,5,138, - 0,0,7296,7297,5,108,0,0,7297,7298,3,524,262,0,7298,7299,5,298,0, - 0,7299,7300,5,368,0,0,7300,827,1,0,0,0,7301,7302,5,138,0,0,7302, - 7303,5,342,0,0,7303,7304,7,33,0,0,7304,7305,3,54,27,0,7305,829,1, - 0,0,0,7306,7307,5,46,0,0,7307,7308,5,189,0,0,7308,7309,3,524,262, - 0,7309,7310,3,834,417,0,7310,7311,3,1118,559,0,7311,7312,3,192,96, - 0,7312,831,1,0,0,0,7313,7314,5,138,0,0,7314,7315,5,189,0,0,7315, - 7337,3,524,262,0,7316,7338,3,106,53,0,7317,7318,5,191,0,0,7318,7319, - 5,77,0,0,7319,7338,5,78,0,0,7320,7321,5,326,0,0,7321,7322,5,77,0, - 0,7322,7338,5,78,0,0,7323,7324,5,133,0,0,7324,7338,3,208,104,0,7325, - 7326,5,191,0,0,7326,7329,5,45,0,0,7327,7328,5,220,0,0,7328,7330, - 5,389,0,0,7329,7327,1,0,0,0,7329,7330,1,0,0,0,7330,7331,1,0,0,0, - 7331,7332,3,1340,670,0,7332,7333,3,108,54,0,7333,7338,1,0,0,0,7334, - 7335,5,365,0,0,7335,7336,5,45,0,0,7336,7338,3,1340,670,0,7337,7316, - 1,0,0,0,7337,7317,1,0,0,0,7337,7320,1,0,0,0,7337,7323,1,0,0,0,7337, - 7325,1,0,0,0,7337,7334,1,0,0,0,7338,833,1,0,0,0,7339,7342,5,36,0, - 0,7340,7342,1,0,0,0,7341,7339,1,0,0,0,7341,7340,1,0,0,0,7342,835, - 1,0,0,0,7343,7344,5,138,0,0,7344,7345,5,348,0,0,7345,7346,5,318, - 0,0,7346,7347,5,185,0,0,7347,7348,3,524,262,0,7348,7349,3,460,230, - 0,7349,837,1,0,0,0,7350,7351,5,138,0,0,7351,7352,5,348,0,0,7352, - 7353,5,318,0,0,7353,7354,5,163,0,0,7354,7355,3,524,262,0,7355,7356, - 5,133,0,0,7356,7357,5,248,0,0,7357,7358,5,62,0,0,7358,7359,3,1338, - 669,0,7359,7360,3,840,420,0,7360,7361,3,522,261,0,7361,7423,1,0, - 0,0,7362,7363,5,138,0,0,7363,7364,5,348,0,0,7364,7365,5,318,0,0, - 7365,7366,5,163,0,0,7366,7367,3,524,262,0,7367,7368,5,138,0,0,7368, - 7369,5,248,0,0,7369,7370,5,62,0,0,7370,7371,3,1338,669,0,7371,7372, - 3,840,420,0,7372,7373,3,522,261,0,7373,7423,1,0,0,0,7374,7375,5, - 138,0,0,7375,7376,5,348,0,0,7376,7377,5,318,0,0,7377,7378,5,163, - 0,0,7378,7379,3,524,262,0,7379,7380,5,138,0,0,7380,7381,5,248,0, - 0,7381,7382,5,304,0,0,7382,7383,3,524,262,0,7383,7384,3,840,420, - 0,7384,7385,3,524,262,0,7385,7423,1,0,0,0,7386,7387,5,138,0,0,7387, - 7388,5,348,0,0,7388,7389,5,318,0,0,7389,7390,5,163,0,0,7390,7391, - 3,524,262,0,7391,7392,5,138,0,0,7392,7393,5,248,0,0,7393,7394,5, - 62,0,0,7394,7395,3,1338,669,0,7395,7396,5,304,0,0,7396,7397,3,524, - 262,0,7397,7398,3,840,420,0,7398,7399,3,524,262,0,7399,7423,1,0, - 0,0,7400,7401,5,138,0,0,7401,7402,5,348,0,0,7402,7403,5,318,0,0, - 7403,7404,5,163,0,0,7404,7405,3,524,262,0,7405,7406,5,191,0,0,7406, - 7407,5,248,0,0,7407,7408,5,62,0,0,7408,7409,3,1338,669,0,7409,7423, - 1,0,0,0,7410,7411,5,138,0,0,7411,7412,5,348,0,0,7412,7413,5,318, - 0,0,7413,7414,5,163,0,0,7414,7415,3,524,262,0,7415,7416,5,191,0, - 0,7416,7417,5,248,0,0,7417,7418,5,220,0,0,7418,7419,5,389,0,0,7419, - 7420,5,62,0,0,7420,7421,3,1338,669,0,7421,7423,1,0,0,0,7422,7350, - 1,0,0,0,7422,7362,1,0,0,0,7422,7374,1,0,0,0,7422,7386,1,0,0,0,7422, - 7400,1,0,0,0,7422,7410,1,0,0,0,7423,839,1,0,0,0,7424,7425,5,105, - 0,0,7425,841,1,0,0,0,7426,7427,5,46,0,0,7427,7428,3,488,244,0,7428, - 7429,5,168,0,0,7429,7430,3,524,262,0,7430,7431,5,62,0,0,7431,7432, - 3,1358,679,0,7432,7433,5,94,0,0,7433,7434,3,1358,679,0,7434,7435, - 5,64,0,0,7435,7436,3,524,262,0,7436,843,1,0,0,0,7437,7438,5,158, - 0,0,7438,7439,3,864,432,0,7439,7440,3,1336,668,0,7440,7441,3,846, - 423,0,7441,7451,1,0,0,0,7442,7443,5,158,0,0,7443,7451,3,864,432, - 0,7444,7445,5,158,0,0,7445,7446,3,864,432,0,7446,7447,3,1340,670, - 0,7447,7448,5,80,0,0,7448,7449,3,1336,668,0,7449,7451,1,0,0,0,7450, - 7437,1,0,0,0,7450,7442,1,0,0,0,7450,7444,1,0,0,0,7451,845,1,0,0, - 0,7452,7453,5,100,0,0,7453,7456,3,1340,670,0,7454,7456,1,0,0,0,7455, - 7452,1,0,0,0,7455,7454,1,0,0,0,7456,847,1,0,0,0,7457,7458,5,363, - 0,0,7458,7459,3,866,433,0,7459,7460,3,868,434,0,7460,7461,3,864, - 432,0,7461,7462,3,862,431,0,7462,7463,3,876,438,0,7463,7471,1,0, - 0,0,7464,7465,5,363,0,0,7465,7466,5,2,0,0,7466,7467,3,852,426,0, - 7467,7468,5,3,0,0,7468,7469,3,876,438,0,7469,7471,1,0,0,0,7470,7457, - 1,0,0,0,7470,7464,1,0,0,0,7471,849,1,0,0,0,7472,7473,3,854,427,0, - 7473,7474,3,864,432,0,7474,7475,3,876,438,0,7475,7483,1,0,0,0,7476, - 7477,3,854,427,0,7477,7478,5,2,0,0,7478,7479,3,852,426,0,7479,7480, - 5,3,0,0,7480,7481,3,876,438,0,7481,7483,1,0,0,0,7482,7472,1,0,0, - 0,7482,7476,1,0,0,0,7483,851,1,0,0,0,7484,7489,3,856,428,0,7485, - 7486,5,6,0,0,7486,7488,3,856,428,0,7487,7485,1,0,0,0,7488,7491,1, - 0,0,0,7489,7487,1,0,0,0,7489,7490,1,0,0,0,7490,853,1,0,0,0,7491, - 7489,1,0,0,0,7492,7493,7,34,0,0,7493,855,1,0,0,0,7494,7495,3,858, - 429,0,7495,7496,3,860,430,0,7496,857,1,0,0,0,7497,7500,3,1378,689, - 0,7498,7500,3,854,427,0,7499,7497,1,0,0,0,7499,7498,1,0,0,0,7500, - 859,1,0,0,0,7501,7505,3,66,33,0,7502,7505,3,292,146,0,7503,7505, - 1,0,0,0,7504,7501,1,0,0,0,7504,7502,1,0,0,0,7504,7503,1,0,0,0,7505, - 861,1,0,0,0,7506,7509,3,854,427,0,7507,7509,1,0,0,0,7508,7506,1, - 0,0,0,7508,7507,1,0,0,0,7509,863,1,0,0,0,7510,7513,5,128,0,0,7511, - 7513,1,0,0,0,7512,7510,1,0,0,0,7512,7511,1,0,0,0,7513,865,1,0,0, - 0,7514,7517,5,113,0,0,7515,7517,1,0,0,0,7516,7514,1,0,0,0,7516,7515, - 1,0,0,0,7517,867,1,0,0,0,7518,7521,5,112,0,0,7519,7521,1,0,0,0,7520, - 7518,1,0,0,0,7520,7519,1,0,0,0,7521,869,1,0,0,0,7522,7523,5,2,0, - 0,7523,7524,3,1338,669,0,7524,7525,5,3,0,0,7525,7528,1,0,0,0,7526, - 7528,1,0,0,0,7527,7522,1,0,0,0,7527,7526,1,0,0,0,7528,871,1,0,0, - 0,7529,7530,3,1336,668,0,7530,7531,3,870,435,0,7531,873,1,0,0,0, - 7532,7537,3,872,436,0,7533,7534,5,6,0,0,7534,7536,3,872,436,0,7535, - 7533,1,0,0,0,7536,7539,1,0,0,0,7537,7535,1,0,0,0,7537,7538,1,0,0, - 0,7538,875,1,0,0,0,7539,7537,1,0,0,0,7540,7543,3,874,437,0,7541, - 7543,1,0,0,0,7542,7540,1,0,0,0,7542,7541,1,0,0,0,7543,877,1,0,0, - 0,7544,7545,5,203,0,0,7545,7561,3,880,440,0,7546,7547,5,203,0,0, - 7547,7548,3,854,427,0,7548,7549,3,864,432,0,7549,7550,3,880,440, - 0,7550,7561,1,0,0,0,7551,7552,5,203,0,0,7552,7553,5,128,0,0,7553, - 7561,3,880,440,0,7554,7555,5,203,0,0,7555,7556,5,2,0,0,7556,7557, - 3,882,441,0,7557,7558,5,3,0,0,7558,7559,3,880,440,0,7559,7561,1, - 0,0,0,7560,7544,1,0,0,0,7560,7546,1,0,0,0,7560,7551,1,0,0,0,7560, - 7554,1,0,0,0,7561,879,1,0,0,0,7562,7572,3,960,480,0,7563,7572,3, - 902,451,0,7564,7572,3,942,471,0,7565,7572,3,928,464,0,7566,7572, - 3,952,476,0,7567,7572,3,264,132,0,7568,7572,3,270,135,0,7569,7572, - 3,276,138,0,7570,7572,3,896,448,0,7571,7562,1,0,0,0,7571,7563,1, - 0,0,0,7571,7564,1,0,0,0,7571,7565,1,0,0,0,7571,7566,1,0,0,0,7571, - 7567,1,0,0,0,7571,7568,1,0,0,0,7571,7569,1,0,0,0,7571,7570,1,0,0, - 0,7572,881,1,0,0,0,7573,7578,3,884,442,0,7574,7575,5,6,0,0,7575, - 7577,3,884,442,0,7576,7574,1,0,0,0,7577,7580,1,0,0,0,7578,7576,1, - 0,0,0,7578,7579,1,0,0,0,7579,883,1,0,0,0,7580,7578,1,0,0,0,7581, - 7582,3,886,443,0,7582,7583,3,888,444,0,7583,885,1,0,0,0,7584,7587, - 3,1378,689,0,7585,7587,3,854,427,0,7586,7584,1,0,0,0,7586,7585,1, - 0,0,0,7587,887,1,0,0,0,7588,7592,3,66,33,0,7589,7592,3,292,146,0, - 7590,7592,1,0,0,0,7591,7588,1,0,0,0,7591,7589,1,0,0,0,7591,7590, - 1,0,0,0,7592,889,1,0,0,0,7593,7594,5,283,0,0,7594,7595,3,1340,670, - 0,7595,7596,3,892,446,0,7596,7597,5,36,0,0,7597,7598,3,894,447,0, - 7598,891,1,0,0,0,7599,7600,5,2,0,0,7600,7601,3,1286,643,0,7601,7602, - 5,3,0,0,7602,7605,1,0,0,0,7603,7605,1,0,0,0,7604,7599,1,0,0,0,7604, - 7603,1,0,0,0,7605,893,1,0,0,0,7606,7611,3,960,480,0,7607,7611,3, - 902,451,0,7608,7611,3,942,471,0,7609,7611,3,928,464,0,7610,7606, - 1,0,0,0,7610,7607,1,0,0,0,7610,7608,1,0,0,0,7610,7609,1,0,0,0,7611, - 895,1,0,0,0,7612,7613,5,202,0,0,7613,7614,3,1340,670,0,7614,7615, - 3,898,449,0,7615,7640,1,0,0,0,7616,7617,5,46,0,0,7617,7618,3,174, - 87,0,7618,7619,5,92,0,0,7619,7620,3,266,133,0,7620,7621,5,36,0,0, - 7621,7622,5,202,0,0,7622,7623,3,1340,670,0,7623,7624,3,898,449,0, - 7624,7625,3,268,134,0,7625,7640,1,0,0,0,7626,7627,5,46,0,0,7627, - 7628,3,174,87,0,7628,7629,5,92,0,0,7629,7630,5,220,0,0,7630,7631, - 5,77,0,0,7631,7632,5,389,0,0,7632,7633,3,266,133,0,7633,7634,5,36, - 0,0,7634,7635,5,202,0,0,7635,7636,3,1340,670,0,7636,7637,3,898,449, - 0,7637,7638,3,268,134,0,7638,7640,1,0,0,0,7639,7612,1,0,0,0,7639, - 7616,1,0,0,0,7639,7626,1,0,0,0,7640,897,1,0,0,0,7641,7642,5,2,0, - 0,7642,7643,3,1280,640,0,7643,7644,5,3,0,0,7644,7647,1,0,0,0,7645, - 7647,1,0,0,0,7646,7641,1,0,0,0,7646,7645,1,0,0,0,7647,899,1,0,0, - 0,7648,7649,5,177,0,0,7649,7659,3,1340,670,0,7650,7651,5,177,0,0, - 7651,7652,5,283,0,0,7652,7659,3,1340,670,0,7653,7654,5,177,0,0,7654, - 7659,5,30,0,0,7655,7656,5,177,0,0,7656,7657,5,283,0,0,7657,7659, - 5,30,0,0,7658,7648,1,0,0,0,7658,7650,1,0,0,0,7658,7653,1,0,0,0,7658, - 7655,1,0,0,0,7659,901,1,0,0,0,7660,7661,3,980,490,0,7661,7662,5, - 232,0,0,7662,7663,5,71,0,0,7663,7664,3,904,452,0,7664,7665,3,906, - 453,0,7665,7666,3,914,457,0,7666,7667,3,918,459,0,7667,903,1,0,0, - 0,7668,7671,3,1336,668,0,7669,7670,5,36,0,0,7670,7672,3,1372,686, - 0,7671,7669,1,0,0,0,7671,7672,1,0,0,0,7672,905,1,0,0,0,7673,7693, - 3,960,480,0,7674,7675,5,463,0,0,7675,7676,3,908,454,0,7676,7677, - 5,450,0,0,7677,7678,3,960,480,0,7678,7693,1,0,0,0,7679,7680,5,2, - 0,0,7680,7681,3,910,455,0,7681,7686,5,3,0,0,7682,7683,5,463,0,0, - 7683,7684,3,908,454,0,7684,7685,5,450,0,0,7685,7687,1,0,0,0,7686, - 7682,1,0,0,0,7686,7687,1,0,0,0,7687,7688,1,0,0,0,7688,7689,3,960, - 480,0,7689,7693,1,0,0,0,7690,7691,5,53,0,0,7691,7693,5,415,0,0,7692, - 7673,1,0,0,0,7692,7674,1,0,0,0,7692,7679,1,0,0,0,7692,7690,1,0,0, - 0,7693,907,1,0,0,0,7694,7695,7,35,0,0,7695,909,1,0,0,0,7696,7701, - 3,912,456,0,7697,7698,5,6,0,0,7698,7700,3,912,456,0,7699,7697,1, - 0,0,0,7700,7703,1,0,0,0,7701,7699,1,0,0,0,7701,7702,1,0,0,0,7702, - 911,1,0,0,0,7703,7701,1,0,0,0,7704,7705,3,1372,686,0,7705,7706,3, - 1326,663,0,7706,913,1,0,0,0,7707,7708,5,80,0,0,7708,7709,5,464,0, - 0,7709,7710,3,916,458,0,7710,7717,5,57,0,0,7711,7712,5,362,0,0,7712, - 7713,5,326,0,0,7713,7714,3,944,472,0,7714,7715,3,1094,547,0,7715, - 7718,1,0,0,0,7716,7718,5,263,0,0,7717,7711,1,0,0,0,7717,7716,1,0, - 0,0,7718,7721,1,0,0,0,7719,7721,1,0,0,0,7720,7707,1,0,0,0,7720,7719, - 1,0,0,0,7721,915,1,0,0,0,7722,7723,5,2,0,0,7723,7724,3,598,299,0, - 7724,7725,5,3,0,0,7725,7726,3,1094,547,0,7726,7732,1,0,0,0,7727, - 7728,5,80,0,0,7728,7729,5,45,0,0,7729,7732,3,1340,670,0,7730,7732, - 1,0,0,0,7731,7722,1,0,0,0,7731,7727,1,0,0,0,7731,7730,1,0,0,0,7732, - 917,1,0,0,0,7733,7734,5,87,0,0,7734,7737,3,1330,665,0,7735,7737, - 1,0,0,0,7736,7733,1,0,0,0,7736,7735,1,0,0,0,7737,919,1,0,0,0,7738, - 7740,5,253,0,0,7739,7741,5,71,0,0,7740,7739,1,0,0,0,7740,7741,1, - 0,0,0,7741,7742,1,0,0,0,7742,7744,3,1336,668,0,7743,7745,3,1062, - 531,0,7744,7743,1,0,0,0,7744,7745,1,0,0,0,7745,7746,1,0,0,0,7746, - 7749,5,100,0,0,7747,7750,3,962,481,0,7748,7750,3,1336,668,0,7749, - 7747,1,0,0,0,7749,7748,1,0,0,0,7750,7752,1,0,0,0,7751,7753,3,1062, - 531,0,7752,7751,1,0,0,0,7752,7753,1,0,0,0,7753,7754,1,0,0,0,7754, - 7755,5,80,0,0,7755,7764,3,1162,581,0,7756,7758,3,922,461,0,7757, - 7759,3,924,462,0,7758,7757,1,0,0,0,7758,7759,1,0,0,0,7759,7765,1, - 0,0,0,7760,7762,3,924,462,0,7761,7763,3,922,461,0,7762,7761,1,0, - 0,0,7762,7763,1,0,0,0,7763,7765,1,0,0,0,7764,7756,1,0,0,0,7764,7760, - 1,0,0,0,7765,7767,1,0,0,0,7766,7768,3,926,463,0,7767,7766,1,0,0, - 0,7767,7768,1,0,0,0,7768,921,1,0,0,0,7769,7770,5,102,0,0,7770,7771, - 5,77,0,0,7771,7774,5,250,0,0,7772,7773,5,33,0,0,7773,7775,3,1162, - 581,0,7774,7772,1,0,0,0,7774,7775,1,0,0,0,7775,7777,1,0,0,0,7776, - 7778,5,93,0,0,7777,7776,1,0,0,0,7777,7778,1,0,0,0,7778,7779,1,0, - 0,0,7779,7784,5,232,0,0,7780,7781,5,2,0,0,7781,7782,3,910,455,0, - 7782,7783,5,3,0,0,7783,7785,1,0,0,0,7784,7780,1,0,0,0,7784,7785, - 1,0,0,0,7785,7786,1,0,0,0,7786,7787,3,1052,526,0,7787,923,1,0,0, - 0,7788,7789,5,102,0,0,7789,7792,5,250,0,0,7790,7791,5,33,0,0,7791, - 7793,3,1162,581,0,7792,7790,1,0,0,0,7792,7793,1,0,0,0,7793,7795, - 1,0,0,0,7794,7796,5,93,0,0,7795,7794,1,0,0,0,7795,7796,1,0,0,0,7796, - 7797,1,0,0,0,7797,7798,5,362,0,0,7798,7799,5,326,0,0,7799,7800,3, - 944,472,0,7800,925,1,0,0,0,7801,7802,5,102,0,0,7802,7804,5,250,0, - 0,7803,7805,5,93,0,0,7804,7803,1,0,0,0,7804,7805,1,0,0,0,7805,7806, - 1,0,0,0,7806,7807,5,182,0,0,7807,927,1,0,0,0,7808,7809,3,980,490, - 0,7809,7810,5,182,0,0,7810,7811,5,64,0,0,7811,7812,3,1078,539,0, - 7812,7813,3,930,465,0,7813,7814,3,1096,548,0,7814,7815,3,918,459, - 0,7815,929,1,0,0,0,7816,7817,5,100,0,0,7817,7820,3,1056,528,0,7818, - 7820,1,0,0,0,7819,7816,1,0,0,0,7819,7818,1,0,0,0,7820,931,1,0,0, - 0,7821,7822,5,247,0,0,7822,7823,3,988,494,0,7823,7824,3,1076,538, - 0,7824,7825,3,934,467,0,7825,7826,3,938,469,0,7826,933,1,0,0,0,7827, - 7828,5,68,0,0,7828,7829,3,936,468,0,7829,7830,5,256,0,0,7830,7833, - 1,0,0,0,7831,7833,1,0,0,0,7832,7827,1,0,0,0,7832,7831,1,0,0,0,7833, - 935,1,0,0,0,7834,7835,5,131,0,0,7835,7847,7,36,0,0,7836,7837,5,407, - 0,0,7837,7847,7,36,0,0,7838,7843,5,327,0,0,7839,7840,5,362,0,0,7840, - 7844,5,201,0,0,7841,7842,5,407,0,0,7842,7844,5,201,0,0,7843,7839, - 1,0,0,0,7843,7841,1,0,0,0,7843,7844,1,0,0,0,7844,7847,1,0,0,0,7845, - 7847,5,201,0,0,7846,7834,1,0,0,0,7846,7836,1,0,0,0,7846,7838,1,0, - 0,0,7846,7845,1,0,0,0,7847,937,1,0,0,0,7848,7851,5,265,0,0,7849, - 7851,1,0,0,0,7850,7848,1,0,0,0,7850,7849,1,0,0,0,7851,939,1,0,0, - 0,7852,7857,5,265,0,0,7853,7854,5,465,0,0,7854,7857,5,466,0,0,7855, - 7857,1,0,0,0,7856,7852,1,0,0,0,7856,7853,1,0,0,0,7856,7855,1,0,0, - 0,7857,941,1,0,0,0,7858,7859,3,980,490,0,7859,7860,5,362,0,0,7860, - 7861,3,1078,539,0,7861,7862,5,326,0,0,7862,7863,3,944,472,0,7863, - 7864,3,1054,527,0,7864,7865,3,1096,548,0,7865,7866,3,918,459,0,7866, - 943,1,0,0,0,7867,7872,3,946,473,0,7868,7869,5,6,0,0,7869,7871,3, - 946,473,0,7870,7868,1,0,0,0,7871,7874,1,0,0,0,7872,7870,1,0,0,0, - 7872,7873,1,0,0,0,7873,945,1,0,0,0,7874,7872,1,0,0,0,7875,7876,3, - 948,474,0,7876,7877,5,10,0,0,7877,7878,3,1162,581,0,7878,7886,1, - 0,0,0,7879,7880,5,2,0,0,7880,7881,3,950,475,0,7881,7882,5,3,0,0, - 7882,7883,5,10,0,0,7883,7884,3,1162,581,0,7884,7886,1,0,0,0,7885, - 7875,1,0,0,0,7885,7879,1,0,0,0,7886,947,1,0,0,0,7887,7888,3,1372, - 686,0,7888,7889,3,1326,663,0,7889,949,1,0,0,0,7890,7895,3,948,474, - 0,7891,7892,5,6,0,0,7892,7894,3,948,474,0,7893,7891,1,0,0,0,7894, - 7897,1,0,0,0,7895,7893,1,0,0,0,7895,7896,1,0,0,0,7896,951,1,0,0, - 0,7897,7895,1,0,0,0,7898,7899,5,178,0,0,7899,7900,3,954,477,0,7900, - 7901,3,956,478,0,7901,7902,5,172,0,0,7902,7903,3,958,479,0,7903, - 7904,5,62,0,0,7904,7905,3,960,480,0,7905,953,1,0,0,0,7906,7907,3, - 1340,670,0,7907,955,1,0,0,0,7908,7909,5,262,0,0,7909,7914,5,317, - 0,0,7910,7914,5,317,0,0,7911,7914,5,107,0,0,7912,7914,5,231,0,0, - 7913,7908,1,0,0,0,7913,7910,1,0,0,0,7913,7911,1,0,0,0,7913,7912, - 1,0,0,0,7914,7917,1,0,0,0,7915,7913,1,0,0,0,7915,7916,1,0,0,0,7916, - 957,1,0,0,0,7917,7915,1,0,0,0,7918,7924,1,0,0,0,7919,7920,5,105, - 0,0,7920,7924,5,217,0,0,7921,7922,5,372,0,0,7922,7924,5,217,0,0, - 7923,7918,1,0,0,0,7923,7919,1,0,0,0,7923,7921,1,0,0,0,7924,959,1, - 0,0,0,7925,7928,3,964,482,0,7926,7928,3,962,481,0,7927,7925,1,0, - 0,0,7927,7926,1,0,0,0,7928,961,1,0,0,0,7929,7930,5,2,0,0,7930,7931, - 3,964,482,0,7931,7932,5,3,0,0,7932,7938,1,0,0,0,7933,7934,5,2,0, - 0,7934,7935,3,962,481,0,7935,7936,5,3,0,0,7936,7938,1,0,0,0,7937, - 7929,1,0,0,0,7937,7933,1,0,0,0,7938,963,1,0,0,0,7939,7940,3,966, - 483,0,7940,7947,3,996,498,0,7941,7942,3,1040,520,0,7942,7943,3,1006, - 503,0,7943,7948,1,0,0,0,7944,7945,3,1004,502,0,7945,7946,3,1042, - 521,0,7946,7948,1,0,0,0,7947,7941,1,0,0,0,7947,7944,1,0,0,0,7947, - 7948,1,0,0,0,7948,7961,1,0,0,0,7949,7950,3,972,486,0,7950,7951,3, - 966,483,0,7951,7958,3,996,498,0,7952,7953,3,1040,520,0,7953,7954, - 3,1006,503,0,7954,7959,1,0,0,0,7955,7956,3,1004,502,0,7956,7957, - 3,1042,521,0,7957,7959,1,0,0,0,7958,7952,1,0,0,0,7958,7955,1,0,0, - 0,7958,7959,1,0,0,0,7959,7961,1,0,0,0,7960,7939,1,0,0,0,7960,7949, - 1,0,0,0,7961,965,1,0,0,0,7962,7969,3,968,484,0,7963,7964,7,37,0, - 0,7964,7965,3,990,495,0,7965,7966,3,968,484,0,7966,7968,1,0,0,0, - 7967,7963,1,0,0,0,7968,7971,1,0,0,0,7969,7967,1,0,0,0,7969,7970, - 1,0,0,0,7970,967,1,0,0,0,7971,7969,1,0,0,0,7972,7979,3,970,485,0, - 7973,7974,5,70,0,0,7974,7975,3,990,495,0,7975,7976,3,970,485,0,7976, - 7978,1,0,0,0,7977,7973,1,0,0,0,7978,7981,1,0,0,0,7979,7977,1,0,0, - 0,7979,7980,1,0,0,0,7980,969,1,0,0,0,7981,7979,1,0,0,0,7982,7990, - 5,88,0,0,7983,7984,3,994,497,0,7984,7985,3,982,491,0,7985,7986,3, - 1328,664,0,7986,7991,1,0,0,0,7987,7988,3,992,496,0,7988,7989,3,1330, - 665,0,7989,7991,1,0,0,0,7990,7983,1,0,0,0,7990,7987,1,0,0,0,7991, - 7992,1,0,0,0,7992,7993,3,982,491,0,7993,7994,3,1054,527,0,7994,7995, - 3,1094,547,0,7995,7996,3,1024,512,0,7996,7997,3,1038,519,0,7997, - 7998,3,1240,620,0,7998,8004,1,0,0,0,7999,8004,3,1052,526,0,8000, - 8001,5,92,0,0,8001,8004,3,1074,537,0,8002,8004,3,962,481,0,8003, - 7982,1,0,0,0,8003,7999,1,0,0,0,8003,8000,1,0,0,0,8003,8002,1,0,0, - 0,8004,971,1,0,0,0,8005,8007,5,105,0,0,8006,8008,5,296,0,0,8007, - 8006,1,0,0,0,8007,8008,1,0,0,0,8008,8009,1,0,0,0,8009,8010,3,974, - 487,0,8010,973,1,0,0,0,8011,8016,3,976,488,0,8012,8013,5,6,0,0,8013, - 8015,3,976,488,0,8014,8012,1,0,0,0,8015,8018,1,0,0,0,8016,8014,1, - 0,0,0,8016,8017,1,0,0,0,8017,975,1,0,0,0,8018,8016,1,0,0,0,8019, - 8020,3,1340,670,0,8020,8021,3,870,435,0,8021,8022,5,36,0,0,8022, - 8023,3,978,489,0,8023,8024,5,2,0,0,8024,8025,3,894,447,0,8025,8026, - 5,3,0,0,8026,977,1,0,0,0,8027,8032,5,251,0,0,8028,8029,5,77,0,0, - 8029,8032,5,251,0,0,8030,8032,1,0,0,0,8031,8027,1,0,0,0,8031,8028, - 1,0,0,0,8031,8030,1,0,0,0,8032,979,1,0,0,0,8033,8036,3,972,486,0, - 8034,8036,1,0,0,0,8035,8033,1,0,0,0,8035,8034,1,0,0,0,8036,981,1, - 0,0,0,8037,8042,5,71,0,0,8038,8039,3,984,492,0,8039,8040,3,986,493, - 0,8040,8043,1,0,0,0,8041,8043,3,1566,783,0,8042,8038,1,0,0,0,8042, - 8041,1,0,0,0,8043,8046,1,0,0,0,8044,8046,1,0,0,0,8045,8037,1,0,0, - 0,8045,8044,1,0,0,0,8046,983,1,0,0,0,8047,8050,1,0,0,0,8048,8050, - 5,339,0,0,8049,8047,1,0,0,0,8049,8048,1,0,0,0,8050,985,1,0,0,0,8051, - 8053,7,38,0,0,8052,8051,1,0,0,0,8052,8053,1,0,0,0,8053,8054,1,0, - 0,0,8054,8055,7,11,0,0,8055,8056,3,988,494,0,8056,8057,3,1336,668, - 0,8057,8066,1,0,0,0,8058,8059,5,360,0,0,8059,8060,3,988,494,0,8060, - 8061,3,1336,668,0,8061,8066,1,0,0,0,8062,8063,5,92,0,0,8063,8066, - 3,1336,668,0,8064,8066,3,1336,668,0,8065,8052,1,0,0,0,8065,8058, - 1,0,0,0,8065,8062,1,0,0,0,8065,8064,1,0,0,0,8066,987,1,0,0,0,8067, - 8070,5,92,0,0,8068,8070,1,0,0,0,8069,8067,1,0,0,0,8069,8068,1,0, - 0,0,8070,989,1,0,0,0,8071,8075,5,30,0,0,8072,8075,5,56,0,0,8073, - 8075,1,0,0,0,8074,8071,1,0,0,0,8074,8072,1,0,0,0,8074,8073,1,0,0, - 0,8075,991,1,0,0,0,8076,8082,5,56,0,0,8077,8078,5,80,0,0,8078,8079, - 5,2,0,0,8079,8080,3,1280,640,0,8080,8081,5,3,0,0,8081,8083,1,0,0, - 0,8082,8077,1,0,0,0,8082,8083,1,0,0,0,8083,993,1,0,0,0,8084,8087, - 5,30,0,0,8085,8087,1,0,0,0,8086,8084,1,0,0,0,8086,8085,1,0,0,0,8087, - 995,1,0,0,0,8088,8091,3,998,499,0,8089,8091,1,0,0,0,8090,8088,1, - 0,0,0,8090,8089,1,0,0,0,8091,997,1,0,0,0,8092,8093,5,83,0,0,8093, - 8094,5,147,0,0,8094,8095,3,1000,500,0,8095,999,1,0,0,0,8096,8101, - 3,1002,501,0,8097,8098,5,6,0,0,8098,8100,3,1002,501,0,8099,8097, - 1,0,0,0,8100,8103,1,0,0,0,8101,8099,1,0,0,0,8101,8102,1,0,0,0,8102, - 1001,1,0,0,0,8103,8101,1,0,0,0,8104,8108,3,1162,581,0,8105,8106, - 5,100,0,0,8106,8109,3,1276,638,0,8107,8109,3,612,306,0,8108,8105, - 1,0,0,0,8108,8107,1,0,0,0,8109,8110,1,0,0,0,8110,8111,3,614,307, - 0,8111,1003,1,0,0,0,8112,8114,3,1008,504,0,8113,8115,3,1010,505, - 0,8114,8113,1,0,0,0,8114,8115,1,0,0,0,8115,8121,1,0,0,0,8116,8118, - 3,1010,505,0,8117,8119,3,1008,504,0,8118,8117,1,0,0,0,8118,8119, - 1,0,0,0,8119,8121,1,0,0,0,8120,8112,1,0,0,0,8120,8116,1,0,0,0,8121, - 1005,1,0,0,0,8122,8125,3,1004,502,0,8123,8125,1,0,0,0,8124,8122, - 1,0,0,0,8124,8123,1,0,0,0,8125,1007,1,0,0,0,8126,8127,5,74,0,0,8127, - 8130,3,1012,506,0,8128,8129,5,6,0,0,8129,8131,3,1014,507,0,8130, - 8128,1,0,0,0,8130,8131,1,0,0,0,8131,8150,1,0,0,0,8132,8133,5,61, - 0,0,8133,8147,3,1022,511,0,8134,8135,3,1016,508,0,8135,8139,3,1020, - 510,0,8136,8140,5,81,0,0,8137,8138,5,105,0,0,8138,8140,5,467,0,0, - 8139,8136,1,0,0,0,8139,8137,1,0,0,0,8140,8148,1,0,0,0,8141,8145, - 3,1020,510,0,8142,8146,5,81,0,0,8143,8144,5,105,0,0,8144,8146,5, - 467,0,0,8145,8142,1,0,0,0,8145,8143,1,0,0,0,8146,8148,1,0,0,0,8147, - 8134,1,0,0,0,8147,8141,1,0,0,0,8148,8150,1,0,0,0,8149,8126,1,0,0, - 0,8149,8132,1,0,0,0,8150,1009,1,0,0,0,8151,8156,5,79,0,0,8152,8157, - 3,1014,507,0,8153,8154,3,1016,508,0,8154,8155,3,1020,510,0,8155, - 8157,1,0,0,0,8156,8152,1,0,0,0,8156,8153,1,0,0,0,8157,1011,1,0,0, - 0,8158,8161,3,1162,581,0,8159,8161,5,30,0,0,8160,8158,1,0,0,0,8160, - 8159,1,0,0,0,8161,1013,1,0,0,0,8162,8163,3,1162,581,0,8163,1015, - 1,0,0,0,8164,8170,3,1206,603,0,8165,8166,5,12,0,0,8166,8170,3,1018, - 509,0,8167,8168,5,13,0,0,8168,8170,3,1018,509,0,8169,8164,1,0,0, - 0,8169,8165,1,0,0,0,8169,8167,1,0,0,0,8170,1017,1,0,0,0,8171,8174, - 3,1356,678,0,8172,8174,3,1354,677,0,8173,8171,1,0,0,0,8173,8172, - 1,0,0,0,8174,1019,1,0,0,0,8175,8176,7,39,0,0,8176,1021,1,0,0,0,8177, - 8178,7,40,0,0,8178,1023,1,0,0,0,8179,8180,5,66,0,0,8180,8181,5,147, - 0,0,8181,8184,3,1026,513,0,8182,8184,1,0,0,0,8183,8179,1,0,0,0,8183, - 8182,1,0,0,0,8184,1025,1,0,0,0,8185,8190,3,1028,514,0,8186,8187, - 5,6,0,0,8187,8189,3,1028,514,0,8188,8186,1,0,0,0,8189,8192,1,0,0, - 0,8190,8188,1,0,0,0,8190,8191,1,0,0,0,8191,1027,1,0,0,0,8192,8190, - 1,0,0,0,8193,8199,3,1030,515,0,8194,8199,3,1034,517,0,8195,8199, - 3,1032,516,0,8196,8199,3,1036,518,0,8197,8199,3,1162,581,0,8198, - 8193,1,0,0,0,8198,8194,1,0,0,0,8198,8195,1,0,0,0,8198,8196,1,0,0, - 0,8198,8197,1,0,0,0,8199,1029,1,0,0,0,8200,8201,5,2,0,0,8201,8202, - 5,3,0,0,8202,1031,1,0,0,0,8203,8204,5,468,0,0,8204,8205,5,2,0,0, - 8205,8206,3,1280,640,0,8206,8207,5,3,0,0,8207,1033,1,0,0,0,8208, - 8209,5,469,0,0,8209,8210,5,2,0,0,8210,8211,3,1280,640,0,8211,8212, - 5,3,0,0,8212,1035,1,0,0,0,8213,8214,5,470,0,0,8214,8215,5,471,0, - 0,8215,8216,5,2,0,0,8216,8217,3,1026,513,0,8217,8218,5,3,0,0,8218, - 1037,1,0,0,0,8219,8220,5,67,0,0,8220,8223,3,1162,581,0,8221,8223, - 1,0,0,0,8222,8219,1,0,0,0,8222,8221,1,0,0,0,8223,1039,1,0,0,0,8224, - 8229,3,1044,522,0,8225,8226,5,62,0,0,8226,8227,5,293,0,0,8227,8229, - 5,81,0,0,8228,8224,1,0,0,0,8228,8225,1,0,0,0,8229,1041,1,0,0,0,8230, - 8233,3,1040,520,0,8231,8233,1,0,0,0,8232,8230,1,0,0,0,8232,8231, - 1,0,0,0,8233,1043,1,0,0,0,8234,8236,3,1046,523,0,8235,8234,1,0,0, - 0,8236,8237,1,0,0,0,8237,8235,1,0,0,0,8237,8238,1,0,0,0,8238,1045, - 1,0,0,0,8239,8240,3,1048,524,0,8240,8241,3,1050,525,0,8241,8242, - 3,940,470,0,8242,1047,1,0,0,0,8243,8253,5,62,0,0,8244,8245,5,262, - 0,0,8245,8247,5,236,0,0,8246,8244,1,0,0,0,8246,8247,1,0,0,0,8247, - 8248,1,0,0,0,8248,8254,5,362,0,0,8249,8251,5,236,0,0,8250,8249,1, - 0,0,0,8250,8251,1,0,0,0,8251,8252,1,0,0,0,8252,8254,5,327,0,0,8253, - 8246,1,0,0,0,8253,8250,1,0,0,0,8254,1049,1,0,0,0,8255,8256,5,268, - 0,0,8256,8259,3,1334,667,0,8257,8259,1,0,0,0,8258,8255,1,0,0,0,8258, - 8257,1,0,0,0,8259,1051,1,0,0,0,8260,8261,5,415,0,0,8261,8262,5,2, - 0,0,8262,8263,3,1280,640,0,8263,8271,5,3,0,0,8264,8265,5,6,0,0,8265, - 8266,5,2,0,0,8266,8267,3,1280,640,0,8267,8268,5,3,0,0,8268,8270, - 1,0,0,0,8269,8264,1,0,0,0,8270,8273,1,0,0,0,8271,8269,1,0,0,0,8271, - 8272,1,0,0,0,8272,1053,1,0,0,0,8273,8271,1,0,0,0,8274,8275,5,64, - 0,0,8275,8278,3,1056,528,0,8276,8278,1,0,0,0,8277,8274,1,0,0,0,8277, - 8276,1,0,0,0,8278,1055,1,0,0,0,8279,8289,3,1058,529,0,8280,8285, - 3,1060,530,0,8281,8282,5,6,0,0,8282,8284,3,1060,530,0,8283,8281, - 1,0,0,0,8284,8287,1,0,0,0,8285,8283,1,0,0,0,8285,8286,1,0,0,0,8286, - 8289,1,0,0,0,8287,8285,1,0,0,0,8288,8279,1,0,0,0,8288,8280,1,0,0, - 0,8289,1057,1,0,0,0,8290,8293,3,1060,530,0,8291,8292,5,6,0,0,8292, - 8294,3,1060,530,0,8293,8291,1,0,0,0,8294,8295,1,0,0,0,8295,8293, - 1,0,0,0,8295,8296,1,0,0,0,8296,1059,1,0,0,0,8297,8298,3,1074,537, - 0,8298,8300,3,1064,532,0,8299,8301,3,1080,540,0,8300,8299,1,0,0, - 0,8300,8301,1,0,0,0,8301,8347,1,0,0,0,8302,8303,3,1084,542,0,8303, - 8304,3,1068,534,0,8304,8347,1,0,0,0,8305,8306,3,1104,552,0,8306, - 8307,3,1064,532,0,8307,8347,1,0,0,0,8308,8309,3,962,481,0,8309,8310, - 3,1064,532,0,8310,8347,1,0,0,0,8311,8321,5,72,0,0,8312,8313,3,1104, - 552,0,8313,8314,3,1064,532,0,8314,8322,1,0,0,0,8315,8316,3,1084, - 542,0,8316,8317,3,1068,534,0,8317,8322,1,0,0,0,8318,8319,3,962,481, - 0,8319,8320,3,1064,532,0,8320,8322,1,0,0,0,8321,8312,1,0,0,0,8321, - 8315,1,0,0,0,8321,8318,1,0,0,0,8322,8347,1,0,0,0,8323,8324,5,2,0, - 0,8324,8341,3,1060,530,0,8325,8326,5,110,0,0,8326,8327,5,118,0,0, - 8327,8342,3,1060,530,0,8328,8330,5,121,0,0,8329,8331,3,1070,535, - 0,8330,8329,1,0,0,0,8330,8331,1,0,0,0,8331,8332,1,0,0,0,8332,8333, - 5,118,0,0,8333,8342,3,1060,530,0,8334,8336,3,1070,535,0,8335,8334, - 1,0,0,0,8335,8336,1,0,0,0,8336,8337,1,0,0,0,8337,8338,5,118,0,0, - 8338,8339,3,1060,530,0,8339,8340,3,1072,536,0,8340,8342,1,0,0,0, - 8341,8325,1,0,0,0,8341,8328,1,0,0,0,8341,8335,1,0,0,0,8341,8342, - 1,0,0,0,8342,8343,1,0,0,0,8343,8344,5,3,0,0,8344,8345,3,1064,532, - 0,8345,8347,1,0,0,0,8346,8297,1,0,0,0,8346,8302,1,0,0,0,8346,8305, - 1,0,0,0,8346,8308,1,0,0,0,8346,8311,1,0,0,0,8346,8323,1,0,0,0,8347, - 8366,1,0,0,0,8348,8349,5,110,0,0,8349,8350,5,118,0,0,8350,8365,3, - 1060,530,0,8351,8353,5,121,0,0,8352,8354,3,1070,535,0,8353,8352, - 1,0,0,0,8353,8354,1,0,0,0,8354,8355,1,0,0,0,8355,8356,5,118,0,0, - 8356,8365,3,1060,530,0,8357,8359,3,1070,535,0,8358,8357,1,0,0,0, - 8358,8359,1,0,0,0,8359,8360,1,0,0,0,8360,8361,5,118,0,0,8361,8362, - 3,1060,530,0,8362,8363,3,1072,536,0,8363,8365,1,0,0,0,8364,8348, - 1,0,0,0,8364,8351,1,0,0,0,8364,8358,1,0,0,0,8365,8368,1,0,0,0,8366, - 8364,1,0,0,0,8366,8367,1,0,0,0,8367,1061,1,0,0,0,8368,8366,1,0,0, - 0,8369,8371,5,36,0,0,8370,8369,1,0,0,0,8370,8371,1,0,0,0,8371,8372, - 1,0,0,0,8372,8377,3,1372,686,0,8373,8374,5,2,0,0,8374,8375,3,1338, - 669,0,8375,8376,5,3,0,0,8376,8378,1,0,0,0,8377,8373,1,0,0,0,8377, - 8378,1,0,0,0,8378,1063,1,0,0,0,8379,8382,3,1066,533,0,8380,8382, - 1,0,0,0,8381,8379,1,0,0,0,8381,8380,1,0,0,0,8382,1065,1,0,0,0,8383, - 8385,5,36,0,0,8384,8383,1,0,0,0,8384,8385,1,0,0,0,8385,8386,1,0, - 0,0,8386,8391,3,1374,687,0,8387,8388,5,2,0,0,8388,8389,3,1338,669, - 0,8389,8390,5,3,0,0,8390,8392,1,0,0,0,8391,8387,1,0,0,0,8391,8392, - 1,0,0,0,8392,1067,1,0,0,0,8393,8407,3,1062,531,0,8394,8396,5,36, - 0,0,8395,8397,3,1372,686,0,8396,8395,1,0,0,0,8396,8397,1,0,0,0,8397, - 8400,1,0,0,0,8398,8400,3,1372,686,0,8399,8394,1,0,0,0,8399,8398, - 1,0,0,0,8400,8401,1,0,0,0,8401,8402,5,2,0,0,8402,8403,3,1100,550, - 0,8403,8404,5,3,0,0,8404,8407,1,0,0,0,8405,8407,1,0,0,0,8406,8393, - 1,0,0,0,8406,8399,1,0,0,0,8406,8405,1,0,0,0,8407,1069,1,0,0,0,8408, - 8410,7,41,0,0,8409,8411,5,123,0,0,8410,8409,1,0,0,0,8410,8411,1, - 0,0,0,8411,1071,1,0,0,0,8412,8413,5,100,0,0,8413,8414,5,2,0,0,8414, - 8415,3,1338,669,0,8415,8416,5,3,0,0,8416,8420,1,0,0,0,8417,8418, - 5,80,0,0,8418,8420,3,1162,581,0,8419,8412,1,0,0,0,8419,8417,1,0, - 0,0,8420,1073,1,0,0,0,8421,8423,3,1336,668,0,8422,8424,5,9,0,0,8423, - 8422,1,0,0,0,8423,8424,1,0,0,0,8424,8434,1,0,0,0,8425,8431,5,81, - 0,0,8426,8432,3,1336,668,0,8427,8428,5,2,0,0,8428,8429,3,1336,668, - 0,8429,8430,5,3,0,0,8430,8432,1,0,0,0,8431,8426,1,0,0,0,8431,8427, - 1,0,0,0,8432,8434,1,0,0,0,8433,8421,1,0,0,0,8433,8425,1,0,0,0,8434, - 1075,1,0,0,0,8435,8440,3,1074,537,0,8436,8437,5,6,0,0,8437,8439, - 3,1074,537,0,8438,8436,1,0,0,0,8439,8442,1,0,0,0,8440,8438,1,0,0, - 0,8440,8441,1,0,0,0,8441,1077,1,0,0,0,8442,8440,1,0,0,0,8443,8448, - 3,1074,537,0,8444,8446,5,36,0,0,8445,8444,1,0,0,0,8445,8446,1,0, - 0,0,8446,8447,1,0,0,0,8447,8449,3,1372,686,0,8448,8445,1,0,0,0,8448, - 8449,1,0,0,0,8449,1079,1,0,0,0,8450,8451,5,472,0,0,8451,8452,3,1346, - 673,0,8452,8453,5,2,0,0,8453,8454,3,1280,640,0,8454,8455,5,3,0,0, - 8455,8456,3,1082,541,0,8456,1081,1,0,0,0,8457,8458,5,303,0,0,8458, - 8459,5,2,0,0,8459,8460,3,1162,581,0,8460,8461,5,3,0,0,8461,8464, - 1,0,0,0,8462,8464,1,0,0,0,8463,8457,1,0,0,0,8463,8462,1,0,0,0,8464, - 1083,1,0,0,0,8465,8466,3,1214,607,0,8466,8467,3,1092,546,0,8467, - 8476,1,0,0,0,8468,8469,5,313,0,0,8469,8470,5,64,0,0,8470,8471,5, - 2,0,0,8471,8472,3,1088,544,0,8472,8473,5,3,0,0,8473,8474,3,1092, - 546,0,8474,8476,1,0,0,0,8475,8465,1,0,0,0,8475,8468,1,0,0,0,8476, - 1085,1,0,0,0,8477,8478,3,1214,607,0,8478,8479,3,1090,545,0,8479, - 1087,1,0,0,0,8480,8485,3,1086,543,0,8481,8482,5,6,0,0,8482,8484, - 3,1086,543,0,8483,8481,1,0,0,0,8484,8487,1,0,0,0,8485,8483,1,0,0, - 0,8485,8486,1,0,0,0,8486,1089,1,0,0,0,8487,8485,1,0,0,0,8488,8489, - 5,36,0,0,8489,8490,5,2,0,0,8490,8491,3,1100,550,0,8491,8492,5,3, - 0,0,8492,8495,1,0,0,0,8493,8495,1,0,0,0,8494,8488,1,0,0,0,8494,8493, - 1,0,0,0,8495,1091,1,0,0,0,8496,8497,5,105,0,0,8497,8500,5,473,0, - 0,8498,8500,1,0,0,0,8499,8496,1,0,0,0,8499,8498,1,0,0,0,8500,1093, - 1,0,0,0,8501,8502,5,103,0,0,8502,8505,3,1162,581,0,8503,8505,1,0, - 0,0,8504,8501,1,0,0,0,8504,8503,1,0,0,0,8505,1095,1,0,0,0,8506,8511, - 5,103,0,0,8507,8508,5,434,0,0,8508,8509,5,268,0,0,8509,8512,3,954, - 477,0,8510,8512,3,1162,581,0,8511,8507,1,0,0,0,8511,8510,1,0,0,0, - 8512,8515,1,0,0,0,8513,8515,1,0,0,0,8514,8506,1,0,0,0,8514,8513, - 1,0,0,0,8515,1097,1,0,0,0,8516,8519,3,1100,550,0,8517,8519,1,0,0, - 0,8518,8516,1,0,0,0,8518,8517,1,0,0,0,8519,1099,1,0,0,0,8520,8525, - 3,1102,551,0,8521,8522,5,6,0,0,8522,8524,3,1102,551,0,8523,8521, - 1,0,0,0,8524,8527,1,0,0,0,8525,8523,1,0,0,0,8525,8526,1,0,0,0,8526, - 1101,1,0,0,0,8527,8525,1,0,0,0,8528,8529,3,1372,686,0,8529,8530, - 3,1118,559,0,8530,8531,3,110,55,0,8531,1103,1,0,0,0,8532,8533,5, - 474,0,0,8533,8549,5,2,0,0,8534,8535,3,1206,603,0,8535,8536,3,1232, - 616,0,8536,8537,5,475,0,0,8537,8538,3,1106,553,0,8538,8550,1,0,0, - 0,8539,8540,5,476,0,0,8540,8541,5,2,0,0,8541,8542,3,1114,557,0,8542, - 8543,5,3,0,0,8543,8544,5,6,0,0,8544,8545,3,1206,603,0,8545,8546, - 3,1232,616,0,8546,8547,5,475,0,0,8547,8548,3,1106,553,0,8548,8550, - 1,0,0,0,8549,8534,1,0,0,0,8549,8539,1,0,0,0,8550,8551,1,0,0,0,8551, - 8552,5,3,0,0,8552,1105,1,0,0,0,8553,8558,3,1108,554,0,8554,8555, - 5,6,0,0,8555,8557,3,1108,554,0,8556,8554,1,0,0,0,8557,8560,1,0,0, - 0,8558,8556,1,0,0,0,8558,8559,1,0,0,0,8559,1107,1,0,0,0,8560,8558, - 1,0,0,0,8561,8568,3,1372,686,0,8562,8564,3,1118,559,0,8563,8565, - 3,1110,555,0,8564,8563,1,0,0,0,8564,8565,1,0,0,0,8565,8569,1,0,0, - 0,8566,8567,5,62,0,0,8567,8569,5,473,0,0,8568,8562,1,0,0,0,8568, - 8566,1,0,0,0,8569,1109,1,0,0,0,8570,8572,3,1112,556,0,8571,8570, - 1,0,0,0,8572,8573,1,0,0,0,8573,8571,1,0,0,0,8573,8574,1,0,0,0,8574, - 1111,1,0,0,0,8575,8576,5,53,0,0,8576,8584,3,1162,581,0,8577,8578, - 3,1382,691,0,8578,8579,3,1162,581,0,8579,8584,1,0,0,0,8580,8581, - 5,77,0,0,8581,8584,5,78,0,0,8582,8584,5,78,0,0,8583,8575,1,0,0,0, - 8583,8577,1,0,0,0,8583,8580,1,0,0,0,8583,8582,1,0,0,0,8584,1113, - 1,0,0,0,8585,8590,3,1116,558,0,8586,8587,5,6,0,0,8587,8589,3,1116, - 558,0,8588,8586,1,0,0,0,8589,8592,1,0,0,0,8590,8588,1,0,0,0,8590, - 8591,1,0,0,0,8591,1115,1,0,0,0,8592,8590,1,0,0,0,8593,8594,3,1204, - 602,0,8594,8595,5,36,0,0,8595,8596,3,1380,690,0,8596,8600,1,0,0, - 0,8597,8598,5,53,0,0,8598,8600,3,1204,602,0,8599,8593,1,0,0,0,8599, - 8597,1,0,0,0,8600,1117,1,0,0,0,8601,8603,5,408,0,0,8602,8601,1,0, - 0,0,8602,8603,1,0,0,0,8603,8604,1,0,0,0,8604,8613,3,1122,561,0,8605, - 8614,3,1120,560,0,8606,8611,5,35,0,0,8607,8608,5,4,0,0,8608,8609, - 3,1356,678,0,8609,8610,5,5,0,0,8610,8612,1,0,0,0,8611,8607,1,0,0, - 0,8611,8612,1,0,0,0,8612,8614,1,0,0,0,8613,8605,1,0,0,0,8613,8606, - 1,0,0,0,8614,8620,1,0,0,0,8615,8616,3,1336,668,0,8616,8617,5,27, - 0,0,8617,8618,7,42,0,0,8618,8620,1,0,0,0,8619,8602,1,0,0,0,8619, - 8615,1,0,0,0,8620,1119,1,0,0,0,8621,8623,5,4,0,0,8622,8624,3,1356, - 678,0,8623,8622,1,0,0,0,8623,8624,1,0,0,0,8624,8625,1,0,0,0,8625, - 8627,5,5,0,0,8626,8621,1,0,0,0,8627,8630,1,0,0,0,8628,8626,1,0,0, - 0,8628,8629,1,0,0,0,8629,1121,1,0,0,0,8630,8628,1,0,0,0,8631,8645, - 3,1126,563,0,8632,8645,3,1130,565,0,8633,8645,3,1134,567,0,8634, - 8645,3,1142,571,0,8635,8645,3,1150,575,0,8636,8642,3,1152,576,0, - 8637,8643,3,1156,578,0,8638,8639,5,2,0,0,8639,8640,3,1356,678,0, - 8640,8641,5,3,0,0,8641,8643,1,0,0,0,8642,8637,1,0,0,0,8642,8638, - 1,0,0,0,8643,8645,1,0,0,0,8644,8631,1,0,0,0,8644,8632,1,0,0,0,8644, - 8633,1,0,0,0,8644,8634,1,0,0,0,8644,8635,1,0,0,0,8644,8636,1,0,0, - 0,8645,1123,1,0,0,0,8646,8651,3,1130,565,0,8647,8651,3,1136,568, - 0,8648,8651,3,1144,572,0,8649,8651,3,1150,575,0,8650,8646,1,0,0, - 0,8650,8647,1,0,0,0,8650,8648,1,0,0,0,8650,8649,1,0,0,0,8651,1125, - 1,0,0,0,8652,8657,3,1394,697,0,8653,8657,3,1376,688,0,8654,8657, - 5,119,0,0,8655,8657,5,126,0,0,8656,8652,1,0,0,0,8656,8653,1,0,0, - 0,8656,8654,1,0,0,0,8656,8655,1,0,0,0,8657,8659,1,0,0,0,8658,8660, - 3,526,263,0,8659,8658,1,0,0,0,8659,8660,1,0,0,0,8660,8661,1,0,0, - 0,8661,8662,3,1128,564,0,8662,1127,1,0,0,0,8663,8664,5,2,0,0,8664, - 8665,3,1280,640,0,8665,8666,5,3,0,0,8666,8669,1,0,0,0,8667,8669, - 1,0,0,0,8668,8663,1,0,0,0,8668,8667,1,0,0,0,8669,1129,1,0,0,0,8670, - 8687,5,394,0,0,8671,8687,5,395,0,0,8672,8687,5,409,0,0,8673,8687, - 5,381,0,0,8674,8687,5,406,0,0,8675,8676,5,391,0,0,8676,8687,3,1132, - 566,0,8677,8678,5,190,0,0,8678,8687,5,405,0,0,8679,8680,5,388,0, - 0,8680,8687,3,1128,564,0,8681,8682,5,387,0,0,8682,8687,3,1128,564, - 0,8683,8684,5,402,0,0,8684,8687,3,1128,564,0,8685,8687,5,383,0,0, - 8686,8670,1,0,0,0,8686,8671,1,0,0,0,8686,8672,1,0,0,0,8686,8673, - 1,0,0,0,8686,8674,1,0,0,0,8686,8675,1,0,0,0,8686,8677,1,0,0,0,8686, - 8679,1,0,0,0,8686,8681,1,0,0,0,8686,8683,1,0,0,0,8686,8685,1,0,0, - 0,8687,1131,1,0,0,0,8688,8689,5,2,0,0,8689,8690,3,1356,678,0,8690, - 8691,5,3,0,0,8691,8694,1,0,0,0,8692,8694,1,0,0,0,8693,8688,1,0,0, - 0,8693,8692,1,0,0,0,8694,1133,1,0,0,0,8695,8698,3,1138,569,0,8696, - 8698,3,1140,570,0,8697,8695,1,0,0,0,8697,8696,1,0,0,0,8698,1135, - 1,0,0,0,8699,8702,3,1138,569,0,8700,8702,3,1140,570,0,8701,8699, - 1,0,0,0,8701,8700,1,0,0,0,8702,1137,1,0,0,0,8703,8704,5,382,0,0, - 8704,8705,3,1148,574,0,8705,8706,5,2,0,0,8706,8707,3,1280,640,0, - 8707,8708,5,3,0,0,8708,1139,1,0,0,0,8709,8710,5,382,0,0,8710,8711, - 3,1148,574,0,8711,1141,1,0,0,0,8712,8717,3,1146,573,0,8713,8714, - 5,2,0,0,8714,8715,3,1356,678,0,8715,8716,5,3,0,0,8716,8718,1,0,0, - 0,8717,8713,1,0,0,0,8717,8718,1,0,0,0,8718,1143,1,0,0,0,8719,8724, - 3,1146,573,0,8720,8721,5,2,0,0,8721,8722,3,1356,678,0,8722,8723, - 5,3,0,0,8723,8725,1,0,0,0,8724,8720,1,0,0,0,8724,8725,1,0,0,0,8725, - 1145,1,0,0,0,8726,8727,7,43,0,0,8727,8733,3,1148,574,0,8728,8733, - 5,416,0,0,8729,8730,5,398,0,0,8730,8731,7,44,0,0,8731,8733,3,1148, - 574,0,8732,8726,1,0,0,0,8732,8728,1,0,0,0,8732,8729,1,0,0,0,8733, - 1147,1,0,0,0,8734,8737,5,367,0,0,8735,8737,1,0,0,0,8736,8734,1,0, - 0,0,8736,8735,1,0,0,0,8737,1149,1,0,0,0,8738,8743,7,45,0,0,8739, - 8740,5,2,0,0,8740,8741,3,1356,678,0,8741,8742,5,3,0,0,8742,8744, - 1,0,0,0,8743,8739,1,0,0,0,8743,8744,1,0,0,0,8744,8745,1,0,0,0,8745, - 8746,3,1154,577,0,8746,1151,1,0,0,0,8747,8748,5,396,0,0,8748,1153, - 1,0,0,0,8749,8750,5,105,0,0,8750,8751,5,411,0,0,8751,8757,5,379, - 0,0,8752,8753,5,372,0,0,8753,8754,5,411,0,0,8754,8757,5,379,0,0, - 8755,8757,1,0,0,0,8756,8749,1,0,0,0,8756,8752,1,0,0,0,8756,8755, - 1,0,0,0,8757,1155,1,0,0,0,8758,8785,5,377,0,0,8759,8785,5,257,0, - 0,8760,8785,5,176,0,0,8761,8785,5,218,0,0,8762,8785,5,254,0,0,8763, - 8785,3,1158,579,0,8764,8765,5,377,0,0,8765,8766,5,94,0,0,8766,8785, - 5,257,0,0,8767,8768,5,176,0,0,8768,8772,5,94,0,0,8769,8773,5,218, - 0,0,8770,8773,5,254,0,0,8771,8773,3,1158,579,0,8772,8769,1,0,0,0, - 8772,8770,1,0,0,0,8772,8771,1,0,0,0,8773,8785,1,0,0,0,8774,8775, - 5,218,0,0,8775,8778,5,94,0,0,8776,8779,5,254,0,0,8777,8779,3,1158, - 579,0,8778,8776,1,0,0,0,8778,8777,1,0,0,0,8779,8785,1,0,0,0,8780, - 8781,5,254,0,0,8781,8782,5,94,0,0,8782,8785,3,1158,579,0,8783,8785, - 1,0,0,0,8784,8758,1,0,0,0,8784,8759,1,0,0,0,8784,8760,1,0,0,0,8784, - 8761,1,0,0,0,8784,8762,1,0,0,0,8784,8763,1,0,0,0,8784,8764,1,0,0, - 0,8784,8767,1,0,0,0,8784,8774,1,0,0,0,8784,8780,1,0,0,0,8784,8783, - 1,0,0,0,8785,1157,1,0,0,0,8786,8791,5,319,0,0,8787,8788,5,2,0,0, - 8788,8789,3,1356,678,0,8789,8790,5,3,0,0,8790,8792,1,0,0,0,8791, - 8787,1,0,0,0,8791,8792,1,0,0,0,8792,1159,1,0,0,0,8793,8794,5,197, - 0,0,8794,8797,3,1162,581,0,8795,8797,1,0,0,0,8796,8793,1,0,0,0,8796, - 8795,1,0,0,0,8797,1161,1,0,0,0,8798,8799,3,1164,582,0,8799,1163, - 1,0,0,0,8800,8802,3,1166,583,0,8801,8803,3,1274,637,0,8802,8801, - 1,0,0,0,8802,8803,1,0,0,0,8803,1165,1,0,0,0,8804,8809,3,1168,584, - 0,8805,8806,7,46,0,0,8806,8808,3,1168,584,0,8807,8805,1,0,0,0,8808, - 8811,1,0,0,0,8809,8807,1,0,0,0,8809,8810,1,0,0,0,8810,1167,1,0,0, - 0,8811,8809,1,0,0,0,8812,8817,3,1170,585,0,8813,8814,5,82,0,0,8814, - 8816,3,1170,585,0,8815,8813,1,0,0,0,8816,8819,1,0,0,0,8817,8815, - 1,0,0,0,8817,8818,1,0,0,0,8818,1169,1,0,0,0,8819,8817,1,0,0,0,8820, - 8825,3,1172,586,0,8821,8822,5,33,0,0,8822,8824,3,1172,586,0,8823, - 8821,1,0,0,0,8824,8827,1,0,0,0,8825,8823,1,0,0,0,8825,8826,1,0,0, - 0,8826,1171,1,0,0,0,8827,8825,1,0,0,0,8828,8840,3,1174,587,0,8829, - 8831,5,77,0,0,8830,8829,1,0,0,0,8830,8831,1,0,0,0,8831,8832,1,0, - 0,0,8832,8834,5,380,0,0,8833,8835,5,91,0,0,8834,8833,1,0,0,0,8834, - 8835,1,0,0,0,8835,8836,1,0,0,0,8836,8837,3,1174,587,0,8837,8838, - 5,33,0,0,8838,8839,3,1174,587,0,8839,8841,1,0,0,0,8840,8830,1,0, - 0,0,8840,8841,1,0,0,0,8841,1173,1,0,0,0,8842,8848,3,1176,588,0,8843, - 8845,5,77,0,0,8844,8843,1,0,0,0,8844,8845,1,0,0,0,8845,8846,1,0, - 0,0,8846,8847,5,68,0,0,8847,8849,3,1306,653,0,8848,8844,1,0,0,0, - 8848,8849,1,0,0,0,8849,1175,1,0,0,0,8850,8852,5,77,0,0,8851,8850, - 1,0,0,0,8851,8852,1,0,0,0,8852,8853,1,0,0,0,8853,8854,3,1178,589, - 0,8854,1177,1,0,0,0,8855,8857,3,1180,590,0,8856,8858,7,47,0,0,8857, - 8856,1,0,0,0,8857,8858,1,0,0,0,8858,1179,1,0,0,0,8859,8883,3,1182, - 591,0,8860,8862,5,116,0,0,8861,8863,5,77,0,0,8862,8861,1,0,0,0,8862, - 8863,1,0,0,0,8863,8881,1,0,0,0,8864,8882,5,78,0,0,8865,8882,5,96, - 0,0,8866,8882,5,60,0,0,8867,8882,5,358,0,0,8868,8869,5,56,0,0,8869, - 8870,5,64,0,0,8870,8882,3,1162,581,0,8871,8872,5,268,0,0,8872,8873, - 5,2,0,0,8873,8874,3,1286,643,0,8874,8875,5,3,0,0,8875,8882,1,0,0, - 0,8876,8882,5,188,0,0,8877,8879,3,1296,648,0,8878,8877,1,0,0,0,8878, - 8879,1,0,0,0,8879,8880,1,0,0,0,8880,8882,5,478,0,0,8881,8864,1,0, - 0,0,8881,8865,1,0,0,0,8881,8866,1,0,0,0,8881,8867,1,0,0,0,8881,8868, - 1,0,0,0,8881,8871,1,0,0,0,8881,8876,1,0,0,0,8881,8878,1,0,0,0,8882, - 8884,1,0,0,0,8883,8860,1,0,0,0,8883,8884,1,0,0,0,8884,1181,1,0,0, - 0,8885,8897,3,1184,592,0,8886,8887,7,48,0,0,8887,8898,3,1184,592, - 0,8888,8889,3,1278,639,0,8889,8895,3,1268,634,0,8890,8896,3,962, - 481,0,8891,8892,5,2,0,0,8892,8893,3,1162,581,0,8893,8894,5,3,0,0, - 8894,8896,1,0,0,0,8895,8890,1,0,0,0,8895,8891,1,0,0,0,8896,8898, - 1,0,0,0,8897,8886,1,0,0,0,8897,8888,1,0,0,0,8897,8898,1,0,0,0,8898, - 1183,1,0,0,0,8899,8912,3,1186,593,0,8900,8902,5,77,0,0,8901,8900, - 1,0,0,0,8901,8902,1,0,0,0,8902,8907,1,0,0,0,8903,8908,5,120,0,0, - 8904,8908,5,114,0,0,8905,8906,5,127,0,0,8906,8908,5,94,0,0,8907, - 8903,1,0,0,0,8907,8904,1,0,0,0,8907,8905,1,0,0,0,8908,8909,1,0,0, - 0,8909,8910,3,1186,593,0,8910,8911,3,1160,580,0,8911,8913,1,0,0, - 0,8912,8901,1,0,0,0,8912,8913,1,0,0,0,8913,1185,1,0,0,0,8914,8920, - 3,1188,594,0,8915,8916,3,1274,637,0,8916,8917,3,1188,594,0,8917, - 8919,1,0,0,0,8918,8915,1,0,0,0,8919,8922,1,0,0,0,8920,8918,1,0,0, - 0,8920,8921,1,0,0,0,8921,1187,1,0,0,0,8922,8920,1,0,0,0,8923,8925, - 3,1274,637,0,8924,8923,1,0,0,0,8924,8925,1,0,0,0,8925,8926,1,0,0, - 0,8926,8927,3,1190,595,0,8927,1189,1,0,0,0,8928,8933,3,1192,596, - 0,8929,8930,7,49,0,0,8930,8932,3,1192,596,0,8931,8929,1,0,0,0,8932, - 8935,1,0,0,0,8933,8931,1,0,0,0,8933,8934,1,0,0,0,8934,1191,1,0,0, - 0,8935,8933,1,0,0,0,8936,8941,3,1194,597,0,8937,8938,7,50,0,0,8938, - 8940,3,1194,597,0,8939,8937,1,0,0,0,8940,8943,1,0,0,0,8941,8939, - 1,0,0,0,8941,8942,1,0,0,0,8942,1193,1,0,0,0,8943,8941,1,0,0,0,8944, - 8947,3,1196,598,0,8945,8946,5,15,0,0,8946,8948,3,1162,581,0,8947, - 8945,1,0,0,0,8947,8948,1,0,0,0,8948,1195,1,0,0,0,8949,8951,7,49, - 0,0,8950,8949,1,0,0,0,8950,8951,1,0,0,0,8951,8952,1,0,0,0,8952,8953, - 3,1198,599,0,8953,1197,1,0,0,0,8954,8959,3,1200,600,0,8955,8956, - 5,142,0,0,8956,8957,5,411,0,0,8957,8958,5,379,0,0,8958,8960,3,1162, - 581,0,8959,8955,1,0,0,0,8959,8960,1,0,0,0,8960,1199,1,0,0,0,8961, - 8964,3,1202,601,0,8962,8963,5,43,0,0,8963,8965,3,524,262,0,8964, - 8962,1,0,0,0,8964,8965,1,0,0,0,8965,1201,1,0,0,0,8966,8971,3,1206, - 603,0,8967,8968,5,26,0,0,8968,8970,3,1118,559,0,8969,8967,1,0,0, - 0,8970,8973,1,0,0,0,8971,8969,1,0,0,0,8971,8972,1,0,0,0,8972,1203, - 1,0,0,0,8973,8971,1,0,0,0,8974,8975,6,602,-1,0,8975,8982,3,1206, - 603,0,8976,8977,7,49,0,0,8977,8982,3,1204,602,9,8978,8979,3,1274, - 637,0,8979,8980,3,1204,602,3,8980,8982,1,0,0,0,8981,8974,1,0,0,0, - 8981,8976,1,0,0,0,8981,8978,1,0,0,0,8982,9022,1,0,0,0,8983,8984, - 10,8,0,0,8984,8985,5,15,0,0,8985,9021,3,1204,602,9,8986,8987,10, - 7,0,0,8987,8988,7,50,0,0,8988,9021,3,1204,602,8,8989,8990,10,6,0, - 0,8990,8991,7,49,0,0,8991,9021,3,1204,602,7,8992,8993,10,5,0,0,8993, - 8994,3,1274,637,0,8994,8995,3,1204,602,6,8995,9021,1,0,0,0,8996, - 8997,10,4,0,0,8997,8998,7,48,0,0,8998,9021,3,1204,602,5,8999,9000, - 10,10,0,0,9000,9001,5,26,0,0,9001,9021,3,1118,559,0,9002,9003,10, - 2,0,0,9003,9021,3,1274,637,0,9004,9005,10,1,0,0,9005,9007,5,116, - 0,0,9006,9008,5,77,0,0,9007,9006,1,0,0,0,9007,9008,1,0,0,0,9008, - 9018,1,0,0,0,9009,9010,5,56,0,0,9010,9011,5,64,0,0,9011,9019,3,1204, - 602,0,9012,9013,5,268,0,0,9013,9014,5,2,0,0,9014,9015,3,1286,643, - 0,9015,9016,5,3,0,0,9016,9019,1,0,0,0,9017,9019,5,188,0,0,9018,9009, - 1,0,0,0,9018,9012,1,0,0,0,9018,9017,1,0,0,0,9019,9021,1,0,0,0,9020, - 8983,1,0,0,0,9020,8986,1,0,0,0,9020,8989,1,0,0,0,9020,8992,1,0,0, - 0,9020,8996,1,0,0,0,9020,8999,1,0,0,0,9020,9002,1,0,0,0,9020,9004, - 1,0,0,0,9021,9024,1,0,0,0,9022,9020,1,0,0,0,9022,9023,1,0,0,0,9023, - 1205,1,0,0,0,9024,9022,1,0,0,0,9025,9026,5,389,0,0,9026,9062,3,962, - 481,0,9027,9030,5,35,0,0,9028,9031,3,962,481,0,9029,9031,3,1288, - 644,0,9030,9028,1,0,0,0,9030,9029,1,0,0,0,9031,9062,1,0,0,0,9032, - 9033,5,28,0,0,9033,9062,3,1326,663,0,9034,9035,5,470,0,0,9035,9036, - 5,2,0,0,9036,9037,3,1280,640,0,9037,9038,5,3,0,0,9038,9062,1,0,0, - 0,9039,9040,5,98,0,0,9040,9062,3,962,481,0,9041,9062,3,1318,659, - 0,9042,9062,3,1348,674,0,9043,9062,3,1208,604,0,9044,9045,5,2,0, - 0,9045,9046,3,1162,581,0,9046,9047,5,3,0,0,9047,9048,3,1326,663, - 0,9048,9062,1,0,0,0,9049,9062,3,1308,654,0,9050,9062,3,1212,606, - 0,9051,9053,3,962,481,0,9052,9054,3,1324,662,0,9053,9052,1,0,0,0, - 9053,9054,1,0,0,0,9054,9062,1,0,0,0,9055,9062,3,1264,632,0,9056, - 9062,3,1266,633,0,9057,9058,3,1262,631,0,9058,9059,5,125,0,0,9059, - 9060,3,1262,631,0,9060,9062,1,0,0,0,9061,9025,1,0,0,0,9061,9027, - 1,0,0,0,9061,9032,1,0,0,0,9061,9034,1,0,0,0,9061,9039,1,0,0,0,9061, - 9041,1,0,0,0,9061,9042,1,0,0,0,9061,9043,1,0,0,0,9061,9044,1,0,0, - 0,9061,9049,1,0,0,0,9061,9050,1,0,0,0,9061,9051,1,0,0,0,9061,9055, - 1,0,0,0,9061,9056,1,0,0,0,9061,9057,1,0,0,0,9062,1207,1,0,0,0,9063, - 9064,5,661,0,0,9064,1209,1,0,0,0,9065,9066,3,1346,673,0,9066,9085, - 5,2,0,0,9067,9071,3,1282,641,0,9068,9069,5,6,0,0,9069,9070,5,101, - 0,0,9070,9072,3,1284,642,0,9071,9068,1,0,0,0,9071,9072,1,0,0,0,9072, - 9073,1,0,0,0,9073,9074,3,996,498,0,9074,9086,1,0,0,0,9075,9076,5, - 101,0,0,9076,9077,3,1284,642,0,9077,9078,3,996,498,0,9078,9086,1, - 0,0,0,9079,9080,7,51,0,0,9080,9081,3,1282,641,0,9081,9082,3,996, - 498,0,9082,9086,1,0,0,0,9083,9086,5,9,0,0,9084,9086,1,0,0,0,9085, - 9067,1,0,0,0,9085,9075,1,0,0,0,9085,9079,1,0,0,0,9085,9083,1,0,0, - 0,9085,9084,1,0,0,0,9086,9087,1,0,0,0,9087,9088,5,3,0,0,9088,1211, - 1,0,0,0,9089,9090,3,1210,605,0,9090,9091,3,1236,618,0,9091,9092, - 3,1238,619,0,9092,9093,3,1246,623,0,9093,9096,1,0,0,0,9094,9096, - 3,1216,608,0,9095,9089,1,0,0,0,9095,9094,1,0,0,0,9096,1213,1,0,0, - 0,9097,9100,3,1210,605,0,9098,9100,3,1216,608,0,9099,9097,1,0,0, - 0,9099,9098,1,0,0,0,9100,1215,1,0,0,0,9101,9102,5,108,0,0,9102,9103, - 5,62,0,0,9103,9104,5,2,0,0,9104,9105,3,1162,581,0,9105,9106,5,3, - 0,0,9106,9279,1,0,0,0,9107,9279,5,48,0,0,9108,9113,5,50,0,0,9109, - 9110,5,2,0,0,9110,9111,3,1356,678,0,9111,9112,5,3,0,0,9112,9114, - 1,0,0,0,9113,9109,1,0,0,0,9113,9114,1,0,0,0,9114,9279,1,0,0,0,9115, - 9120,5,51,0,0,9116,9117,5,2,0,0,9117,9118,3,1356,678,0,9118,9119, - 5,3,0,0,9119,9121,1,0,0,0,9120,9116,1,0,0,0,9120,9121,1,0,0,0,9121, - 9279,1,0,0,0,9122,9127,5,75,0,0,9123,9124,5,2,0,0,9124,9125,3,1356, - 678,0,9125,9126,5,3,0,0,9126,9128,1,0,0,0,9127,9123,1,0,0,0,9127, - 9128,1,0,0,0,9128,9279,1,0,0,0,9129,9134,5,76,0,0,9130,9131,5,2, - 0,0,9131,9132,3,1356,678,0,9132,9133,5,3,0,0,9133,9135,1,0,0,0,9134, - 9130,1,0,0,0,9134,9135,1,0,0,0,9135,9279,1,0,0,0,9136,9279,5,49, - 0,0,9137,9279,5,52,0,0,9138,9279,5,89,0,0,9139,9279,5,99,0,0,9140, - 9279,5,47,0,0,9141,9279,5,111,0,0,9142,9143,5,41,0,0,9143,9144,5, - 2,0,0,9144,9145,3,1162,581,0,9145,9146,5,36,0,0,9146,9147,3,1118, - 559,0,9147,9148,5,3,0,0,9148,9279,1,0,0,0,9149,9150,5,390,0,0,9150, - 9151,5,2,0,0,9151,9152,3,1292,646,0,9152,9153,5,3,0,0,9153,9279, - 1,0,0,0,9154,9155,5,489,0,0,9155,9156,5,2,0,0,9156,9159,3,1162,581, - 0,9157,9158,5,6,0,0,9158,9160,3,1296,648,0,9159,9157,1,0,0,0,9159, - 9160,1,0,0,0,9160,9161,1,0,0,0,9161,9162,5,3,0,0,9162,9279,1,0,0, - 0,9163,9164,5,403,0,0,9164,9165,5,2,0,0,9165,9166,3,1298,649,0,9166, - 9167,5,3,0,0,9167,9279,1,0,0,0,9168,9169,5,404,0,0,9169,9170,5,2, - 0,0,9170,9171,3,1300,650,0,9171,9172,5,3,0,0,9172,9279,1,0,0,0,9173, - 9174,5,410,0,0,9174,9175,5,2,0,0,9175,9176,3,1302,651,0,9176,9177, - 5,3,0,0,9177,9279,1,0,0,0,9178,9179,5,413,0,0,9179,9180,5,2,0,0, - 9180,9181,3,1162,581,0,9181,9182,5,36,0,0,9182,9183,3,1118,559,0, - 9183,9184,5,3,0,0,9184,9279,1,0,0,0,9185,9186,5,414,0,0,9186,9188, - 5,2,0,0,9187,9189,7,52,0,0,9188,9187,1,0,0,0,9188,9189,1,0,0,0,9189, - 9190,1,0,0,0,9190,9191,3,1304,652,0,9191,9192,5,3,0,0,9192,9279, - 1,0,0,0,9193,9194,5,401,0,0,9194,9195,5,2,0,0,9195,9196,3,1162,581, - 0,9196,9197,5,6,0,0,9197,9198,3,1162,581,0,9198,9199,5,3,0,0,9199, - 9279,1,0,0,0,9200,9201,5,386,0,0,9201,9202,5,2,0,0,9202,9203,3,1280, - 640,0,9203,9204,5,3,0,0,9204,9279,1,0,0,0,9205,9206,5,392,0,0,9206, - 9207,5,2,0,0,9207,9208,3,1280,640,0,9208,9209,5,3,0,0,9209,9279, - 1,0,0,0,9210,9211,5,397,0,0,9211,9212,5,2,0,0,9212,9213,3,1280,640, - 0,9213,9214,5,3,0,0,9214,9279,1,0,0,0,9215,9216,5,425,0,0,9216,9217, - 5,2,0,0,9217,9218,3,1280,640,0,9218,9219,5,3,0,0,9219,9279,1,0,0, - 0,9220,9221,5,426,0,0,9221,9222,5,2,0,0,9222,9223,5,259,0,0,9223, - 9229,3,1380,690,0,9224,9227,5,6,0,0,9225,9228,3,1222,611,0,9226, - 9228,3,1280,640,0,9227,9225,1,0,0,0,9227,9226,1,0,0,0,9228,9230, - 1,0,0,0,9229,9224,1,0,0,0,9229,9230,1,0,0,0,9230,9231,1,0,0,0,9231, - 9232,5,3,0,0,9232,9279,1,0,0,0,9233,9234,5,427,0,0,9234,9235,5,2, - 0,0,9235,9236,3,1206,603,0,9236,9237,3,1232,616,0,9237,9238,5,3, - 0,0,9238,9279,1,0,0,0,9239,9240,5,428,0,0,9240,9241,5,2,0,0,9241, - 9242,3,1224,612,0,9242,9243,5,3,0,0,9243,9279,1,0,0,0,9244,9245, - 5,429,0,0,9245,9246,5,2,0,0,9246,9247,3,1228,614,0,9247,9248,3,1162, - 581,0,9248,9249,3,1230,615,0,9249,9250,5,3,0,0,9250,9279,1,0,0,0, - 9251,9252,5,430,0,0,9252,9253,5,2,0,0,9253,9254,5,259,0,0,9254,9257, - 3,1380,690,0,9255,9256,5,6,0,0,9256,9258,3,1162,581,0,9257,9255, - 1,0,0,0,9257,9258,1,0,0,0,9258,9259,1,0,0,0,9259,9260,5,3,0,0,9260, - 9279,1,0,0,0,9261,9262,5,431,0,0,9262,9263,5,2,0,0,9263,9264,5,376, - 0,0,9264,9265,3,1162,581,0,9265,9266,5,6,0,0,9266,9267,3,1218,609, - 0,9267,9268,3,1220,610,0,9268,9269,5,3,0,0,9269,9279,1,0,0,0,9270, - 9271,5,432,0,0,9271,9272,5,2,0,0,9272,9273,3,1228,614,0,9273,9274, - 3,1162,581,0,9274,9275,5,36,0,0,9275,9276,3,1122,561,0,9276,9277, - 5,3,0,0,9277,9279,1,0,0,0,9278,9101,1,0,0,0,9278,9107,1,0,0,0,9278, - 9108,1,0,0,0,9278,9115,1,0,0,0,9278,9122,1,0,0,0,9278,9129,1,0,0, - 0,9278,9136,1,0,0,0,9278,9137,1,0,0,0,9278,9138,1,0,0,0,9278,9139, - 1,0,0,0,9278,9140,1,0,0,0,9278,9141,1,0,0,0,9278,9142,1,0,0,0,9278, - 9149,1,0,0,0,9278,9154,1,0,0,0,9278,9163,1,0,0,0,9278,9168,1,0,0, - 0,9278,9173,1,0,0,0,9278,9178,1,0,0,0,9278,9185,1,0,0,0,9278,9193, - 1,0,0,0,9278,9200,1,0,0,0,9278,9205,1,0,0,0,9278,9210,1,0,0,0,9278, - 9215,1,0,0,0,9278,9220,1,0,0,0,9278,9233,1,0,0,0,9278,9239,1,0,0, - 0,9278,9244,1,0,0,0,9278,9251,1,0,0,0,9278,9261,1,0,0,0,9278,9270, - 1,0,0,0,9279,1217,1,0,0,0,9280,9281,5,368,0,0,9281,9286,3,1162,581, - 0,9282,9283,5,368,0,0,9283,9284,5,262,0,0,9284,9286,5,450,0,0,9285, - 9280,1,0,0,0,9285,9282,1,0,0,0,9286,1219,1,0,0,0,9287,9288,5,6,0, - 0,9288,9289,5,332,0,0,9289,9299,5,378,0,0,9290,9291,5,6,0,0,9291, - 9292,5,332,0,0,9292,9299,5,262,0,0,9293,9294,5,6,0,0,9294,9295,5, - 332,0,0,9295,9296,5,262,0,0,9296,9299,5,450,0,0,9297,9299,1,0,0, - 0,9298,9287,1,0,0,0,9298,9290,1,0,0,0,9298,9293,1,0,0,0,9298,9297, - 1,0,0,0,9299,1221,1,0,0,0,9300,9301,5,417,0,0,9301,9302,5,2,0,0, - 9302,9303,3,1224,612,0,9303,9304,5,3,0,0,9304,1223,1,0,0,0,9305, - 9310,3,1226,613,0,9306,9307,5,6,0,0,9307,9309,3,1226,613,0,9308, - 9306,1,0,0,0,9309,9312,1,0,0,0,9310,9308,1,0,0,0,9310,9311,1,0,0, - 0,9311,1225,1,0,0,0,9312,9310,1,0,0,0,9313,9316,3,1162,581,0,9314, - 9315,5,36,0,0,9315,9317,3,1380,690,0,9316,9314,1,0,0,0,9316,9317, - 1,0,0,0,9317,1227,1,0,0,0,9318,9319,7,53,0,0,9319,1229,1,0,0,0,9320, - 9321,5,285,0,0,9321,9326,5,371,0,0,9322,9323,5,340,0,0,9323,9326, - 5,371,0,0,9324,9326,1,0,0,0,9325,9320,1,0,0,0,9325,9322,1,0,0,0, - 9325,9324,1,0,0,0,9326,1231,1,0,0,0,9327,9328,5,279,0,0,9328,9343, - 3,1206,603,0,9329,9330,5,279,0,0,9330,9331,3,1206,603,0,9331,9332, - 3,1234,617,0,9332,9343,1,0,0,0,9333,9334,5,279,0,0,9334,9335,3,1234, - 617,0,9335,9336,3,1206,603,0,9336,9343,1,0,0,0,9337,9338,5,279,0, - 0,9338,9339,3,1234,617,0,9339,9340,3,1206,603,0,9340,9341,3,1234, - 617,0,9341,9343,1,0,0,0,9342,9327,1,0,0,0,9342,9329,1,0,0,0,9342, - 9333,1,0,0,0,9342,9337,1,0,0,0,9343,1233,1,0,0,0,9344,9345,5,147, - 0,0,9345,9346,7,54,0,0,9346,1235,1,0,0,0,9347,9348,5,479,0,0,9348, - 9349,5,66,0,0,9349,9350,5,2,0,0,9350,9351,3,998,499,0,9351,9352, - 5,3,0,0,9352,9355,1,0,0,0,9353,9355,1,0,0,0,9354,9347,1,0,0,0,9354, - 9353,1,0,0,0,9355,1237,1,0,0,0,9356,9357,5,480,0,0,9357,9358,5,2, - 0,0,9358,9359,5,103,0,0,9359,9360,3,1162,581,0,9360,9361,5,3,0,0, - 9361,9364,1,0,0,0,9362,9364,1,0,0,0,9363,9356,1,0,0,0,9363,9362, - 1,0,0,0,9364,1239,1,0,0,0,9365,9366,5,104,0,0,9366,9369,3,1242,621, - 0,9367,9369,1,0,0,0,9368,9365,1,0,0,0,9368,9367,1,0,0,0,9369,1241, - 1,0,0,0,9370,9375,3,1244,622,0,9371,9372,5,6,0,0,9372,9374,3,1244, - 622,0,9373,9371,1,0,0,0,9374,9377,1,0,0,0,9375,9373,1,0,0,0,9375, - 9376,1,0,0,0,9376,1243,1,0,0,0,9377,9375,1,0,0,0,9378,9379,3,1372, - 686,0,9379,9380,5,36,0,0,9380,9381,3,1248,624,0,9381,1245,1,0,0, - 0,9382,9385,5,124,0,0,9383,9386,3,1248,624,0,9384,9386,3,1372,686, - 0,9385,9383,1,0,0,0,9385,9384,1,0,0,0,9386,9389,1,0,0,0,9387,9389, - 1,0,0,0,9388,9382,1,0,0,0,9388,9387,1,0,0,0,9389,1247,1,0,0,0,9390, - 9391,5,2,0,0,9391,9392,3,1250,625,0,9392,9393,3,1252,626,0,9393, - 9394,3,996,498,0,9394,9395,3,1254,627,0,9395,9396,5,3,0,0,9396,1249, - 1,0,0,0,9397,9400,3,1372,686,0,9398,9400,1,0,0,0,9399,9397,1,0,0, - 0,9399,9398,1,0,0,0,9400,1251,1,0,0,0,9401,9402,5,278,0,0,9402,9403, - 5,147,0,0,9403,9406,3,1280,640,0,9404,9406,1,0,0,0,9405,9401,1,0, - 0,0,9405,9404,1,0,0,0,9406,1253,1,0,0,0,9407,9408,5,292,0,0,9408, - 9409,3,1256,628,0,9409,9410,3,1260,630,0,9410,9421,1,0,0,0,9411, - 9412,5,313,0,0,9412,9413,3,1256,628,0,9413,9414,3,1260,630,0,9414, - 9421,1,0,0,0,9415,9416,5,481,0,0,9416,9417,3,1256,628,0,9417,9418, - 3,1260,630,0,9418,9421,1,0,0,0,9419,9421,1,0,0,0,9420,9407,1,0,0, - 0,9420,9411,1,0,0,0,9420,9415,1,0,0,0,9420,9419,1,0,0,0,9421,1255, - 1,0,0,0,9422,9429,3,1258,629,0,9423,9424,5,380,0,0,9424,9425,3,1258, - 629,0,9425,9426,5,33,0,0,9426,9427,3,1258,629,0,9427,9429,1,0,0, - 0,9428,9422,1,0,0,0,9428,9423,1,0,0,0,9429,1257,1,0,0,0,9430,9431, - 5,355,0,0,9431,9438,7,55,0,0,9432,9433,5,434,0,0,9433,9438,5,407, - 0,0,9434,9435,3,1162,581,0,9435,9436,7,55,0,0,9436,9438,1,0,0,0, - 9437,9430,1,0,0,0,9437,9432,1,0,0,0,9437,9434,1,0,0,0,9438,1259, - 1,0,0,0,9439,9446,5,199,0,0,9440,9441,5,434,0,0,9441,9447,5,407, - 0,0,9442,9447,5,66,0,0,9443,9447,5,467,0,0,9444,9445,5,262,0,0,9445, - 9447,5,482,0,0,9446,9440,1,0,0,0,9446,9442,1,0,0,0,9446,9443,1,0, - 0,0,9446,9444,1,0,0,0,9447,9450,1,0,0,0,9448,9450,1,0,0,0,9449,9439, - 1,0,0,0,9449,9448,1,0,0,0,9450,1261,1,0,0,0,9451,9452,5,407,0,0, - 9452,9454,5,2,0,0,9453,9455,3,1280,640,0,9454,9453,1,0,0,0,9454, - 9455,1,0,0,0,9455,9456,1,0,0,0,9456,9464,5,3,0,0,9457,9458,5,2,0, - 0,9458,9459,3,1280,640,0,9459,9460,5,6,0,0,9460,9461,3,1162,581, - 0,9461,9462,5,3,0,0,9462,9464,1,0,0,0,9463,9451,1,0,0,0,9463,9457, - 1,0,0,0,9464,1263,1,0,0,0,9465,9466,5,407,0,0,9466,9468,5,2,0,0, - 9467,9469,3,1280,640,0,9468,9467,1,0,0,0,9468,9469,1,0,0,0,9469, - 9470,1,0,0,0,9470,9471,5,3,0,0,9471,1265,1,0,0,0,9472,9473,5,2,0, - 0,9473,9474,3,1280,640,0,9474,9475,5,6,0,0,9475,9476,3,1162,581, - 0,9476,9477,5,3,0,0,9477,1267,1,0,0,0,9478,9479,7,56,0,0,9479,1269, - 1,0,0,0,9480,9483,5,29,0,0,9481,9483,3,1272,636,0,9482,9480,1,0, - 0,0,9482,9481,1,0,0,0,9483,1271,1,0,0,0,9484,9485,7,57,0,0,9485, - 1273,1,0,0,0,9486,9493,5,29,0,0,9487,9488,5,271,0,0,9488,9489,5, - 2,0,0,9489,9490,3,684,342,0,9490,9491,5,3,0,0,9491,9493,1,0,0,0, - 9492,9486,1,0,0,0,9492,9487,1,0,0,0,9493,1275,1,0,0,0,9494,9501, - 3,1270,635,0,9495,9496,5,271,0,0,9496,9497,5,2,0,0,9497,9498,3,684, - 342,0,9498,9499,5,3,0,0,9499,9501,1,0,0,0,9500,9494,1,0,0,0,9500, - 9495,1,0,0,0,9501,1277,1,0,0,0,9502,9515,3,1270,635,0,9503,9504, - 5,271,0,0,9504,9505,5,2,0,0,9505,9506,3,684,342,0,9506,9507,5,3, - 0,0,9507,9515,1,0,0,0,9508,9515,5,120,0,0,9509,9510,5,77,0,0,9510, - 9515,5,120,0,0,9511,9515,5,114,0,0,9512,9513,5,77,0,0,9513,9515, - 5,114,0,0,9514,9502,1,0,0,0,9514,9503,1,0,0,0,9514,9508,1,0,0,0, - 9514,9509,1,0,0,0,9514,9511,1,0,0,0,9514,9512,1,0,0,0,9515,1279, - 1,0,0,0,9516,9521,3,1162,581,0,9517,9518,5,6,0,0,9518,9520,3,1162, - 581,0,9519,9517,1,0,0,0,9520,9523,1,0,0,0,9521,9519,1,0,0,0,9521, - 9522,1,0,0,0,9522,1281,1,0,0,0,9523,9521,1,0,0,0,9524,9529,3,1284, - 642,0,9525,9526,5,6,0,0,9526,9528,3,1284,642,0,9527,9525,1,0,0,0, - 9528,9531,1,0,0,0,9529,9527,1,0,0,0,9529,9530,1,0,0,0,9530,1283, - 1,0,0,0,9531,9529,1,0,0,0,9532,9538,3,1162,581,0,9533,9534,3,636, - 318,0,9534,9535,7,58,0,0,9535,9536,3,1162,581,0,9536,9538,1,0,0, - 0,9537,9532,1,0,0,0,9537,9533,1,0,0,0,9538,1285,1,0,0,0,9539,9544, - 3,1118,559,0,9540,9541,5,6,0,0,9541,9543,3,1118,559,0,9542,9540, - 1,0,0,0,9543,9546,1,0,0,0,9544,9542,1,0,0,0,9544,9545,1,0,0,0,9545, - 1287,1,0,0,0,9546,9544,1,0,0,0,9547,9550,5,4,0,0,9548,9551,3,1280, - 640,0,9549,9551,3,1290,645,0,9550,9548,1,0,0,0,9550,9549,1,0,0,0, - 9550,9551,1,0,0,0,9551,9552,1,0,0,0,9552,9553,5,5,0,0,9553,1289, - 1,0,0,0,9554,9559,3,1288,644,0,9555,9556,5,6,0,0,9556,9558,3,1288, - 644,0,9557,9555,1,0,0,0,9558,9561,1,0,0,0,9559,9557,1,0,0,0,9559, - 9560,1,0,0,0,9560,1291,1,0,0,0,9561,9559,1,0,0,0,9562,9563,3,1294, - 647,0,9563,9564,5,64,0,0,9564,9565,3,1162,581,0,9565,9568,1,0,0, - 0,9566,9568,1,0,0,0,9567,9562,1,0,0,0,9567,9566,1,0,0,0,9568,1293, - 1,0,0,0,9569,9578,3,1382,691,0,9570,9578,5,377,0,0,9571,9578,5,257, - 0,0,9572,9578,5,176,0,0,9573,9578,5,218,0,0,9574,9578,5,254,0,0, - 9575,9578,5,319,0,0,9576,9578,3,1358,679,0,9577,9569,1,0,0,0,9577, - 9570,1,0,0,0,9577,9571,1,0,0,0,9577,9572,1,0,0,0,9577,9573,1,0,0, - 0,9577,9574,1,0,0,0,9577,9575,1,0,0,0,9577,9576,1,0,0,0,9578,1295, - 1,0,0,0,9579,9580,7,59,0,0,9580,1297,1,0,0,0,9581,9582,3,1162,581, - 0,9582,9583,5,84,0,0,9583,9584,3,1162,581,0,9584,9585,5,64,0,0,9585, - 9588,3,1162,581,0,9586,9587,5,62,0,0,9587,9589,3,1162,581,0,9588, - 9586,1,0,0,0,9588,9589,1,0,0,0,9589,1299,1,0,0,0,9590,9591,3,1204, - 602,0,9591,9592,5,68,0,0,9592,9593,3,1204,602,0,9593,9596,1,0,0, - 0,9594,9596,1,0,0,0,9595,9590,1,0,0,0,9595,9594,1,0,0,0,9596,1301, - 1,0,0,0,9597,9598,3,1162,581,0,9598,9599,5,64,0,0,9599,9600,3,1162, - 581,0,9600,9601,5,62,0,0,9601,9602,3,1162,581,0,9602,9625,1,0,0, - 0,9603,9604,3,1162,581,0,9604,9605,5,62,0,0,9605,9606,3,1162,581, - 0,9606,9607,5,64,0,0,9607,9608,3,1162,581,0,9608,9625,1,0,0,0,9609, - 9610,3,1162,581,0,9610,9611,5,64,0,0,9611,9612,3,1162,581,0,9612, - 9625,1,0,0,0,9613,9614,3,1162,581,0,9614,9615,5,62,0,0,9615,9616, - 3,1162,581,0,9616,9625,1,0,0,0,9617,9618,3,1162,581,0,9618,9619, - 5,127,0,0,9619,9620,3,1162,581,0,9620,9621,5,197,0,0,9621,9622,3, - 1162,581,0,9622,9625,1,0,0,0,9623,9625,3,1280,640,0,9624,9597,1, - 0,0,0,9624,9603,1,0,0,0,9624,9609,1,0,0,0,9624,9613,1,0,0,0,9624, - 9617,1,0,0,0,9624,9623,1,0,0,0,9625,1303,1,0,0,0,9626,9627,3,1162, - 581,0,9627,9628,5,64,0,0,9628,9629,3,1280,640,0,9629,9634,1,0,0, - 0,9630,9631,5,64,0,0,9631,9634,3,1280,640,0,9632,9634,3,1280,640, - 0,9633,9626,1,0,0,0,9633,9630,1,0,0,0,9633,9632,1,0,0,0,9634,1305, - 1,0,0,0,9635,9641,3,962,481,0,9636,9637,5,2,0,0,9637,9638,3,1280, - 640,0,9638,9639,5,3,0,0,9639,9641,1,0,0,0,9640,9635,1,0,0,0,9640, - 9636,1,0,0,0,9641,1307,1,0,0,0,9642,9643,5,40,0,0,9643,9644,3,1316, - 658,0,9644,9645,3,1310,655,0,9645,9646,3,1314,657,0,9646,9647,5, - 454,0,0,9647,1309,1,0,0,0,9648,9650,3,1312,656,0,9649,9648,1,0,0, - 0,9650,9651,1,0,0,0,9651,9649,1,0,0,0,9651,9652,1,0,0,0,9652,1311, - 1,0,0,0,9653,9654,5,102,0,0,9654,9655,3,1162,581,0,9655,9656,5,93, - 0,0,9656,9657,3,1162,581,0,9657,1313,1,0,0,0,9658,9659,5,58,0,0, - 9659,9662,3,1162,581,0,9660,9662,1,0,0,0,9661,9658,1,0,0,0,9661, - 9660,1,0,0,0,9662,1315,1,0,0,0,9663,9666,3,1162,581,0,9664,9666, - 1,0,0,0,9665,9663,1,0,0,0,9665,9664,1,0,0,0,9666,1317,1,0,0,0,9667, - 9669,3,1372,686,0,9668,9670,3,1324,662,0,9669,9668,1,0,0,0,9669, - 9670,1,0,0,0,9670,1319,1,0,0,0,9671,9674,5,11,0,0,9672,9675,3,1342, - 671,0,9673,9675,5,9,0,0,9674,9672,1,0,0,0,9674,9673,1,0,0,0,9675, - 9687,1,0,0,0,9676,9682,5,4,0,0,9677,9683,3,1162,581,0,9678,9679, - 3,1322,661,0,9679,9680,5,8,0,0,9680,9681,3,1322,661,0,9681,9683, - 1,0,0,0,9682,9677,1,0,0,0,9682,9678,1,0,0,0,9683,9684,1,0,0,0,9684, - 9685,5,5,0,0,9685,9687,1,0,0,0,9686,9671,1,0,0,0,9686,9676,1,0,0, - 0,9687,1321,1,0,0,0,9688,9691,3,1162,581,0,9689,9691,1,0,0,0,9690, - 9688,1,0,0,0,9690,9689,1,0,0,0,9691,1323,1,0,0,0,9692,9694,3,1320, - 660,0,9693,9692,1,0,0,0,9694,9695,1,0,0,0,9695,9693,1,0,0,0,9695, - 9696,1,0,0,0,9696,1325,1,0,0,0,9697,9699,3,1320,660,0,9698,9697, - 1,0,0,0,9699,9702,1,0,0,0,9700,9698,1,0,0,0,9700,9701,1,0,0,0,9701, - 1327,1,0,0,0,9702,9700,1,0,0,0,9703,9706,3,1330,665,0,9704,9706, - 1,0,0,0,9705,9703,1,0,0,0,9705,9704,1,0,0,0,9706,1329,1,0,0,0,9707, - 9712,3,1332,666,0,9708,9709,5,6,0,0,9709,9711,3,1332,666,0,9710, - 9708,1,0,0,0,9711,9714,1,0,0,0,9712,9710,1,0,0,0,9712,9713,1,0,0, - 0,9713,1331,1,0,0,0,9714,9712,1,0,0,0,9715,9720,3,1162,581,0,9716, - 9717,5,36,0,0,9717,9721,3,1380,690,0,9718,9721,3,1382,691,0,9719, - 9721,1,0,0,0,9720,9716,1,0,0,0,9720,9718,1,0,0,0,9720,9719,1,0,0, - 0,9721,9724,1,0,0,0,9722,9724,5,9,0,0,9723,9715,1,0,0,0,9723,9722, - 1,0,0,0,9724,1333,1,0,0,0,9725,9730,3,1336,668,0,9726,9727,5,6,0, - 0,9727,9729,3,1336,668,0,9728,9726,1,0,0,0,9729,9732,1,0,0,0,9730, - 9728,1,0,0,0,9730,9731,1,0,0,0,9731,1335,1,0,0,0,9732,9730,1,0,0, - 0,9733,9735,3,1372,686,0,9734,9736,3,1324,662,0,9735,9734,1,0,0, - 0,9735,9736,1,0,0,0,9736,1337,1,0,0,0,9737,9742,3,1340,670,0,9738, - 9739,5,6,0,0,9739,9741,3,1340,670,0,9740,9738,1,0,0,0,9741,9744, - 1,0,0,0,9742,9740,1,0,0,0,9742,9743,1,0,0,0,9743,1339,1,0,0,0,9744, - 9742,1,0,0,0,9745,9746,3,1372,686,0,9746,1341,1,0,0,0,9747,9748, - 3,1380,690,0,9748,1343,1,0,0,0,9749,9750,3,1358,679,0,9750,1345, - 1,0,0,0,9751,9759,3,1394,697,0,9752,9759,3,1376,688,0,9753,9754, - 3,1372,686,0,9754,9755,3,1324,662,0,9755,9759,1,0,0,0,9756,9759, - 5,119,0,0,9757,9759,5,126,0,0,9758,9751,1,0,0,0,9758,9752,1,0,0, - 0,9758,9753,1,0,0,0,9758,9756,1,0,0,0,9758,9757,1,0,0,0,9759,1347, - 1,0,0,0,9760,9793,3,1356,678,0,9761,9793,3,1354,677,0,9762,9793, - 3,1358,679,0,9763,9793,3,1352,676,0,9764,9793,3,1350,675,0,9765, - 9773,3,1346,673,0,9766,9774,3,1358,679,0,9767,9768,5,2,0,0,9768, - 9769,3,1282,641,0,9769,9770,3,996,498,0,9770,9771,5,3,0,0,9771,9772, - 3,1358,679,0,9772,9774,1,0,0,0,9773,9766,1,0,0,0,9773,9767,1,0,0, - 0,9774,9793,1,0,0,0,9775,9776,3,1124,562,0,9776,9777,3,1358,679, - 0,9777,9793,1,0,0,0,9778,9787,3,1152,576,0,9779,9780,3,1358,679, - 0,9780,9781,3,1156,578,0,9781,9788,1,0,0,0,9782,9783,5,2,0,0,9783, - 9784,3,1356,678,0,9784,9785,5,3,0,0,9785,9786,3,1358,679,0,9786, - 9788,1,0,0,0,9787,9779,1,0,0,0,9787,9782,1,0,0,0,9788,9793,1,0,0, - 0,9789,9793,5,96,0,0,9790,9793,5,60,0,0,9791,9793,5,78,0,0,9792, - 9760,1,0,0,0,9792,9761,1,0,0,0,9792,9762,1,0,0,0,9792,9763,1,0,0, - 0,9792,9764,1,0,0,0,9792,9765,1,0,0,0,9792,9775,1,0,0,0,9792,9778, - 1,0,0,0,9792,9789,1,0,0,0,9792,9790,1,0,0,0,9792,9791,1,0,0,0,9793, - 1349,1,0,0,0,9794,9795,5,654,0,0,9795,1351,1,0,0,0,9796,9797,5,650, - 0,0,9797,1353,1,0,0,0,9798,9799,5,660,0,0,9799,1355,1,0,0,0,9800, - 9801,5,658,0,0,9801,1357,1,0,0,0,9802,9803,3,1360,680,0,9803,9804, - 3,1362,681,0,9804,1359,1,0,0,0,9805,9817,5,645,0,0,9806,9817,5,647, - 0,0,9807,9811,5,649,0,0,9808,9810,5,677,0,0,9809,9808,1,0,0,0,9810, - 9813,1,0,0,0,9811,9809,1,0,0,0,9811,9812,1,0,0,0,9812,9814,1,0,0, - 0,9813,9811,1,0,0,0,9814,9817,5,678,0,0,9815,9817,5,671,0,0,9816, - 9805,1,0,0,0,9816,9806,1,0,0,0,9816,9807,1,0,0,0,9816,9815,1,0,0, - 0,9817,1361,1,0,0,0,9818,9819,5,487,0,0,9819,9822,3,1360,680,0,9820, - 9822,1,0,0,0,9821,9818,1,0,0,0,9821,9820,1,0,0,0,9822,1363,1,0,0, - 0,9823,9829,3,1356,678,0,9824,9825,5,12,0,0,9825,9829,3,1356,678, - 0,9826,9827,5,13,0,0,9827,9829,3,1356,678,0,9828,9823,1,0,0,0,9828, - 9824,1,0,0,0,9828,9826,1,0,0,0,9829,1365,1,0,0,0,9830,9831,3,1368, - 684,0,9831,1367,1,0,0,0,9832,9836,3,1378,689,0,9833,9836,5,52,0, - 0,9834,9836,5,89,0,0,9835,9832,1,0,0,0,9835,9833,1,0,0,0,9835,9834, - 1,0,0,0,9836,1369,1,0,0,0,9837,9842,3,1368,684,0,9838,9839,5,6,0, - 0,9839,9841,3,1368,684,0,9840,9838,1,0,0,0,9841,9844,1,0,0,0,9842, - 9840,1,0,0,0,9842,9843,1,0,0,0,9843,1371,1,0,0,0,9844,9842,1,0,0, - 0,9845,9852,3,1382,691,0,9846,9852,3,1386,693,0,9847,9852,3,1388, - 694,0,9848,9852,3,1608,804,0,9849,9852,5,119,0,0,9850,9852,5,126, - 0,0,9851,9845,1,0,0,0,9851,9846,1,0,0,0,9851,9847,1,0,0,0,9851,9848, - 1,0,0,0,9851,9849,1,0,0,0,9851,9850,1,0,0,0,9852,1373,1,0,0,0,9853, - 9858,3,1382,691,0,9854,9858,3,1386,693,0,9855,9858,3,1388,694,0, - 9856,9858,3,1608,804,0,9857,9853,1,0,0,0,9857,9854,1,0,0,0,9857, - 9855,1,0,0,0,9857,9856,1,0,0,0,9858,1375,1,0,0,0,9859,9864,3,1382, - 691,0,9860,9864,3,1386,693,0,9861,9864,3,1608,804,0,9862,9864,3, - 1390,695,0,9863,9859,1,0,0,0,9863,9860,1,0,0,0,9863,9861,1,0,0,0, - 9863,9862,1,0,0,0,9864,1377,1,0,0,0,9865,9870,3,1382,691,0,9866, - 9870,3,1386,693,0,9867,9870,3,1388,694,0,9868,9870,3,1390,695,0, - 9869,9865,1,0,0,0,9869,9866,1,0,0,0,9869,9867,1,0,0,0,9869,9868, - 1,0,0,0,9870,1379,1,0,0,0,9871,9878,3,1382,691,0,9872,9878,3,1608, - 804,0,9873,9878,3,1386,693,0,9874,9878,3,1388,694,0,9875,9878,3, - 1390,695,0,9876,9878,3,1392,696,0,9877,9871,1,0,0,0,9877,9872,1, - 0,0,0,9877,9873,1,0,0,0,9877,9874,1,0,0,0,9877,9875,1,0,0,0,9877, - 9876,1,0,0,0,9878,1381,1,0,0,0,9879,9880,5,636,0,0,9880,9887,3,1362, - 681,0,9881,9887,5,637,0,0,9882,9887,5,641,0,0,9883,9887,3,1208,604, - 0,9884,9887,3,1384,692,0,9885,9887,3,1608,804,0,9886,9879,1,0,0, - 0,9886,9881,1,0,0,0,9886,9882,1,0,0,0,9886,9883,1,0,0,0,9886,9884, - 1,0,0,0,9886,9885,1,0,0,0,9887,1383,1,0,0,0,9888,9889,5,662,0,0, - 9889,1385,1,0,0,0,9890,9891,7,60,0,0,9891,1387,1,0,0,0,9892,9945, - 5,380,0,0,9893,9945,5,381,0,0,9894,9945,3,1134,567,0,9895,9945,5, - 383,0,0,9896,9945,5,384,0,0,9897,9945,3,1142,571,0,9898,9945,5,386, - 0,0,9899,9945,5,387,0,0,9900,9945,5,388,0,0,9901,9945,5,389,0,0, - 9902,9945,5,390,0,0,9903,9945,5,391,0,0,9904,9945,5,392,0,0,9905, - 9945,5,470,0,0,9906,9945,5,393,0,0,9907,9945,5,394,0,0,9908,9945, - 5,395,0,0,9909,9945,5,396,0,0,9910,9945,5,397,0,0,9911,9945,5,398, - 0,0,9912,9945,5,399,0,0,9913,9945,5,400,0,0,9914,9945,5,489,0,0, - 9915,9945,5,401,0,0,9916,9945,3,1130,565,0,9917,9945,5,453,0,0,9918, - 9945,5,403,0,0,9919,9945,5,404,0,0,9920,9945,5,405,0,0,9921,9945, - 5,406,0,0,9922,9945,5,407,0,0,9923,9945,5,408,0,0,9924,9945,5,409, - 0,0,9925,9945,5,410,0,0,9926,9945,5,411,0,0,9927,9945,5,412,0,0, - 9928,9945,5,413,0,0,9929,9945,5,414,0,0,9930,9945,5,415,0,0,9931, - 9945,5,416,0,0,9932,9945,5,417,0,0,9933,9945,5,425,0,0,9934,9945, - 5,426,0,0,9935,9945,5,427,0,0,9936,9945,5,428,0,0,9937,9945,5,476, - 0,0,9938,9945,5,429,0,0,9939,9945,5,430,0,0,9940,9945,5,431,0,0, - 9941,9945,5,432,0,0,9942,9945,5,474,0,0,9943,9945,3,1394,697,0,9944, - 9892,1,0,0,0,9944,9893,1,0,0,0,9944,9894,1,0,0,0,9944,9895,1,0,0, - 0,9944,9896,1,0,0,0,9944,9897,1,0,0,0,9944,9898,1,0,0,0,9944,9899, - 1,0,0,0,9944,9900,1,0,0,0,9944,9901,1,0,0,0,9944,9902,1,0,0,0,9944, - 9903,1,0,0,0,9944,9904,1,0,0,0,9944,9905,1,0,0,0,9944,9906,1,0,0, - 0,9944,9907,1,0,0,0,9944,9908,1,0,0,0,9944,9909,1,0,0,0,9944,9910, - 1,0,0,0,9944,9911,1,0,0,0,9944,9912,1,0,0,0,9944,9913,1,0,0,0,9944, - 9914,1,0,0,0,9944,9915,1,0,0,0,9944,9916,1,0,0,0,9944,9917,1,0,0, - 0,9944,9918,1,0,0,0,9944,9919,1,0,0,0,9944,9920,1,0,0,0,9944,9921, - 1,0,0,0,9944,9922,1,0,0,0,9944,9923,1,0,0,0,9944,9924,1,0,0,0,9944, - 9925,1,0,0,0,9944,9926,1,0,0,0,9944,9927,1,0,0,0,9944,9928,1,0,0, - 0,9944,9929,1,0,0,0,9944,9930,1,0,0,0,9944,9931,1,0,0,0,9944,9932, - 1,0,0,0,9944,9933,1,0,0,0,9944,9934,1,0,0,0,9944,9935,1,0,0,0,9944, - 9936,1,0,0,0,9944,9937,1,0,0,0,9944,9938,1,0,0,0,9944,9939,1,0,0, - 0,9944,9940,1,0,0,0,9944,9941,1,0,0,0,9944,9942,1,0,0,0,9944,9943, - 1,0,0,0,9945,1389,1,0,0,0,9946,9947,7,61,0,0,9947,1391,1,0,0,0,9948, - 9949,7,62,0,0,9949,1393,1,0,0,0,9950,9951,7,63,0,0,9951,1395,1,0, - 0,0,9952,9953,3,1398,699,0,9953,9954,3,1408,704,0,9954,9955,3,1406, - 703,0,9955,1397,1,0,0,0,9956,9958,3,1400,700,0,9957,9956,1,0,0,0, - 9958,9961,1,0,0,0,9959,9957,1,0,0,0,9959,9960,1,0,0,0,9960,1399, - 1,0,0,0,9961,9959,1,0,0,0,9962,9963,3,1402,701,0,9963,9964,5,272, - 0,0,9964,9965,5,490,0,0,9965,9983,1,0,0,0,9966,9967,3,1402,701,0, - 9967,9968,5,491,0,0,9968,9969,3,1404,702,0,9969,9983,1,0,0,0,9970, - 9971,3,1402,701,0,9971,9972,5,492,0,0,9972,9973,5,493,0,0,9973,9983, - 1,0,0,0,9974,9975,3,1402,701,0,9975,9976,5,492,0,0,9976,9977,5,494, - 0,0,9977,9983,1,0,0,0,9978,9979,3,1402,701,0,9979,9980,5,492,0,0, - 9980,9981,5,495,0,0,9981,9983,1,0,0,0,9982,9962,1,0,0,0,9982,9966, - 1,0,0,0,9982,9970,1,0,0,0,9982,9974,1,0,0,0,9982,9978,1,0,0,0,9983, - 1401,1,0,0,0,9984,9985,5,29,0,0,9985,1403,1,0,0,0,9986,9991,3,1358, - 679,0,9987,9991,3,1392,696,0,9988,9991,3,1608,804,0,9989,9991,3, - 1386,693,0,9990,9986,1,0,0,0,9990,9987,1,0,0,0,9990,9988,1,0,0,0, - 9990,9989,1,0,0,0,9991,1405,1,0,0,0,9992,9995,1,0,0,0,9993,9995, - 5,7,0,0,9994,9992,1,0,0,0,9994,9993,1,0,0,0,9995,1407,1,0,0,0,9996, - 9997,3,1410,705,0,9997,9998,5,146,0,0,9998,9999,3,1452,726,0,9999, - 10000,3,1588,794,0,10000,10001,5,454,0,0,10001,10002,3,1602,801, - 0,10002,1409,1,0,0,0,10003,10008,3,1598,799,0,10004,10006,3,1412, - 706,0,10005,10007,3,1414,707,0,10006,10005,1,0,0,0,10006,10007,1, - 0,0,0,10007,10009,1,0,0,0,10008,10004,1,0,0,0,10008,10009,1,0,0, - 0,10009,1411,1,0,0,0,10010,10011,5,178,0,0,10011,1413,1,0,0,0,10012, - 10014,3,1418,709,0,10013,10012,1,0,0,0,10014,10015,1,0,0,0,10015, - 10013,1,0,0,0,10015,10016,1,0,0,0,10016,1415,1,0,0,0,10017,10018, - 5,18,0,0,10018,10019,3,1606,803,0,10019,10020,5,19,0,0,10020,1417, - 1,0,0,0,10021,10025,3,1420,710,0,10022,10025,5,178,0,0,10023,10025, - 3,1416,708,0,10024,10021,1,0,0,0,10024,10022,1,0,0,0,10024,10023, - 1,0,0,0,10025,1419,1,0,0,0,10026,10042,3,1436,718,0,10027,10028, - 5,496,0,0,10028,10029,5,62,0,0,10029,10043,3,1434,717,0,10030,10031, - 3,1438,719,0,10031,10032,3,1440,720,0,10032,10033,3,1442,721,0,10033, - 10034,3,1444,722,0,10034,10035,3,1446,723,0,10035,10043,1,0,0,0, - 10036,10037,3,1422,711,0,10037,10038,5,172,0,0,10038,10039,3,1426, - 713,0,10039,10040,3,1432,716,0,10040,10041,3,1424,712,0,10041,10043, - 1,0,0,0,10042,10027,1,0,0,0,10042,10030,1,0,0,0,10042,10036,1,0, - 0,0,10043,10044,1,0,0,0,10044,10045,5,7,0,0,10045,1421,1,0,0,0,10046, - 10051,1,0,0,0,10047,10048,5,262,0,0,10048,10051,5,317,0,0,10049, - 10051,5,317,0,0,10050,10046,1,0,0,0,10050,10047,1,0,0,0,10050,10049, - 1,0,0,0,10051,1423,1,0,0,0,10052,10053,3,960,480,0,10053,1425,1, - 0,0,0,10054,10060,1,0,0,0,10055,10056,5,2,0,0,10056,10057,3,1428, - 714,0,10057,10058,5,3,0,0,10058,10060,1,0,0,0,10059,10054,1,0,0, - 0,10059,10055,1,0,0,0,10060,1427,1,0,0,0,10061,10066,3,1430,715, - 0,10062,10063,5,6,0,0,10063,10065,3,1430,715,0,10064,10062,1,0,0, - 0,10065,10068,1,0,0,0,10066,10064,1,0,0,0,10066,10067,1,0,0,0,10067, - 1429,1,0,0,0,10068,10066,1,0,0,0,10069,10070,3,1436,718,0,10070, - 10071,3,1440,720,0,10071,1431,1,0,0,0,10072,10073,7,64,0,0,10073, - 1433,1,0,0,0,10074,10077,5,28,0,0,10075,10077,3,1372,686,0,10076, - 10074,1,0,0,0,10076,10075,1,0,0,0,10077,1435,1,0,0,0,10078,10079, - 3,1606,803,0,10079,1437,1,0,0,0,10080,10083,1,0,0,0,10081,10083, - 5,497,0,0,10082,10080,1,0,0,0,10082,10081,1,0,0,0,10083,1439,1,0, - 0,0,10084,10085,3,1118,559,0,10085,1441,1,0,0,0,10086,10090,1,0, - 0,0,10087,10088,5,43,0,0,10088,10090,3,524,262,0,10089,10086,1,0, - 0,0,10089,10087,1,0,0,0,10090,1443,1,0,0,0,10091,10095,1,0,0,0,10092, - 10093,5,77,0,0,10093,10095,5,78,0,0,10094,10091,1,0,0,0,10094,10092, - 1,0,0,0,10095,1445,1,0,0,0,10096,10101,1,0,0,0,10097,10098,3,1448, - 724,0,10098,10099,3,1610,805,0,10099,10101,1,0,0,0,10100,10096,1, - 0,0,0,10100,10097,1,0,0,0,10101,1447,1,0,0,0,10102,10105,3,1450, - 725,0,10103,10105,5,53,0,0,10104,10102,1,0,0,0,10104,10103,1,0,0, - 0,10105,1449,1,0,0,0,10106,10107,7,65,0,0,10107,1451,1,0,0,0,10108, - 10110,3,1454,727,0,10109,10108,1,0,0,0,10110,10113,1,0,0,0,10111, - 10109,1,0,0,0,10111,10112,1,0,0,0,10112,1453,1,0,0,0,10113,10111, - 1,0,0,0,10114,10115,3,1408,704,0,10115,10116,5,7,0,0,10116,10142, - 1,0,0,0,10117,10142,3,1520,760,0,10118,10142,3,1524,762,0,10119, - 10142,3,1462,731,0,10120,10142,3,1478,739,0,10121,10142,3,1484,742, - 0,10122,10142,3,1494,747,0,10123,10142,3,1496,748,0,10124,10142, - 3,1498,749,0,10125,10142,3,1512,756,0,10126,10142,3,1516,758,0,10127, - 10142,3,1536,768,0,10128,10142,3,1542,771,0,10129,10142,3,1544,772, - 0,10130,10142,3,1456,728,0,10131,10142,3,1458,729,0,10132,10142, - 3,1464,732,0,10133,10142,3,1552,776,0,10134,10142,3,1564,782,0,10135, - 10142,3,1572,786,0,10136,10142,3,1574,787,0,10137,10142,3,1576,788, - 0,10138,10142,3,1578,789,0,10139,10142,3,1580,790,0,10140,10142, - 3,1584,792,0,10141,10114,1,0,0,0,10141,10117,1,0,0,0,10141,10118, - 1,0,0,0,10141,10119,1,0,0,0,10141,10120,1,0,0,0,10141,10121,1,0, - 0,0,10141,10122,1,0,0,0,10141,10123,1,0,0,0,10141,10124,1,0,0,0, - 10141,10125,1,0,0,0,10141,10126,1,0,0,0,10141,10127,1,0,0,0,10141, - 10128,1,0,0,0,10141,10129,1,0,0,0,10141,10130,1,0,0,0,10141,10131, - 1,0,0,0,10141,10132,1,0,0,0,10141,10133,1,0,0,0,10141,10134,1,0, - 0,0,10141,10135,1,0,0,0,10141,10136,1,0,0,0,10141,10137,1,0,0,0, - 10141,10138,1,0,0,0,10141,10139,1,0,0,0,10141,10140,1,0,0,0,10142, - 1455,1,0,0,0,10143,10144,5,498,0,0,10144,10145,3,1614,807,0,10145, - 10146,5,7,0,0,10146,1457,1,0,0,0,10147,10148,5,433,0,0,10148,10149, - 3,1606,803,0,10149,10150,5,2,0,0,10150,10151,3,1460,730,0,10151, - 10152,5,3,0,0,10152,10153,5,7,0,0,10153,10162,1,0,0,0,10154,10155, - 5,57,0,0,10155,10156,3,1606,803,0,10156,10157,5,2,0,0,10157,10158, - 3,1460,730,0,10158,10159,5,3,0,0,10159,10160,5,7,0,0,10160,10162, - 1,0,0,0,10161,10147,1,0,0,0,10161,10154,1,0,0,0,10162,1459,1,0,0, - 0,10163,10166,1,0,0,0,10164,10166,3,1280,640,0,10165,10163,1,0,0, - 0,10165,10164,1,0,0,0,10166,1461,1,0,0,0,10167,10168,3,1476,738, - 0,10168,10169,3,1450,725,0,10169,10170,3,1610,805,0,10170,10171, - 5,7,0,0,10171,1463,1,0,0,0,10172,10173,5,499,0,0,10173,10174,3,1466, - 733,0,10174,10175,5,500,0,0,10175,10176,3,1468,734,0,10176,10177, - 5,7,0,0,10177,1465,1,0,0,0,10178,10182,1,0,0,0,10179,10182,5,434, - 0,0,10180,10182,5,501,0,0,10181,10178,1,0,0,0,10181,10179,1,0,0, - 0,10181,10180,1,0,0,0,10182,1467,1,0,0,0,10183,10188,3,1470,735, - 0,10184,10185,5,6,0,0,10185,10187,3,1470,735,0,10186,10184,1,0,0, - 0,10187,10190,1,0,0,0,10188,10186,1,0,0,0,10188,10189,1,0,0,0,10189, - 1469,1,0,0,0,10190,10188,1,0,0,0,10191,10192,3,1474,737,0,10192, - 10193,3,1450,725,0,10193,10194,3,1472,736,0,10194,1471,1,0,0,0,10195, - 10196,3,1372,686,0,10196,1473,1,0,0,0,10197,10198,3,1476,738,0,10198, - 1475,1,0,0,0,10199,10202,3,524,262,0,10200,10202,5,28,0,0,10201, - 10199,1,0,0,0,10201,10200,1,0,0,0,10202,10209,1,0,0,0,10203,10204, - 5,4,0,0,10204,10205,3,1616,808,0,10205,10206,5,5,0,0,10206,10208, - 1,0,0,0,10207,10203,1,0,0,0,10208,10211,1,0,0,0,10209,10207,1,0, - 0,0,10209,10210,1,0,0,0,10210,1477,1,0,0,0,10211,10209,1,0,0,0,10212, - 10213,5,220,0,0,10213,10214,3,1612,806,0,10214,10215,5,93,0,0,10215, - 10216,3,1452,726,0,10216,10217,3,1480,740,0,10217,10218,3,1482,741, - 0,10218,10219,5,454,0,0,10219,10220,5,220,0,0,10220,10221,5,7,0, - 0,10221,1479,1,0,0,0,10222,10223,5,502,0,0,10223,10224,3,1162,581, - 0,10224,10225,5,93,0,0,10225,10226,3,1452,726,0,10226,10228,1,0, - 0,0,10227,10222,1,0,0,0,10228,10231,1,0,0,0,10229,10227,1,0,0,0, - 10229,10230,1,0,0,0,10230,1481,1,0,0,0,10231,10229,1,0,0,0,10232, - 10236,1,0,0,0,10233,10234,5,58,0,0,10234,10236,3,1452,726,0,10235, - 10232,1,0,0,0,10235,10233,1,0,0,0,10236,1483,1,0,0,0,10237,10238, - 5,40,0,0,10238,10239,3,1486,743,0,10239,10240,3,1488,744,0,10240, - 10241,3,1492,746,0,10241,10242,5,454,0,0,10242,10243,5,40,0,0,10243, - 10244,5,7,0,0,10244,1485,1,0,0,0,10245,10248,1,0,0,0,10246,10248, - 3,1610,805,0,10247,10245,1,0,0,0,10247,10246,1,0,0,0,10248,1487, - 1,0,0,0,10249,10251,3,1490,745,0,10250,10249,1,0,0,0,10251,10252, - 1,0,0,0,10252,10250,1,0,0,0,10252,10253,1,0,0,0,10253,1489,1,0,0, - 0,10254,10255,5,102,0,0,10255,10256,3,1280,640,0,10256,10257,5,93, - 0,0,10257,10258,3,1452,726,0,10258,1491,1,0,0,0,10259,10263,1,0, - 0,0,10260,10261,5,58,0,0,10261,10263,3,1452,726,0,10262,10259,1, - 0,0,0,10262,10260,1,0,0,0,10263,1493,1,0,0,0,10264,10265,3,1600, - 800,0,10265,10266,3,1540,770,0,10266,1495,1,0,0,0,10267,10268,3, - 1600,800,0,10268,10269,5,503,0,0,10269,10270,3,1618,809,0,10270, - 10271,3,1540,770,0,10271,1497,1,0,0,0,10272,10273,3,1600,800,0,10273, - 10274,5,62,0,0,10274,10275,3,1500,750,0,10275,10276,3,1540,770,0, - 10276,1499,1,0,0,0,10277,10278,3,1510,755,0,10278,10294,5,68,0,0, - 10279,10280,3,954,477,0,10280,10281,3,1504,752,0,10281,10295,1,0, - 0,0,10282,10295,3,960,480,0,10283,10295,3,878,439,0,10284,10285, - 5,202,0,0,10285,10286,3,1162,581,0,10286,10287,3,1502,751,0,10287, - 10295,1,0,0,0,10288,10289,3,1506,753,0,10289,10290,3,1162,581,0, - 10290,10291,5,24,0,0,10291,10292,3,1162,581,0,10292,10293,3,1508, - 754,0,10293,10295,1,0,0,0,10294,10279,1,0,0,0,10294,10282,1,0,0, - 0,10294,10283,1,0,0,0,10294,10284,1,0,0,0,10294,10288,1,0,0,0,10295, - 1501,1,0,0,0,10296,10300,1,0,0,0,10297,10298,5,100,0,0,10298,10300, - 3,1280,640,0,10299,10296,1,0,0,0,10299,10297,1,0,0,0,10300,1503, - 1,0,0,0,10301,10314,1,0,0,0,10302,10303,5,2,0,0,10303,10308,3,1162, - 581,0,10304,10305,5,6,0,0,10305,10307,3,1162,581,0,10306,10304,1, - 0,0,0,10307,10310,1,0,0,0,10308,10306,1,0,0,0,10308,10309,1,0,0, - 0,10309,10311,1,0,0,0,10310,10308,1,0,0,0,10311,10312,5,3,0,0,10312, - 10314,1,0,0,0,10313,10301,1,0,0,0,10313,10302,1,0,0,0,10314,1505, - 1,0,0,0,10315,10318,1,0,0,0,10316,10318,5,504,0,0,10317,10315,1, - 0,0,0,10317,10316,1,0,0,0,10318,1507,1,0,0,0,10319,10323,1,0,0,0, - 10320,10321,5,147,0,0,10321,10323,3,1162,581,0,10322,10319,1,0,0, - 0,10322,10320,1,0,0,0,10323,1509,1,0,0,0,10324,10325,3,522,261,0, - 10325,1511,1,0,0,0,10326,10327,3,1600,800,0,10327,10328,5,505,0, - 0,10328,10329,3,1510,755,0,10329,10330,3,1514,757,0,10330,10331, - 5,68,0,0,10331,10332,5,35,0,0,10332,10333,3,1162,581,0,10333,10334, - 3,1540,770,0,10334,1513,1,0,0,0,10335,10339,1,0,0,0,10336,10337, - 5,506,0,0,10337,10339,3,1356,678,0,10338,10335,1,0,0,0,10338,10336, - 1,0,0,0,10339,1515,1,0,0,0,10340,10341,3,1518,759,0,10341,10342, - 3,1602,801,0,10342,10343,3,1604,802,0,10343,10344,5,7,0,0,10344, - 1517,1,0,0,0,10345,10346,7,66,0,0,10346,1519,1,0,0,0,10347,10359, - 5,508,0,0,10348,10349,5,261,0,0,10349,10360,3,1610,805,0,10350,10356, - 5,509,0,0,10351,10352,5,202,0,0,10352,10353,3,1162,581,0,10353,10354, - 3,1502,751,0,10354,10357,1,0,0,0,10355,10357,3,960,480,0,10356,10351, - 1,0,0,0,10356,10355,1,0,0,0,10357,10360,1,0,0,0,10358,10360,3,1522, - 761,0,10359,10348,1,0,0,0,10359,10350,1,0,0,0,10359,10358,1,0,0, - 0,10360,10361,1,0,0,0,10361,10362,5,7,0,0,10362,1521,1,0,0,0,10363, - 10366,1,0,0,0,10364,10366,3,1610,805,0,10365,10363,1,0,0,0,10365, - 10364,1,0,0,0,10366,1523,1,0,0,0,10367,10368,5,510,0,0,10368,10369, - 3,1526,763,0,10369,10370,3,1358,679,0,10370,10371,3,1528,764,0,10371, - 10372,3,1530,765,0,10372,10373,5,7,0,0,10373,10394,1,0,0,0,10374, - 10375,5,510,0,0,10375,10376,3,1526,763,0,10376,10377,3,1382,691, - 0,10377,10378,3,1530,765,0,10378,10379,5,7,0,0,10379,10394,1,0,0, - 0,10380,10381,5,510,0,0,10381,10382,3,1526,763,0,10382,10383,5,511, - 0,0,10383,10384,3,1358,679,0,10384,10385,3,1530,765,0,10385,10386, - 5,7,0,0,10386,10394,1,0,0,0,10387,10388,5,510,0,0,10388,10389,3, - 1526,763,0,10389,10390,3,1530,765,0,10390,10391,5,7,0,0,10391,10394, - 1,0,0,0,10392,10394,5,510,0,0,10393,10367,1,0,0,0,10393,10374,1, - 0,0,0,10393,10380,1,0,0,0,10393,10387,1,0,0,0,10393,10392,1,0,0, - 0,10394,1525,1,0,0,0,10395,10404,1,0,0,0,10396,10404,1,0,0,0,10397, - 10404,5,512,0,0,10398,10404,5,513,0,0,10399,10404,5,514,0,0,10400, - 10404,5,515,0,0,10401,10404,5,516,0,0,10402,10404,5,517,0,0,10403, - 10395,1,0,0,0,10403,10396,1,0,0,0,10403,10397,1,0,0,0,10403,10398, - 1,0,0,0,10403,10399,1,0,0,0,10403,10400,1,0,0,0,10403,10401,1,0, - 0,0,10403,10402,1,0,0,0,10404,1527,1,0,0,0,10405,10413,1,0,0,0,10406, - 10407,5,6,0,0,10407,10409,3,1162,581,0,10408,10406,1,0,0,0,10409, - 10410,1,0,0,0,10410,10408,1,0,0,0,10410,10411,1,0,0,0,10411,10413, - 1,0,0,0,10412,10405,1,0,0,0,10412,10408,1,0,0,0,10413,1529,1,0,0, - 0,10414,10418,1,0,0,0,10415,10416,5,100,0,0,10416,10418,3,1534,767, - 0,10417,10414,1,0,0,0,10417,10415,1,0,0,0,10418,1531,1,0,0,0,10419, - 10420,3,1382,691,0,10420,10421,5,10,0,0,10421,10422,3,1162,581,0, - 10422,1533,1,0,0,0,10423,10428,3,1532,766,0,10424,10425,5,6,0,0, - 10425,10427,3,1532,766,0,10426,10424,1,0,0,0,10427,10430,1,0,0,0, - 10428,10426,1,0,0,0,10428,10429,1,0,0,0,10429,1535,1,0,0,0,10430, - 10428,1,0,0,0,10431,10432,5,518,0,0,10432,10433,3,1610,805,0,10433, - 10434,3,1538,769,0,10434,10435,5,7,0,0,10435,1537,1,0,0,0,10436, - 10440,1,0,0,0,10437,10438,5,6,0,0,10438,10440,3,1610,805,0,10439, - 10436,1,0,0,0,10439,10437,1,0,0,0,10440,1539,1,0,0,0,10441,10442, - 5,519,0,0,10442,10443,3,1452,726,0,10443,10444,5,454,0,0,10444,10445, - 5,519,0,0,10445,10446,3,1602,801,0,10446,10447,5,7,0,0,10447,1541, - 1,0,0,0,10448,10449,3,1620,810,0,10449,10450,5,7,0,0,10450,1543, - 1,0,0,0,10451,10452,5,202,0,0,10452,10460,3,1162,581,0,10453,10454, - 3,1550,775,0,10454,10455,3,1546,773,0,10455,10461,1,0,0,0,10456, - 10457,3,1546,773,0,10457,10458,3,1550,775,0,10458,10461,1,0,0,0, - 10459,10461,1,0,0,0,10460,10453,1,0,0,0,10460,10456,1,0,0,0,10460, - 10459,1,0,0,0,10461,10462,1,0,0,0,10462,10463,5,7,0,0,10463,1545, - 1,0,0,0,10464,10468,1,0,0,0,10465,10466,5,100,0,0,10466,10468,3, - 1548,774,0,10467,10464,1,0,0,0,10467,10465,1,0,0,0,10468,1547,1, - 0,0,0,10469,10474,3,1162,581,0,10470,10471,5,6,0,0,10471,10473,3, - 1162,581,0,10472,10470,1,0,0,0,10473,10476,1,0,0,0,10474,10472,1, - 0,0,0,10474,10475,1,0,0,0,10475,1549,1,0,0,0,10476,10474,1,0,0,0, - 10477,10484,1,0,0,0,10478,10480,5,71,0,0,10479,10481,5,339,0,0,10480, - 10479,1,0,0,0,10480,10481,1,0,0,0,10481,10482,1,0,0,0,10482,10484, - 3,1566,783,0,10483,10477,1,0,0,0,10483,10478,1,0,0,0,10484,1551, - 1,0,0,0,10485,10503,5,520,0,0,10486,10487,3,1586,793,0,10487,10488, - 3,1560,780,0,10488,10494,5,62,0,0,10489,10495,3,960,480,0,10490, - 10491,5,202,0,0,10491,10492,3,1610,805,0,10492,10493,3,1558,779, - 0,10493,10495,1,0,0,0,10494,10489,1,0,0,0,10494,10490,1,0,0,0,10495, - 10504,1,0,0,0,10496,10501,3,1372,686,0,10497,10498,5,2,0,0,10498, - 10499,3,1556,778,0,10499,10500,5,3,0,0,10500,10502,1,0,0,0,10501, - 10497,1,0,0,0,10501,10502,1,0,0,0,10502,10504,1,0,0,0,10503,10486, - 1,0,0,0,10503,10496,1,0,0,0,10504,10505,1,0,0,0,10505,10506,5,7, - 0,0,10506,1553,1,0,0,0,10507,10508,3,1372,686,0,10508,10509,5,20, - 0,0,10509,10510,3,1162,581,0,10510,10513,1,0,0,0,10511,10513,3,1162, - 581,0,10512,10507,1,0,0,0,10512,10511,1,0,0,0,10513,1555,1,0,0,0, - 10514,10519,3,1554,777,0,10515,10516,5,6,0,0,10516,10518,3,1554, - 777,0,10517,10515,1,0,0,0,10518,10521,1,0,0,0,10519,10517,1,0,0, - 0,10519,10520,1,0,0,0,10520,1557,1,0,0,0,10521,10519,1,0,0,0,10522, - 10526,1,0,0,0,10523,10524,5,100,0,0,10524,10526,3,1280,640,0,10525, - 10522,1,0,0,0,10525,10523,1,0,0,0,10526,1559,1,0,0,0,10527,10532, - 1,0,0,0,10528,10529,3,1562,781,0,10529,10530,5,317,0,0,10530,10532, - 1,0,0,0,10531,10527,1,0,0,0,10531,10528,1,0,0,0,10532,1561,1,0,0, - 0,10533,10536,1,0,0,0,10534,10536,5,262,0,0,10535,10533,1,0,0,0, - 10535,10534,1,0,0,0,10536,1563,1,0,0,0,10537,10538,5,61,0,0,10538, - 10539,3,1570,785,0,10539,10540,3,1568,784,0,10540,10541,3,1586,793, - 0,10541,10542,5,71,0,0,10542,10543,3,1566,783,0,10543,10544,5,7, - 0,0,10544,1565,1,0,0,0,10545,10546,3,1280,640,0,10546,1567,1,0,0, - 0,10547,10551,1,0,0,0,10548,10551,5,64,0,0,10549,10551,5,68,0,0, - 10550,10547,1,0,0,0,10550,10548,1,0,0,0,10550,10549,1,0,0,0,10551, - 1569,1,0,0,0,10552,10570,1,0,0,0,10553,10570,1,0,0,0,10554,10570, - 5,261,0,0,10555,10570,5,286,0,0,10556,10570,5,207,0,0,10557,10570, - 5,240,0,0,10558,10559,5,130,0,0,10559,10570,3,1162,581,0,10560,10561, - 5,300,0,0,10561,10570,3,1162,581,0,10562,10570,3,1162,581,0,10563, - 10570,5,30,0,0,10564,10567,7,67,0,0,10565,10568,3,1162,581,0,10566, - 10568,5,30,0,0,10567,10565,1,0,0,0,10567,10566,1,0,0,0,10567,10568, - 1,0,0,0,10568,10570,1,0,0,0,10569,10552,1,0,0,0,10569,10553,1,0, - 0,0,10569,10554,1,0,0,0,10569,10555,1,0,0,0,10569,10556,1,0,0,0, - 10569,10557,1,0,0,0,10569,10558,1,0,0,0,10569,10560,1,0,0,0,10569, - 10562,1,0,0,0,10569,10563,1,0,0,0,10569,10564,1,0,0,0,10570,1571, - 1,0,0,0,10571,10572,5,258,0,0,10572,10573,3,1570,785,0,10573,10574, - 3,1586,793,0,10574,10575,5,7,0,0,10575,1573,1,0,0,0,10576,10577, - 5,157,0,0,10577,10578,3,1586,793,0,10578,10579,5,7,0,0,10579,1575, - 1,0,0,0,10580,10581,5,78,0,0,10581,10582,5,7,0,0,10582,1577,1,0, - 0,0,10583,10584,5,161,0,0,10584,10585,3,1582,791,0,10585,10586,5, - 7,0,0,10586,1579,1,0,0,0,10587,10588,5,312,0,0,10588,10589,3,1582, - 791,0,10589,10590,5,7,0,0,10590,1581,1,0,0,0,10591,10593,5,33,0, - 0,10592,10594,5,262,0,0,10593,10592,1,0,0,0,10593,10594,1,0,0,0, - 10594,10595,1,0,0,0,10595,10598,5,153,0,0,10596,10598,1,0,0,0,10597, - 10591,1,0,0,0,10597,10596,1,0,0,0,10598,1583,1,0,0,0,10599,10600, - 5,326,0,0,10600,10601,3,524,262,0,10601,10602,5,94,0,0,10602,10603, - 5,53,0,0,10603,10604,5,7,0,0,10604,10612,1,0,0,0,10605,10608,5,306, - 0,0,10606,10609,3,524,262,0,10607,10609,5,30,0,0,10608,10606,1,0, - 0,0,10608,10607,1,0,0,0,10609,10610,1,0,0,0,10610,10612,5,7,0,0, - 10611,10599,1,0,0,0,10611,10605,1,0,0,0,10612,1585,1,0,0,0,10613, - 10616,3,1372,686,0,10614,10616,5,28,0,0,10615,10613,1,0,0,0,10615, - 10614,1,0,0,0,10616,1587,1,0,0,0,10617,10621,1,0,0,0,10618,10619, - 5,517,0,0,10619,10621,3,1590,795,0,10620,10617,1,0,0,0,10620,10618, - 1,0,0,0,10621,1589,1,0,0,0,10622,10624,3,1592,796,0,10623,10622, - 1,0,0,0,10624,10625,1,0,0,0,10625,10623,1,0,0,0,10625,10626,1,0, - 0,0,10626,1591,1,0,0,0,10627,10628,5,102,0,0,10628,10629,3,1594, - 797,0,10629,10630,5,93,0,0,10630,10631,3,1452,726,0,10631,1593,1, - 0,0,0,10632,10637,3,1596,798,0,10633,10634,5,82,0,0,10634,10636, - 3,1596,798,0,10635,10633,1,0,0,0,10636,10639,1,0,0,0,10637,10635, - 1,0,0,0,10637,10638,1,0,0,0,10638,1595,1,0,0,0,10639,10637,1,0,0, - 0,10640,10644,3,1606,803,0,10641,10642,5,511,0,0,10642,10644,3,1358, - 679,0,10643,10640,1,0,0,0,10643,10641,1,0,0,0,10644,1597,1,0,0,0, - 10645,10648,1,0,0,0,10646,10648,3,1416,708,0,10647,10645,1,0,0,0, - 10647,10646,1,0,0,0,10648,1599,1,0,0,0,10649,10652,1,0,0,0,10650, - 10652,3,1416,708,0,10651,10649,1,0,0,0,10651,10650,1,0,0,0,10652, - 1601,1,0,0,0,10653,10656,1,0,0,0,10654,10656,3,1606,803,0,10655, - 10653,1,0,0,0,10655,10654,1,0,0,0,10656,1603,1,0,0,0,10657,10658, - 5,102,0,0,10658,10661,3,1614,807,0,10659,10661,1,0,0,0,10660,10657, - 1,0,0,0,10660,10659,1,0,0,0,10661,1605,1,0,0,0,10662,10665,3,1372, - 686,0,10663,10665,3,1608,804,0,10664,10662,1,0,0,0,10664,10663,1, - 0,0,0,10665,1607,1,0,0,0,10666,10667,7,68,0,0,10667,1609,1,0,0,0, - 10668,10669,3,1328,664,0,10669,10670,3,982,491,0,10670,10671,3,1054, - 527,0,10671,10672,3,1094,547,0,10672,10673,3,1024,512,0,10673,10674, - 3,1038,519,0,10674,10675,3,1240,620,0,10675,1611,1,0,0,0,10676,10677, - 3,1610,805,0,10677,1613,1,0,0,0,10678,10679,3,1610,805,0,10679,1615, - 1,0,0,0,10680,10681,3,1162,581,0,10681,1617,1,0,0,0,10682,10683, - 3,1162,581,0,10683,1619,1,0,0,0,10684,10685,3,8,4,0,10685,10686, - 3,1622,811,0,10686,1621,1,0,0,0,10687,10688,5,71,0,0,10688,10689, - 3,984,492,0,10689,10690,3,1566,783,0,10690,10693,1,0,0,0,10691,10693, - 1,0,0,0,10692,10687,1,0,0,0,10692,10691,1,0,0,0,10693,1623,1,0,0, - 0,744,1633,1637,1765,1769,1782,1787,1793,1799,1814,1826,1844,1849, - 1859,1883,1890,1896,1901,1910,1914,1926,1957,1964,1972,1977,1984, - 1990,2007,2012,2016,2029,2033,2038,2043,2055,2064,2077,2082,2093, - 2104,2109,2120,2131,2140,2150,2165,2177,2182,2189,2200,2458,2465, - 2470,2475,2480,2488,2497,2504,2514,2516,2521,2527,2533,2535,2563, - 2573,2586,2598,2612,2617,2641,2647,2652,2659,2664,2702,2706,2713, - 2717,2724,2738,2745,2756,2789,2799,2803,2810,2817,2825,2831,2835, - 2845,2852,2863,2895,2903,2908,2915,2925,2935,2955,2970,2995,3000, - 3007,3014,3025,3030,3037,3048,3056,3067,3083,3091,3095,3109,3126, - 3131,3138,3147,3150,3155,3162,3173,3186,3199,3217,3220,3229,3244, - 3259,3268,3275,3282,3287,3317,3319,3323,3331,3338,3352,3356,3360, - 3365,3371,3375,3379,3392,3398,3407,3416,3426,3437,3547,3565,3570, - 3574,3591,3599,3606,3619,3629,3663,3668,3673,3677,3685,3687,3745, - 3762,3770,3793,3797,3817,3854,3863,3868,3873,3878,3883,3936,3942, - 3949,3959,3964,3969,3987,3991,4001,4007,4013,4020,4025,4030,4044, - 4072,4079,4093,4108,4225,4236,4242,4250,4261,4270,4277,4317,4323, - 4344,4372,4376,4381,4390,4394,4421,4428,4443,4463,4483,4576,4601, - 4608,4624,4633,4638,4644,4651,4665,4814,4818,4911,4916,4920,4926, - 4994,5000,5029,5046,5053,5065,5125,5132,5138,5144,5170,5176,5182, - 5193,5205,5234,5273,5277,5281,5285,5290,5297,5311,5324,5332,5339, - 5345,5349,5354,5361,5375,5377,5384,5388,5397,5405,5414,5416,5420, - 5429,5434,5440,5445,5449,5454,5460,5466,5472,5478,5483,5498,5507, - 5518,5524,5563,5573,5580,5591,5597,5607,5619,5623,5661,5675,5689, - 5713,5720,5730,5742,5747,5783,5790,5805,5852,5889,5900,5917,6387, - 6391,6396,6455,6459,6678,6693,6704,6711,6904,6914,6922,6951,6967, - 7009,7023,7045,7052,7060,7064,7071,7080,7089,7141,7146,7158,7162, - 7167,7172,7176,7180,7185,7201,7209,7214,7227,7232,7239,7249,7253, - 7264,7275,7283,7290,7329,7337,7341,7422,7450,7455,7470,7482,7489, - 7499,7504,7508,7512,7516,7520,7527,7537,7542,7560,7571,7578,7586, - 7591,7604,7610,7639,7646,7658,7671,7686,7692,7701,7717,7720,7731, - 7736,7740,7744,7749,7752,7758,7762,7764,7767,7774,7777,7784,7792, - 7795,7804,7819,7832,7843,7846,7850,7856,7872,7885,7895,7913,7915, - 7923,7927,7937,7947,7958,7960,7969,7979,7990,8003,8007,8016,8031, - 8035,8042,8045,8049,8052,8065,8069,8074,8082,8086,8090,8101,8108, - 8114,8118,8120,8124,8130,8139,8145,8147,8149,8156,8160,8169,8173, - 8183,8190,8198,8222,8228,8232,8237,8246,8250,8253,8258,8271,8277, - 8285,8288,8295,8300,8321,8330,8335,8341,8346,8353,8358,8364,8366, - 8370,8377,8381,8384,8391,8396,8399,8406,8410,8419,8423,8431,8433, - 8440,8445,8448,8463,8475,8485,8494,8499,8504,8511,8514,8518,8525, - 8549,8558,8564,8568,8573,8583,8590,8599,8602,8611,8613,8619,8623, - 8628,8642,8644,8650,8656,8659,8668,8686,8693,8697,8701,8717,8724, - 8732,8736,8743,8756,8772,8778,8784,8791,8796,8802,8809,8817,8825, - 8830,8834,8840,8844,8848,8851,8857,8862,8878,8881,8883,8895,8897, - 8901,8907,8912,8920,8924,8933,8941,8947,8950,8959,8964,8971,8981, - 9007,9018,9020,9022,9030,9053,9061,9071,9085,9095,9099,9113,9120, - 9127,9134,9159,9188,9227,9229,9257,9278,9285,9298,9310,9316,9325, - 9342,9354,9363,9368,9375,9385,9388,9399,9405,9420,9428,9437,9446, - 9449,9454,9463,9468,9482,9492,9500,9514,9521,9529,9537,9544,9550, - 9559,9567,9577,9588,9595,9624,9633,9640,9651,9661,9665,9669,9674, - 9682,9686,9690,9695,9700,9705,9712,9720,9723,9730,9735,9742,9758, - 9773,9787,9792,9811,9816,9821,9828,9835,9842,9851,9857,9863,9869, - 9877,9886,9944,9959,9982,9990,9994,10006,10008,10015,10024,10042, - 10050,10059,10066,10076,10082,10089,10094,10100,10104,10111,10141, - 10161,10165,10181,10188,10201,10209,10229,10235,10247,10252,10262, - 10294,10299,10308,10313,10317,10322,10338,10356,10359,10365,10393, - 10403,10410,10412,10417,10428,10439,10460,10467,10474,10480,10483, - 10494,10501,10503,10512,10519,10525,10531,10535,10550,10567,10569, - 10593,10597,10608,10611,10615,10620,10625,10637,10643,10647,10651, - 10655,10660,10664,10692 - ] - -class PostgreSQLParser (): - - grammarFileName = "PostgreSQLParser.g4" - - atn = ATNDeserializer().deserialize(serializedATN()) - - decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - - sharedContextCache = PredictionContextCache() - - literalNames = [ "<INVALID>", "'$'", "'('", "')'", "'['", "']'", "','", - "';'", "':'", "'*'", "'='", "'.'", "'+'", "'-'", "'/'", - "'^'", "'<'", "'>'", "'<<'", "'>>'", "':='", "'<='", - "'=>'", "'>='", "'..'", "'<>'", "'::'", "'%'", "<INVALID>", - "<INVALID>", "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", - "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'ASYMMETRIC'", - "'BOTH'", "'CASE'", "'CAST'", "'CHECK'", "'COLLATE'", - "'COLUMN'", "'CONSTRAINT'", "'CREATE'", "'CURRENT_CATALOG'", - "'CURRENT_DATE'", "'CURRENT_ROLE'", "'CURRENT_TIME'", - "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DEFAULT'", - "'DEFERRABLE'", "'DESC'", "'DISTINCT'", "'DO'", "'ELSE'", - "'EXCEPT'", "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", - "'FROM'", "'GRANT'", "'GROUP'", "'HAVING'", "'IN'", - "'INITIALLY'", "'INTERSECT'", "'INTO'", "'LATERAL'", - "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", - "'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", - "'ORDER'", "'PLACING'", "'PRIMARY'", "'REFERENCES'", - "'RETURNING'", "'SELECT'", "'SESSION_USER'", "'SOME'", - "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", - "'TRUE'", "'UNION'", "'UNIQUE'", "'USER'", "'USING'", - "'VARIADIC'", "'WHEN'", "'WHERE'", "'WINDOW'", "'WITH'", - "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", "'CONCURRENTLY'", - "'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", "'FULL'", - "'ILIKE'", "'INNER'", "'IS'", "'ISNULL'", "'JOIN'", - "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", "'OUTER'", - "'OVER'", "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", - "'ABORT'", "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", - "'ADMIN'", "'AFTER'", "'AGGREGATE'", "'ALSO'", "'ALTER'", - "'ALWAYS'", "'ASSERTION'", "'ASSIGNMENT'", "'AT'", - "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", "'BEGIN'", - "'BY'", "'CACHE'", "'CALLED'", "'CASCADE'", "'CASCADED'", - "'CATALOG'", "'CHAIN'", "'CHARACTERISTICS'", "'CHECKPOINT'", - "'CLASS'", "'CLOSE'", "'CLUSTER'", "'COMMENT'", "'COMMENTS'", - "'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", "'CONNECTION'", - "'CONSTRAINTS'", "'CONTENT'", "'CONTINUE'", "'CONVERSION'", - "'COPY'", "'COST'", "'CSV'", "'CURSOR'", "'CYCLE'", - "'DATA'", "'DATABASE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", - "'DEFAULTS'", "'DEFERRED'", "'DEFINER'", "'DELETE'", - "'DELIMITER'", "'DELIMITERS'", "'DICTIONARY'", "'DISABLE'", - "'DISCARD'", "'DOCUMENT'", "'DOMAIN'", "'DOUBLE'", - "'DROP'", "'EACH'", "'ENABLE'", "'ENCODING'", "'ENCRYPTED'", - "'ENUM'", "'ESCAPE'", "'EVENT'", "'EXCLUDE'", "'EXCLUDING'", - "'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", "'EXTENSION'", - "'EXTERNAL'", "'FAMILY'", "'FIRST'", "'FOLLOWING'", - "'FORCE'", "'FORWARD'", "'FUNCTION'", "'FUNCTIONS'", - "'GLOBAL'", "'GRANTED'", "'HANDLER'", "'HEADER'", "'HOLD'", - "'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", "'IMMUTABLE'", - "'IMPLICIT'", "'INCLUDING'", "'INCREMENT'", "'INDEX'", - "'INDEXES'", "'INHERIT'", "'INHERITS'", "'INLINE'", - "'INSENSITIVE'", "'INSERT'", "'INSTEAD'", "'INVOKER'", - "'ISOLATION'", "'KEY'", "'LABEL'", "'LANGUAGE'", "'LARGE'", - "'LAST'", "'LEAKPROOF'", "'LEVEL'", "'LISTEN'", "'LOAD'", - "'LOCAL'", "'LOCATION'", "'LOCK'", "'MAPPING'", "'MATCH'", - "'MATCHED'", "'MATERIALIZED'", "'MAXVALUE'", "'MERGE'", - "'MINUTE'", "'MINVALUE'", "'MODE'", "'MONTH'", "'MOVE'", - "'NAME'", "'NAMES'", "'NEXT'", "'NO'", "'NOTHING'", - "'NOTIFY'", "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", - "'OFF'", "'OIDS'", "'OPERATOR'", "'OPTION'", "'OPTIONS'", - "'OWNED'", "'OWNER'", "'PARSER'", "'PARTIAL'", "'PARTITION'", - "'PASSING'", "'PASSWORD'", "'PLANS'", "'PRECEDING'", - "'PREPARE'", "'PREPARED'", "'PRESERVE'", "'PRIOR'", - "'PRIVILEGES'", "'PROCEDURAL'", "'PROCEDURE'", "'PROGRAM'", - "'QUOTE'", "'RANGE'", "'READ'", "'REASSIGN'", "'RECHECK'", - "'RECURSIVE'", "'REF'", "'REFRESH'", "'REINDEX'", "'RELATIVE'", - "'RELEASE'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", - "'REPLICA'", "'RESET'", "'RESTART'", "'RESTRICT'", - "'RETURNS'", "'REVOKE'", "'ROLE'", "'ROLLBACK'", "'ROWS'", - "'RULE'", "'SAVEPOINT'", "'SCHEMA'", "'SCROLL'", "'SEARCH'", - "'SECOND'", "'SECURITY'", "'SEQUENCE'", "'SEQUENCES'", - "'SERIALIZABLE'", "'SERVER'", "'SESSION'", "'SET'", - "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", "'STABLE'", - "'STANDALONE'", "'START'", "'STATEMENT'", "'STATISTICS'", - "'STDIN'", "'STDOUT'", "'STORAGE'", "'STRICT'", "'STRIP'", - "'SYSID'", "'SYSTEM'", "'TABLES'", "'TABLESPACE'", - "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", "'TEXT'", "'TRANSACTION'", - "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", "'TYPES'", - "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", "'UNKNOWN'", - "'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", - "'VACUUM'", "'VALID'", "'VALIDATE'", "'VALIDATOR'", - "'VARYING'", "'VERSION'", "'VIEW'", "'VOLATILE'", "'WHITESPACE'", - "'WITHOUT'", "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", - "'YEAR'", "'YES'", "'ZONE'", "'BETWEEN'", "'BIGINT'", - "'BIT'", "'BOOLEAN'", "'CHAR'", "'CHARACTER'", "'COALESCE'", - "'DEC'", "'DECIMAL'", "'EXISTS'", "'EXTRACT'", "'FLOAT'", - "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", "'INTERVAL'", - "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", "'NULLIF'", - "'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", - "'REAL'", "'ROW'", "'SETOF'", "'SMALLINT'", "'SUBSTRING'", - "'TIME'", "'TIMESTAMP'", "'TREAT'", "'TRIM'", "'VALUES'", - "'VARCHAR'", "'XMLATTRIBUTES'", "'XMLCOMMENT'", "'XMLAGG'", - "'XML_IS_WELL_FORMED'", "'XML_IS_WELL_FORMED_DOCUMENT'", - "'XML_IS_WELL_FORMED_CONTENT'", "'XPATH'", "'XPATH_EXISTS'", - "'XMLCONCAT'", "'XMLELEMENT'", "'XMLEXISTS'", "'XMLFOREST'", - "'XMLPARSE'", "'XMLPI'", "'XMLROOT'", "'XMLSERIALIZE'", - "'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", "'EXPRESSION'", - "'GENERATED'", "'LOGGED'", "'STORED'", "'INCLUDE'", - "'ROUTINE'", "'TRANSFORM'", "'IMPORT'", "'POLICY'", - "'METHOD'", "'REFERENCING'", "'NEW'", "'OLD'", "'VALUE'", - "'SUBSCRIPTION'", "'PUBLICATION'", "'OUT'", "'END'", - "'ROUTINES'", "'SCHEMAS'", "'PROCEDURES'", "'INPUT'", - "'SUPPORT'", "'PARALLEL'", "'SQL'", "'DEPENDS'", "'OVERRIDING'", - "'CONFLICT'", "'SKIP'", "'LOCKED'", "'TIES'", "'ROLLUP'", - "'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", - "'ORDINALITY'", "'XMLTABLE'", "'COLUMNS'", "'XMLNAMESPACES'", - "'ROWTYPE'", "'NORMALIZED'", "'WITHIN'", "'FILTER'", - "'GROUPS'", "'OTHERS'", "'NFC'", "'NFD'", "'NFKC'", - "'NFKD'", "'UESCAPE'", "'VIEWS'", "'NORMALIZE'", "'DUMP'", - "'PRINT_STRICT_PARAMS'", "'VARIABLE_CONFLICT'", "'ERROR'", - "'USE_VARIABLE'", "'USE_COLUMN'", "'ALIAS'", "'CONSTANT'", - "'PERFORM'", "'GET'", "'DIAGNOSTICS'", "'STACKED'", - "'ELSIF'", "'WHILE'", "'REVERSE'", "'FOREACH'", "'SLICE'", - "'EXIT'", "'RETURN'", "'QUERY'", "'RAISE'", "'SQLSTATE'", - "'DEBUG'", "'LOG'", "'INFO'", "'NOTICE'", "'WARNING'", - "'EXCEPTION'", "'ASSERT'", "'LOOP'", "'OPEN'", "'ABS'", - "'CBRT'", "'CEIL'", "'CEILING'", "'DEGREES'", "'DIV'", - "'EXP'", "'FACTORIAL'", "'FLOOR'", "'GCD'", "'LCM'", - "'LN'", "'LOG10'", "'MIN_SCALE'", "'MOD'", "'PI'", - "'POWER'", "'RADIANS'", "'ROUND'", "'SCALE'", "'SIGN'", - "'SQRT'", "'TRIM_SCALE'", "'TRUNC'", "'WIDTH_BUCKET'", - "'RANDOM'", "'SETSEED'", "'ACOS'", "'ACOSD'", "'ASIN'", - "'ASIND'", "'ATAN'", "'ATAND'", "'ATAN2'", "'ATAN2D'", - "'COS'", "'COSD'", "'COT'", "'COTD'", "'SIN'", "'SIND'", - "'TAN'", "'TAND'", "'SINH'", "'COSH'", "'TANH'", "'ASINH'", - "'ACOSH'", "'ATANH'", "'BIT_LENGTH'", "'CHAR_LENGTH'", - "'CHARACTER_LENGTH'", "'LOWER'", "'OCTET_LENGTH'", - "'UPPER'", "'ASCII'", "'BTRIM'", "'CHR'", "'CONCAT'", - "'CONCAT_WS'", "'FORMAT'", "'INITCAP'", "'LENGTH'", - "'LPAD'", "'LTRIM'", "'MD5'", "'PARSE_IDENT'", "'PG_CLIENT_ENCODING'", - "'QUOTE_IDENT'", "'QUOTE_LITERAL'", "'QUOTE_NULLABLE'", - "'REGEXP_COUNT'", "'REGEXP_INSTR'", "'REGEXP_LIKE'", - "'REGEXP_MATCH'", "'REGEXP_MATCHES'", "'REGEXP_REPLACE'", - "'REGEXP_SPLIT_TO_ARRAY'", "'REGEXP_SPLIT_TO_TABLE'", - "'REGEXP_SUBSTR'", "'REPEAT'", "'RPAD'", "'RTRIM'", - "'SPLIT_PART'", "'STARTS_WITH'", "'STRING_TO_ARRAY'", - "'STRING_TO_TABLE'", "'STRPOS'", "'SUBSTR'", "'TO_ASCII'", - "'TO_HEX'", "'TRANSLATE'", "'UNISTR'", "'AGE'", "'CLOCK_TIMESTAMP'", - "'DATE_BIN'", "'DATE_PART'", "'DATE_TRUNC'", "'ISFINITE'", - "'JUSTIFY_DAYS'", "'JUSTIFY_HOURS'", "'JUSTIFY_INTERVAL'", - "'MAKE_DATE'", "'MAKE_INTERVAL'", "'MAKE_TIME'", "'MAKE_TIMESTAMP'", - "'MAKE_TIMESTAMPTZ'", "'NOW'", "'STATEMENT_TIMESTAMP'", - "'TIMEOFDAY'", "'TRANSACTION_TIMESTAMP'", "'TO_TIMESTAMP'", - "'TO_CHAR'", "'TO_DATE'", "'TO_NUMBER'", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "'\\\\'", "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "<INVALID>", "<INVALID>", "<INVALID>", - "<INVALID>", "'''" ] - - symbolicNames = [ "<INVALID>", "Dollar", "OPEN_PAREN", "CLOSE_PAREN", - "OPEN_BRACKET", "CLOSE_BRACKET", "COMMA", "SEMI", - "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", - "SLASH", "CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", - "COLON_EQUALS", "LESS_EQUALS", "EQUALS_GREATER", "GREATER_EQUALS", - "DOT_DOT", "NOT_EQUALS", "TYPECAST", "PERCENT", "PARAM", - "Operator", "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", - "ARRAY", "AS", "ASC", "ASYMMETRIC", "BOTH", "CASE", - "CAST", "CHECK", "COLLATE", "COLUMN", "CONSTRAINT", - "CREATE", "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", - "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", - "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", - "ELSE", "EXCEPT", "FALSE_P", "FETCH", "FOR", "FOREIGN", - "FROM", "GRANT", "GROUP_P", "HAVING", "IN_P", "INITIALLY", - "INTERSECT", "INTO", "LATERAL_P", "LEADING", "LIMIT", - "LOCALTIME", "LOCALTIMESTAMP", "NOT", "NULL_P", "OFFSET", - "ON", "ONLY", "OR", "ORDER", "PLACING", "PRIMARY", - "REFERENCES", "RETURNING", "SELECT", "SESSION_USER", - "SOME", "SYMMETRIC", "TABLE", "THEN", "TO", "TRAILING", - "TRUE_P", "UNION", "UNIQUE", "USER", "USING", "VARIADIC", - "WHEN", "WHERE", "WINDOW", "WITH", "AUTHORIZATION", - "BINARY", "COLLATION", "CONCURRENTLY", "CROSS", "CURRENT_SCHEMA", - "FREEZE", "FULL", "ILIKE", "INNER_P", "IS", "ISNULL", - "JOIN", "LEFT", "LIKE", "NATURAL", "NOTNULL", "OUTER_P", - "OVER", "OVERLAPS", "RIGHT", "SIMILAR", "VERBOSE", - "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", - "ADMIN", "AFTER", "AGGREGATE", "ALSO", "ALTER", "ALWAYS", - "ASSERTION", "ASSIGNMENT", "AT", "ATTRIBUTE", "BACKWARD", - "BEFORE", "BEGIN_P", "BY", "CACHE", "CALLED", "CASCADE", - "CASCADED", "CATALOG", "CHAIN", "CHARACTERISTICS", - "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COMMENT", - "COMMENTS", "COMMIT", "COMMITTED", "CONFIGURATION", - "CONNECTION", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", - "CONVERSION_P", "COPY", "COST", "CSV", "CURSOR", "CYCLE", - "DATA_P", "DATABASE", "DAY_P", "DEALLOCATE", "DECLARE", - "DEFAULTS", "DEFERRED", "DEFINER", "DELETE_P", "DELIMITER", - "DELIMITERS", "DICTIONARY", "DISABLE_P", "DISCARD", - "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", - "ENABLE_P", "ENCODING", "ENCRYPTED", "ENUM_P", "ESCAPE", - "EVENT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", - "EXPLAIN", "EXTENSION", "EXTERNAL", "FAMILY", "FIRST_P", - "FOLLOWING", "FORCE", "FORWARD", "FUNCTION", "FUNCTIONS", - "GLOBAL", "GRANTED", "HANDLER", "HEADER_P", "HOLD", - "HOUR_P", "IDENTITY_P", "IF_P", "IMMEDIATE", "IMMUTABLE", - "IMPLICIT_P", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", - "INHERIT", "INHERITS", "INLINE_P", "INSENSITIVE", - "INSERT", "INSTEAD", "INVOKER", "ISOLATION", "KEY", - "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LEAKPROOF", - "LEVEL", "LISTEN", "LOAD", "LOCAL", "LOCATION", "LOCK_P", - "MAPPING", "MATCH", "MATCHED", "MATERIALIZED", "MAXVALUE", - "MERGE", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", - "MOVE", "NAME_P", "NAMES", "NEXT", "NO", "NOTHING", - "NOTIFY", "NOWAIT", "NULLS_P", "OBJECT_P", "OF", "OFF", - "OIDS", "OPERATOR", "OPTION", "OPTIONS", "OWNED", - "OWNER", "PARSER", "PARTIAL", "PARTITION", "PASSING", - "PASSWORD", "PLANS", "PRECEDING", "PREPARE", "PREPARED", - "PRESERVE", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", - "PROGRAM", "QUOTE", "RANGE", "READ", "REASSIGN", "RECHECK", - "RECURSIVE", "REF", "REFRESH", "REINDEX", "RELATIVE_P", - "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", - "RESET", "RESTART", "RESTRICT", "RETURNS", "REVOKE", - "ROLE", "ROLLBACK", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", - "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SEQUENCE", - "SEQUENCES", "SERIALIZABLE", "SERVER", "SESSION", - "SET", "SHARE", "SHOW", "SIMPLE", "SNAPSHOT", "STABLE", - "STANDALONE_P", "START", "STATEMENT", "STATISTICS", - "STDIN", "STDOUT", "STORAGE", "STRICT_P", "STRIP_P", - "SYSID", "SYSTEM_P", "TABLES", "TABLESPACE", "TEMP", - "TEMPLATE", "TEMPORARY", "TEXT_P", "TRANSACTION", - "TRIGGER", "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", - "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", "UNKNOWN", - "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", "VACUUM", - "VALID", "VALIDATE", "VALIDATOR", "VARYING", "VERSION_P", - "VIEW", "VOLATILE", "WHITESPACE_P", "WITHOUT", "WORK", - "WRAPPER", "WRITE", "XML_P", "YEAR_P", "YES_P", "ZONE", - "BETWEEN", "BIGINT", "BIT", "BOOLEAN_P", "CHAR_P", - "CHARACTER", "COALESCE", "DEC", "DECIMAL_P", "EXISTS", - "EXTRACT", "FLOAT_P", "GREATEST", "INOUT", "INT_P", - "INTEGER", "INTERVAL", "LEAST", "NATIONAL", "NCHAR", - "NONE", "NULLIF", "NUMERIC", "OVERLAY", "POSITION", - "PRECISION", "REAL", "ROW", "SETOF", "SMALLINT", "SUBSTRING", - "TIME", "TIMESTAMP", "TREAT", "TRIM", "VALUES", "VARCHAR", - "XMLATTRIBUTES", "XMLCOMMENT", "XMLAGG", "XML_IS_WELL_FORMED", - "XML_IS_WELL_FORMED_DOCUMENT", "XML_IS_WELL_FORMED_CONTENT", - "XPATH", "XPATH_EXISTS", "XMLCONCAT", "XMLELEMENT", - "XMLEXISTS", "XMLFOREST", "XMLPARSE", "XMLPI", "XMLROOT", - "XMLSERIALIZE", "CALL", "CURRENT_P", "ATTACH", "DETACH", - "EXPRESSION", "GENERATED", "LOGGED", "STORED", "INCLUDE", - "ROUTINE", "TRANSFORM", "IMPORT_P", "POLICY", "METHOD", - "REFERENCING", "NEW", "OLD", "VALUE_P", "SUBSCRIPTION", - "PUBLICATION", "OUT_P", "END_P", "ROUTINES", "SCHEMAS", - "PROCEDURES", "INPUT_P", "SUPPORT", "PARALLEL", "SQL_P", - "DEPENDS", "OVERRIDING", "CONFLICT", "SKIP_P", "LOCKED", - "TIES", "ROLLUP", "CUBE", "GROUPING", "SETS", "TABLESAMPLE", - "ORDINALITY", "XMLTABLE", "COLUMNS", "XMLNAMESPACES", - "ROWTYPE", "NORMALIZED", "WITHIN", "FILTER", "GROUPS", - "OTHERS", "NFC", "NFD", "NFKC", "NFKD", "UESCAPE", - "VIEWS", "NORMALIZE", "DUMP", "PRINT_STRICT_PARAMS", - "VARIABLE_CONFLICT", "ERROR", "USE_VARIABLE", "USE_COLUMN", - "ALIAS", "CONSTANT", "PERFORM", "GET", "DIAGNOSTICS", - "STACKED", "ELSIF", "WHILE", "REVERSE", "FOREACH", - "SLICE", "EXIT", "RETURN", "QUERY", "RAISE", "SQLSTATE", - "DEBUG", "LOG", "INFO", "NOTICE", "WARNING", "EXCEPTION", - "ASSERT", "LOOP", "OPEN", "ABS", "CBRT", "CEIL", "CEILING", - "DEGREES", "DIV", "EXP", "FACTORIAL", "FLOOR", "GCD", - "LCM", "LN", "LOG10", "MIN_SCALE", "MOD", "PI", "POWER", - "RADIANS", "ROUND", "SCALE", "SIGN", "SQRT", "TRIM_SCALE", - "TRUNC", "WIDTH_BUCKET", "RANDOM", "SETSEED", "ACOS", - "ACOSD", "ASIN", "ASIND", "ATAN", "ATAND", "ATAN2", - "ATAN2D", "COS", "COSD", "COT", "COTD", "SIN", "SIND", - "TAN", "TAND", "SINH", "COSH", "TANH", "ASINH", "ACOSH", - "ATANH", "BIT_LENGTH", "CHAR_LENGTH", "CHARACTER_LENGTH", - "LOWER", "OCTET_LENGTH", "UPPER", "ASCII", "BTRIM", - "CHR", "CONCAT", "CONCAT_WS", "FORMAT", "INITCAP", - "LENGTH", "LPAD", "LTRIM", "MD5", "PARSE_IDENT", "PG_CLIENT_ENCODING", - "QUOTE_IDENT", "QUOTE_LITERAL", "QUOTE_NULLABLE", - "REGEXP_COUNT", "REGEXP_INSTR", "REGEXP_LIKE", "REGEXP_MATCH", - "REGEXP_MATCHES", "REGEXP_REPLACE", "REGEXP_SPLIT_TO_ARRAY", - "REGEXP_SPLIT_TO_TABLE", "REGEXP_SUBSTR", "REPEAT", - "RPAD", "RTRIM", "SPLIT_PART", "STARTS_WITH", "STRING_TO_ARRAY", - "STRING_TO_TABLE", "STRPOS", "SUBSTR", "TO_ASCII", - "TO_HEX", "TRANSLATE", "UNISTR", "AGE", "CLOCK_TIMESTAMP", - "DATE_BIN", "DATE_PART", "DATE_TRUNC", "ISFINITE", - "JUSTIFY_DAYS", "JUSTIFY_HOURS", "JUSTIFY_INTERVAL", - "MAKE_DATE", "MAKE_INTERVAL", "MAKE_TIME", "MAKE_TIMESTAMP", - "MAKE_TIMESTAMPTZ", "NOW", "STATEMENT_TIMESTAMP", - "TIMEOFDAY", "TRANSACTION_TIMESTAMP", "TO_TIMESTAMP", - "TO_CHAR", "TO_DATE", "TO_NUMBER", "Identifier", "QuotedIdentifier", - "UnterminatedQuotedIdentifier", "InvalidQuotedIdentifier", - "InvalidUnterminatedQuotedIdentifier", "UnicodeQuotedIdentifier", - "UnterminatedUnicodeQuotedIdentifier", "InvalidUnicodeQuotedIdentifier", - "InvalidUnterminatedUnicodeQuotedIdentifier", "StringConstant", - "UnterminatedStringConstant", "UnicodeEscapeStringConstant", - "UnterminatedUnicodeEscapeStringConstant", "BeginDollarStringConstant", - "BinaryStringConstant", "UnterminatedBinaryStringConstant", - "InvalidBinaryStringConstant", "InvalidUnterminatedBinaryStringConstant", - "HexadecimalStringConstant", "UnterminatedHexadecimalStringConstant", - "InvalidHexadecimalStringConstant", "InvalidUnterminatedHexadecimalStringConstant", - "Integral", "NumericFail", "Numeric", "PLSQLVARIABLENAME", - "PLSQLIDENTIFIER", "Whitespace", "Newline", "LineComment", - "BlockComment", "UnterminatedBlockComment", "MetaCommand", - "EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", - "UnterminatedEscapeStringConstant", "InvalidEscapeStringConstant", - "InvalidUnterminatedEscapeStringConstant", "AfterEscapeStringConstantMode_NotContinued", - "AfterEscapeStringConstantWithNewlineMode_NotContinued", - "DollarText", "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued" ] - - RULE_root = 0 - RULE_plsqlroot = 1 - RULE_stmtblock = 2 - RULE_stmtmulti = 3 - RULE_stmt = 4 - RULE_plsqlconsolecommand = 5 - RULE_callstmt = 6 - RULE_createrolestmt = 7 - RULE_opt_with = 8 - RULE_optrolelist = 9 - RULE_alteroptrolelist = 10 - RULE_alteroptroleelem = 11 - RULE_createoptroleelem = 12 - RULE_createuserstmt = 13 - RULE_alterrolestmt = 14 - RULE_opt_in_database = 15 - RULE_alterrolesetstmt = 16 - RULE_droprolestmt = 17 - RULE_creategroupstmt = 18 - RULE_altergroupstmt = 19 - RULE_add_drop = 20 - RULE_createschemastmt = 21 - RULE_optschemaname = 22 - RULE_optschemaeltlist = 23 - RULE_schema_stmt = 24 - RULE_variablesetstmt = 25 - RULE_set_rest = 26 - RULE_generic_set = 27 - RULE_set_rest_more = 28 - RULE_var_name = 29 - RULE_var_list = 30 - RULE_var_value = 31 - RULE_iso_level = 32 - RULE_opt_boolean_or_string = 33 - RULE_zone_value = 34 - RULE_opt_encoding = 35 - RULE_nonreservedword_or_sconst = 36 - RULE_variableresetstmt = 37 - RULE_reset_rest = 38 - RULE_generic_reset = 39 - RULE_setresetclause = 40 - RULE_functionsetresetclause = 41 - RULE_variableshowstmt = 42 - RULE_constraintssetstmt = 43 - RULE_constraints_set_list = 44 - RULE_constraints_set_mode = 45 - RULE_checkpointstmt = 46 - RULE_discardstmt = 47 - RULE_altertablestmt = 48 - RULE_alter_table_cmds = 49 - RULE_partition_cmd = 50 - RULE_index_partition_cmd = 51 - RULE_alter_table_cmd = 52 - RULE_alter_column_default = 53 - RULE_opt_drop_behavior = 54 - RULE_opt_collate_clause = 55 - RULE_alter_using = 56 - RULE_replica_identity = 57 - RULE_reloptions = 58 - RULE_opt_reloptions = 59 - RULE_reloption_list = 60 - RULE_reloption_elem = 61 - RULE_alter_identity_column_option_list = 62 - RULE_alter_identity_column_option = 63 - RULE_partitionboundspec = 64 - RULE_hash_partbound_elem = 65 - RULE_hash_partbound = 66 - RULE_altercompositetypestmt = 67 - RULE_alter_type_cmds = 68 - RULE_alter_type_cmd = 69 - RULE_closeportalstmt = 70 - RULE_copystmt = 71 - RULE_copy_from = 72 - RULE_opt_program = 73 - RULE_copy_file_name = 74 - RULE_copy_options = 75 - RULE_copy_opt_list = 76 - RULE_copy_opt_item = 77 - RULE_opt_binary = 78 - RULE_copy_delimiter = 79 - RULE_opt_using = 80 - RULE_copy_generic_opt_list = 81 - RULE_copy_generic_opt_elem = 82 - RULE_copy_generic_opt_arg = 83 - RULE_copy_generic_opt_arg_list = 84 - RULE_copy_generic_opt_arg_list_item = 85 - RULE_createstmt = 86 - RULE_opttemp = 87 - RULE_opttableelementlist = 88 - RULE_opttypedtableelementlist = 89 - RULE_tableelementlist = 90 - RULE_typedtableelementlist = 91 - RULE_tableelement = 92 - RULE_typedtableelement = 93 - RULE_columnDef = 94 - RULE_columnOptions = 95 - RULE_colquallist = 96 - RULE_colconstraint = 97 - RULE_colconstraintelem = 98 - RULE_generated_when = 99 - RULE_constraintattr = 100 - RULE_tablelikeclause = 101 - RULE_tablelikeoptionlist = 102 - RULE_tablelikeoption = 103 - RULE_tableconstraint = 104 - RULE_constraintelem = 105 - RULE_opt_no_inherit = 106 - RULE_opt_column_list = 107 - RULE_columnlist = 108 - RULE_columnElem = 109 - RULE_opt_c_include = 110 - RULE_key_match = 111 - RULE_exclusionconstraintlist = 112 - RULE_exclusionconstraintelem = 113 - RULE_exclusionwhereclause = 114 - RULE_key_actions = 115 - RULE_key_update = 116 - RULE_key_delete = 117 - RULE_key_action = 118 - RULE_optinherit = 119 - RULE_optpartitionspec = 120 - RULE_partitionspec = 121 - RULE_part_params = 122 - RULE_part_elem = 123 - RULE_table_access_method_clause = 124 - RULE_optwith = 125 - RULE_oncommitoption = 126 - RULE_opttablespace = 127 - RULE_optconstablespace = 128 - RULE_existingindex = 129 - RULE_createstatsstmt = 130 - RULE_alterstatsstmt = 131 - RULE_createasstmt = 132 - RULE_create_as_target = 133 - RULE_opt_with_data = 134 - RULE_creatematviewstmt = 135 - RULE_create_mv_target = 136 - RULE_optnolog = 137 - RULE_refreshmatviewstmt = 138 - RULE_createseqstmt = 139 - RULE_alterseqstmt = 140 - RULE_optseqoptlist = 141 - RULE_optparenthesizedseqoptlist = 142 - RULE_seqoptlist = 143 - RULE_seqoptelem = 144 - RULE_opt_by = 145 - RULE_numericonly = 146 - RULE_numericonly_list = 147 - RULE_createplangstmt = 148 - RULE_opt_trusted = 149 - RULE_handler_name = 150 - RULE_opt_inline_handler = 151 - RULE_validator_clause = 152 - RULE_opt_validator = 153 - RULE_opt_procedural = 154 - RULE_createtablespacestmt = 155 - RULE_opttablespaceowner = 156 - RULE_droptablespacestmt = 157 - RULE_createextensionstmt = 158 - RULE_create_extension_opt_list = 159 - RULE_create_extension_opt_item = 160 - RULE_alterextensionstmt = 161 - RULE_alter_extension_opt_list = 162 - RULE_alter_extension_opt_item = 163 - RULE_alterextensioncontentsstmt = 164 - RULE_createfdwstmt = 165 - RULE_fdw_option = 166 - RULE_fdw_options = 167 - RULE_opt_fdw_options = 168 - RULE_alterfdwstmt = 169 - RULE_create_generic_options = 170 - RULE_generic_option_list = 171 - RULE_alter_generic_options = 172 - RULE_alter_generic_option_list = 173 - RULE_alter_generic_option_elem = 174 - RULE_generic_option_elem = 175 - RULE_generic_option_name = 176 - RULE_generic_option_arg = 177 - RULE_createforeignserverstmt = 178 - RULE_opt_type = 179 - RULE_foreign_server_version = 180 - RULE_opt_foreign_server_version = 181 - RULE_alterforeignserverstmt = 182 - RULE_createforeigntablestmt = 183 - RULE_importforeignschemastmt = 184 - RULE_import_qualification_type = 185 - RULE_import_qualification = 186 - RULE_createusermappingstmt = 187 - RULE_auth_ident = 188 - RULE_dropusermappingstmt = 189 - RULE_alterusermappingstmt = 190 - RULE_createpolicystmt = 191 - RULE_alterpolicystmt = 192 - RULE_rowsecurityoptionalexpr = 193 - RULE_rowsecurityoptionalwithcheck = 194 - RULE_rowsecuritydefaulttorole = 195 - RULE_rowsecurityoptionaltorole = 196 - RULE_rowsecuritydefaultpermissive = 197 - RULE_rowsecuritydefaultforcmd = 198 - RULE_row_security_cmd = 199 - RULE_createamstmt = 200 - RULE_am_type = 201 - RULE_createtrigstmt = 202 - RULE_triggeractiontime = 203 - RULE_triggerevents = 204 - RULE_triggeroneevent = 205 - RULE_triggerreferencing = 206 - RULE_triggertransitions = 207 - RULE_triggertransition = 208 - RULE_transitionoldornew = 209 - RULE_transitionrowortable = 210 - RULE_transitionrelname = 211 - RULE_triggerforspec = 212 - RULE_triggerforopteach = 213 - RULE_triggerfortype = 214 - RULE_triggerwhen = 215 - RULE_function_or_procedure = 216 - RULE_triggerfuncargs = 217 - RULE_triggerfuncarg = 218 - RULE_optconstrfromtable = 219 - RULE_constraintattributespec = 220 - RULE_constraintattributeElem = 221 - RULE_createeventtrigstmt = 222 - RULE_event_trigger_when_list = 223 - RULE_event_trigger_when_item = 224 - RULE_event_trigger_value_list = 225 - RULE_altereventtrigstmt = 226 - RULE_enable_trigger = 227 - RULE_createassertionstmt = 228 - RULE_definestmt = 229 - RULE_definition = 230 - RULE_def_list = 231 - RULE_def_elem = 232 - RULE_def_arg = 233 - RULE_old_aggr_definition = 234 - RULE_old_aggr_list = 235 - RULE_old_aggr_elem = 236 - RULE_opt_enum_val_list = 237 - RULE_enum_val_list = 238 - RULE_alterenumstmt = 239 - RULE_opt_if_not_exists = 240 - RULE_createopclassstmt = 241 - RULE_opclass_item_list = 242 - RULE_opclass_item = 243 - RULE_opt_default = 244 - RULE_opt_opfamily = 245 - RULE_opclass_purpose = 246 - RULE_opt_recheck = 247 - RULE_createopfamilystmt = 248 - RULE_alteropfamilystmt = 249 - RULE_opclass_drop_list = 250 - RULE_opclass_drop = 251 - RULE_dropopclassstmt = 252 - RULE_dropopfamilystmt = 253 - RULE_dropownedstmt = 254 - RULE_reassignownedstmt = 255 - RULE_dropstmt = 256 - RULE_object_type_any_name = 257 - RULE_object_type_name = 258 - RULE_drop_type_name = 259 - RULE_object_type_name_on_any_name = 260 - RULE_any_name_list = 261 - RULE_any_name = 262 - RULE_attrs = 263 - RULE_type_name_list = 264 - RULE_truncatestmt = 265 - RULE_opt_restart_seqs = 266 - RULE_commentstmt = 267 - RULE_comment_text = 268 - RULE_seclabelstmt = 269 - RULE_opt_provider = 270 - RULE_security_label = 271 - RULE_fetchstmt = 272 - RULE_fetch_args = 273 - RULE_from_in = 274 - RULE_opt_from_in = 275 - RULE_grantstmt = 276 - RULE_revokestmt = 277 - RULE_privileges = 278 - RULE_privilege_list = 279 - RULE_privilege = 280 - RULE_privilege_target = 281 - RULE_grantee_list = 282 - RULE_grantee = 283 - RULE_opt_grant_grant_option = 284 - RULE_grantrolestmt = 285 - RULE_revokerolestmt = 286 - RULE_opt_grant_admin_option = 287 - RULE_opt_granted_by = 288 - RULE_alterdefaultprivilegesstmt = 289 - RULE_defacloptionlist = 290 - RULE_defacloption = 291 - RULE_defaclaction = 292 - RULE_defacl_privilege_target = 293 - RULE_indexstmt = 294 - RULE_opt_unique = 295 - RULE_opt_concurrently = 296 - RULE_opt_index_name = 297 - RULE_access_method_clause = 298 - RULE_index_params = 299 - RULE_index_elem_options = 300 - RULE_index_elem = 301 - RULE_opt_include = 302 - RULE_index_including_params = 303 - RULE_opt_collate = 304 - RULE_opt_class = 305 - RULE_opt_asc_desc = 306 - RULE_opt_nulls_order = 307 - RULE_createfunctionstmt = 308 - RULE_opt_or_replace = 309 - RULE_func_args = 310 - RULE_func_args_list = 311 - RULE_function_with_argtypes_list = 312 - RULE_function_with_argtypes = 313 - RULE_func_args_with_defaults = 314 - RULE_func_args_with_defaults_list = 315 - RULE_func_arg = 316 - RULE_arg_class = 317 - RULE_param_name = 318 - RULE_func_return = 319 - RULE_func_type = 320 - RULE_func_arg_with_default = 321 - RULE_aggr_arg = 322 - RULE_aggr_args = 323 - RULE_aggr_args_list = 324 - RULE_aggregate_with_argtypes = 325 - RULE_aggregate_with_argtypes_list = 326 - RULE_createfunc_opt_list = 327 - RULE_common_func_opt_item = 328 - RULE_createfunc_opt_item = 329 - RULE_func_as = 330 - RULE_transform_type_list = 331 - RULE_opt_definition = 332 - RULE_table_func_column = 333 - RULE_table_func_column_list = 334 - RULE_alterfunctionstmt = 335 - RULE_alterfunc_opt_list = 336 - RULE_opt_restrict = 337 - RULE_removefuncstmt = 338 - RULE_removeaggrstmt = 339 - RULE_removeoperstmt = 340 - RULE_oper_argtypes = 341 - RULE_any_operator = 342 - RULE_operator_with_argtypes_list = 343 - RULE_operator_with_argtypes = 344 - RULE_dostmt = 345 - RULE_dostmt_opt_list = 346 - RULE_dostmt_opt_item = 347 - RULE_createcaststmt = 348 - RULE_cast_context = 349 - RULE_dropcaststmt = 350 - RULE_opt_if_exists = 351 - RULE_createtransformstmt = 352 - RULE_transform_element_list = 353 - RULE_droptransformstmt = 354 - RULE_reindexstmt = 355 - RULE_reindex_target_type = 356 - RULE_reindex_target_multitable = 357 - RULE_reindex_option_list = 358 - RULE_reindex_option_elem = 359 - RULE_altertblspcstmt = 360 - RULE_renamestmt = 361 - RULE_opt_column = 362 - RULE_opt_set_data = 363 - RULE_alterobjectdependsstmt = 364 - RULE_opt_no = 365 - RULE_alterobjectschemastmt = 366 - RULE_alteroperatorstmt = 367 - RULE_operator_def_list = 368 - RULE_operator_def_elem = 369 - RULE_operator_def_arg = 370 - RULE_altertypestmt = 371 - RULE_alterownerstmt = 372 - RULE_createpublicationstmt = 373 - RULE_opt_publication_for_tables = 374 - RULE_publication_for_tables = 375 - RULE_alterpublicationstmt = 376 - RULE_createsubscriptionstmt = 377 - RULE_publication_name_list = 378 - RULE_publication_name_item = 379 - RULE_altersubscriptionstmt = 380 - RULE_dropsubscriptionstmt = 381 - RULE_rulestmt = 382 - RULE_ruleactionlist = 383 - RULE_ruleactionmulti = 384 - RULE_ruleactionstmt = 385 - RULE_ruleactionstmtOrEmpty = 386 - RULE_event = 387 - RULE_opt_instead = 388 - RULE_notifystmt = 389 - RULE_notify_payload = 390 - RULE_listenstmt = 391 - RULE_unlistenstmt = 392 - RULE_transactionstmt = 393 - RULE_opt_transaction = 394 - RULE_transaction_mode_item = 395 - RULE_transaction_mode_list = 396 - RULE_transaction_mode_list_or_empty = 397 - RULE_opt_transaction_chain = 398 - RULE_viewstmt = 399 - RULE_opt_check_option = 400 - RULE_loadstmt = 401 - RULE_createdbstmt = 402 - RULE_createdb_opt_list = 403 - RULE_createdb_opt_items = 404 - RULE_createdb_opt_item = 405 - RULE_createdb_opt_name = 406 - RULE_opt_equal = 407 - RULE_alterdatabasestmt = 408 - RULE_alterdatabasesetstmt = 409 - RULE_dropdbstmt = 410 - RULE_drop_option_list = 411 - RULE_drop_option = 412 - RULE_altercollationstmt = 413 - RULE_altersystemstmt = 414 - RULE_createdomainstmt = 415 - RULE_alterdomainstmt = 416 - RULE_opt_as = 417 - RULE_altertsdictionarystmt = 418 - RULE_altertsconfigurationstmt = 419 - RULE_any_with = 420 - RULE_createconversionstmt = 421 - RULE_clusterstmt = 422 - RULE_cluster_index_specification = 423 - RULE_vacuumstmt = 424 - RULE_analyzestmt = 425 - RULE_vac_analyze_option_list = 426 - RULE_analyze_keyword = 427 - RULE_vac_analyze_option_elem = 428 - RULE_vac_analyze_option_name = 429 - RULE_vac_analyze_option_arg = 430 - RULE_opt_analyze = 431 - RULE_opt_verbose = 432 - RULE_opt_full = 433 - RULE_opt_freeze = 434 - RULE_opt_name_list = 435 - RULE_vacuum_relation = 436 - RULE_vacuum_relation_list = 437 - RULE_opt_vacuum_relation_list = 438 - RULE_explainstmt = 439 - RULE_explainablestmt = 440 - RULE_explain_option_list = 441 - RULE_explain_option_elem = 442 - RULE_explain_option_name = 443 - RULE_explain_option_arg = 444 - RULE_preparestmt = 445 - RULE_prep_type_clause = 446 - RULE_preparablestmt = 447 - RULE_executestmt = 448 - RULE_execute_param_clause = 449 - RULE_deallocatestmt = 450 - RULE_insertstmt = 451 - RULE_insert_target = 452 - RULE_insert_rest = 453 - RULE_override_kind = 454 - RULE_insert_column_list = 455 - RULE_insert_column_item = 456 - RULE_opt_on_conflict = 457 - RULE_opt_conf_expr = 458 - RULE_returning_clause = 459 - RULE_mergestmt = 460 - RULE_merge_insert_clause = 461 - RULE_merge_update_clause = 462 - RULE_merge_delete_clause = 463 - RULE_deletestmt = 464 - RULE_using_clause = 465 - RULE_lockstmt = 466 - RULE_opt_lock = 467 - RULE_lock_type = 468 - RULE_opt_nowait = 469 - RULE_opt_nowait_or_skip = 470 - RULE_updatestmt = 471 - RULE_set_clause_list = 472 - RULE_set_clause = 473 - RULE_set_target = 474 - RULE_set_target_list = 475 - RULE_declarecursorstmt = 476 - RULE_cursor_name = 477 - RULE_cursor_options = 478 - RULE_opt_hold = 479 - RULE_selectstmt = 480 - RULE_select_with_parens = 481 - RULE_select_no_parens = 482 - RULE_select_clause = 483 - RULE_simple_select_intersect = 484 - RULE_simple_select_pramary = 485 - RULE_with_clause = 486 - RULE_cte_list = 487 - RULE_common_table_expr = 488 - RULE_opt_materialized = 489 - RULE_opt_with_clause = 490 - RULE_into_clause = 491 - RULE_opt_strict = 492 - RULE_opttempTableName = 493 - RULE_opt_table = 494 - RULE_all_or_distinct = 495 - RULE_distinct_clause = 496 - RULE_opt_all_clause = 497 - RULE_opt_sort_clause = 498 - RULE_sort_clause = 499 - RULE_sortby_list = 500 - RULE_sortby = 501 - RULE_select_limit = 502 - RULE_opt_select_limit = 503 - RULE_limit_clause = 504 - RULE_offset_clause = 505 - RULE_select_limit_value = 506 - RULE_select_offset_value = 507 - RULE_select_fetch_first_value = 508 - RULE_i_or_f_const = 509 - RULE_row_or_rows = 510 - RULE_first_or_next = 511 - RULE_group_clause = 512 - RULE_group_by_list = 513 - RULE_group_by_item = 514 - RULE_empty_grouping_set = 515 - RULE_rollup_clause = 516 - RULE_cube_clause = 517 - RULE_grouping_sets_clause = 518 - RULE_having_clause = 519 - RULE_for_locking_clause = 520 - RULE_opt_for_locking_clause = 521 - RULE_for_locking_items = 522 - RULE_for_locking_item = 523 - RULE_for_locking_strength = 524 - RULE_locked_rels_list = 525 - RULE_values_clause = 526 - RULE_from_clause = 527 - RULE_from_list = 528 - RULE_non_ansi_join = 529 - RULE_table_ref = 530 - RULE_alias_clause = 531 - RULE_opt_alias_clause = 532 - RULE_table_alias_clause = 533 - RULE_func_alias_clause = 534 - RULE_join_type = 535 - RULE_join_qual = 536 - RULE_relation_expr = 537 - RULE_relation_expr_list = 538 - RULE_relation_expr_opt_alias = 539 - RULE_tablesample_clause = 540 - RULE_opt_repeatable_clause = 541 - RULE_func_table = 542 - RULE_rowsfrom_item = 543 - RULE_rowsfrom_list = 544 - RULE_opt_col_def_list = 545 - RULE_opt_ordinality = 546 - RULE_where_clause = 547 - RULE_where_or_current_clause = 548 - RULE_opttablefuncelementlist = 549 - RULE_tablefuncelementlist = 550 - RULE_tablefuncelement = 551 - RULE_xmltable = 552 - RULE_xmltable_column_list = 553 - RULE_xmltable_column_el = 554 - RULE_xmltable_column_option_list = 555 - RULE_xmltable_column_option_el = 556 - RULE_xml_namespace_list = 557 - RULE_xml_namespace_el = 558 - RULE_typename = 559 - RULE_opt_array_bounds = 560 - RULE_simpletypename = 561 - RULE_consttypename = 562 - RULE_generictype = 563 - RULE_opt_type_modifiers = 564 - RULE_numeric = 565 - RULE_opt_float = 566 - RULE_bit = 567 - RULE_constbit = 568 - RULE_bitwithlength = 569 - RULE_bitwithoutlength = 570 - RULE_character = 571 - RULE_constcharacter = 572 - RULE_character_c = 573 - RULE_opt_varying = 574 - RULE_constdatetime = 575 - RULE_constinterval = 576 - RULE_opt_timezone = 577 - RULE_opt_interval = 578 - RULE_interval_second = 579 - RULE_opt_escape = 580 - RULE_a_expr = 581 - RULE_a_expr_qual = 582 - RULE_a_expr_lessless = 583 - RULE_a_expr_or = 584 - RULE_a_expr_and = 585 - RULE_a_expr_between = 586 - RULE_a_expr_in = 587 - RULE_a_expr_unary_not = 588 - RULE_a_expr_isnull = 589 - RULE_a_expr_is_not = 590 - RULE_a_expr_compare = 591 - RULE_a_expr_like = 592 - RULE_a_expr_qual_op = 593 - RULE_a_expr_unary_qualop = 594 - RULE_a_expr_add = 595 - RULE_a_expr_mul = 596 - RULE_a_expr_caret = 597 - RULE_a_expr_unary_sign = 598 - RULE_a_expr_at_time_zone = 599 - RULE_a_expr_collate = 600 - RULE_a_expr_typecast = 601 - RULE_b_expr = 602 - RULE_c_expr = 603 - RULE_plsqlvariablename = 604 - RULE_func_application = 605 - RULE_func_expr = 606 - RULE_func_expr_windowless = 607 - RULE_func_expr_common_subexpr = 608 - RULE_xml_root_version = 609 - RULE_opt_xml_root_standalone = 610 - RULE_xml_attributes = 611 - RULE_xml_attribute_list = 612 - RULE_xml_attribute_el = 613 - RULE_document_or_content = 614 - RULE_xml_whitespace_option = 615 - RULE_xmlexists_argument = 616 - RULE_xml_passing_mech = 617 - RULE_within_group_clause = 618 - RULE_filter_clause = 619 - RULE_window_clause = 620 - RULE_window_definition_list = 621 - RULE_window_definition = 622 - RULE_over_clause = 623 - RULE_window_specification = 624 - RULE_opt_existing_window_name = 625 - RULE_opt_partition_clause = 626 - RULE_opt_frame_clause = 627 - RULE_frame_extent = 628 - RULE_frame_bound = 629 - RULE_opt_window_exclusion_clause = 630 - RULE_row = 631 - RULE_explicit_row = 632 - RULE_implicit_row = 633 - RULE_sub_type = 634 - RULE_all_op = 635 - RULE_mathop = 636 - RULE_qual_op = 637 - RULE_qual_all_op = 638 - RULE_subquery_Op = 639 - RULE_expr_list = 640 - RULE_func_arg_list = 641 - RULE_func_arg_expr = 642 - RULE_type_list = 643 - RULE_array_expr = 644 - RULE_array_expr_list = 645 - RULE_extract_list = 646 - RULE_extract_arg = 647 - RULE_unicode_normal_form = 648 - RULE_overlay_list = 649 - RULE_position_list = 650 - RULE_substr_list = 651 - RULE_trim_list = 652 - RULE_in_expr = 653 - RULE_case_expr = 654 - RULE_when_clause_list = 655 - RULE_when_clause = 656 - RULE_case_default = 657 - RULE_case_arg = 658 - RULE_columnref = 659 - RULE_indirection_el = 660 - RULE_opt_slice_bound = 661 - RULE_indirection = 662 - RULE_opt_indirection = 663 - RULE_opt_target_list = 664 - RULE_target_list = 665 - RULE_target_el = 666 - RULE_qualified_name_list = 667 - RULE_qualified_name = 668 - RULE_name_list = 669 - RULE_name = 670 - RULE_attr_name = 671 - RULE_file_name = 672 - RULE_func_name = 673 - RULE_aexprconst = 674 - RULE_xconst = 675 - RULE_bconst = 676 - RULE_fconst = 677 - RULE_iconst = 678 - RULE_sconst = 679 - RULE_anysconst = 680 - RULE_opt_uescape = 681 - RULE_signediconst = 682 - RULE_roleid = 683 - RULE_rolespec = 684 - RULE_role_list = 685 - RULE_colid = 686 - RULE_table_alias = 687 - RULE_type_function_name = 688 - RULE_nonreservedword = 689 - RULE_collabel = 690 - RULE_identifier = 691 - RULE_plsqlidentifier = 692 - RULE_unreserved_keyword = 693 - RULE_col_name_keyword = 694 - RULE_type_func_name_keyword = 695 - RULE_reserved_keyword = 696 - RULE_builtin_function_name = 697 - RULE_pl_function = 698 - RULE_comp_options = 699 - RULE_comp_option = 700 - RULE_sharp = 701 - RULE_option_value = 702 - RULE_opt_semi = 703 - RULE_pl_block = 704 - RULE_decl_sect = 705 - RULE_decl_start = 706 - RULE_decl_stmts = 707 - RULE_label_decl = 708 - RULE_decl_stmt = 709 - RULE_decl_statement = 710 - RULE_opt_scrollable = 711 - RULE_decl_cursor_query = 712 - RULE_decl_cursor_args = 713 - RULE_decl_cursor_arglist = 714 - RULE_decl_cursor_arg = 715 - RULE_decl_is_for = 716 - RULE_decl_aliasitem = 717 - RULE_decl_varname = 718 - RULE_decl_const = 719 - RULE_decl_datatype = 720 - RULE_decl_collate = 721 - RULE_decl_notnull = 722 - RULE_decl_defval = 723 - RULE_decl_defkey = 724 - RULE_assign_operator = 725 - RULE_proc_sect = 726 - RULE_proc_stmt = 727 - RULE_stmt_perform = 728 - RULE_stmt_call = 729 - RULE_opt_expr_list = 730 - RULE_stmt_assign = 731 - RULE_stmt_getdiag = 732 - RULE_getdiag_area_opt = 733 - RULE_getdiag_list = 734 - RULE_getdiag_list_item = 735 - RULE_getdiag_item = 736 - RULE_getdiag_target = 737 - RULE_assign_var = 738 - RULE_stmt_if = 739 - RULE_stmt_elsifs = 740 - RULE_stmt_else = 741 - RULE_stmt_case = 742 - RULE_opt_expr_until_when = 743 - RULE_case_when_list = 744 - RULE_case_when = 745 - RULE_opt_case_else = 746 - RULE_stmt_loop = 747 - RULE_stmt_while = 748 - RULE_stmt_for = 749 - RULE_for_control = 750 - RULE_opt_for_using_expression = 751 - RULE_opt_cursor_parameters = 752 - RULE_opt_reverse = 753 - RULE_opt_by_expression = 754 - RULE_for_variable = 755 - RULE_stmt_foreach_a = 756 - RULE_foreach_slice = 757 - RULE_stmt_exit = 758 - RULE_exit_type = 759 - RULE_stmt_return = 760 - RULE_opt_return_result = 761 - RULE_stmt_raise = 762 - RULE_opt_stmt_raise_level = 763 - RULE_opt_raise_list = 764 - RULE_opt_raise_using = 765 - RULE_opt_raise_using_elem = 766 - RULE_opt_raise_using_elem_list = 767 - RULE_stmt_assert = 768 - RULE_opt_stmt_assert_message = 769 - RULE_loop_body = 770 - RULE_stmt_execsql = 771 - RULE_stmt_dynexecute = 772 - RULE_opt_execute_using = 773 - RULE_opt_execute_using_list = 774 - RULE_opt_execute_into = 775 - RULE_stmt_open = 776 - RULE_opt_open_bound_list_item = 777 - RULE_opt_open_bound_list = 778 - RULE_opt_open_using = 779 - RULE_opt_scroll_option = 780 - RULE_opt_scroll_option_no = 781 - RULE_stmt_fetch = 782 - RULE_into_target = 783 - RULE_opt_cursor_from = 784 - RULE_opt_fetch_direction = 785 - RULE_stmt_move = 786 - RULE_stmt_close = 787 - RULE_stmt_null = 788 - RULE_stmt_commit = 789 - RULE_stmt_rollback = 790 - RULE_plsql_opt_transaction_chain = 791 - RULE_stmt_set = 792 - RULE_cursor_variable = 793 - RULE_exception_sect = 794 - RULE_proc_exceptions = 795 - RULE_proc_exception = 796 - RULE_proc_conditions = 797 - RULE_proc_condition = 798 - RULE_opt_block_label = 799 - RULE_opt_loop_label = 800 - RULE_opt_label = 801 - RULE_opt_exitcond = 802 - RULE_any_identifier = 803 - RULE_plsql_unreserved_keyword = 804 - RULE_sql_expression = 805 - RULE_expr_until_then = 806 - RULE_expr_until_semi = 807 - RULE_expr_until_rightbracket = 808 - RULE_expr_until_loop = 809 - RULE_make_execsql_stmt = 810 - RULE_opt_returning_clause_into = 811 - - ruleNames = [ "root", "plsqlroot", "stmtblock", "stmtmulti", "stmt", - "plsqlconsolecommand", "callstmt", "createrolestmt", - "opt_with", "optrolelist", "alteroptrolelist", "alteroptroleelem", - "createoptroleelem", "createuserstmt", "alterrolestmt", - "opt_in_database", "alterrolesetstmt", "droprolestmt", - "creategroupstmt", "altergroupstmt", "add_drop", "createschemastmt", - "optschemaname", "optschemaeltlist", "schema_stmt", "variablesetstmt", - "set_rest", "generic_set", "set_rest_more", "var_name", - "var_list", "var_value", "iso_level", "opt_boolean_or_string", - "zone_value", "opt_encoding", "nonreservedword_or_sconst", - "variableresetstmt", "reset_rest", "generic_reset", "setresetclause", - "functionsetresetclause", "variableshowstmt", "constraintssetstmt", - "constraints_set_list", "constraints_set_mode", "checkpointstmt", - "discardstmt", "altertablestmt", "alter_table_cmds", - "partition_cmd", "index_partition_cmd", "alter_table_cmd", - "alter_column_default", "opt_drop_behavior", "opt_collate_clause", - "alter_using", "replica_identity", "reloptions", "opt_reloptions", - "reloption_list", "reloption_elem", "alter_identity_column_option_list", - "alter_identity_column_option", "partitionboundspec", - "hash_partbound_elem", "hash_partbound", "altercompositetypestmt", - "alter_type_cmds", "alter_type_cmd", "closeportalstmt", - "copystmt", "copy_from", "opt_program", "copy_file_name", - "copy_options", "copy_opt_list", "copy_opt_item", "opt_binary", - "copy_delimiter", "opt_using", "copy_generic_opt_list", - "copy_generic_opt_elem", "copy_generic_opt_arg", "copy_generic_opt_arg_list", - "copy_generic_opt_arg_list_item", "createstmt", "opttemp", - "opttableelementlist", "opttypedtableelementlist", "tableelementlist", - "typedtableelementlist", "tableelement", "typedtableelement", - "columnDef", "columnOptions", "colquallist", "colconstraint", - "colconstraintelem", "generated_when", "constraintattr", - "tablelikeclause", "tablelikeoptionlist", "tablelikeoption", - "tableconstraint", "constraintelem", "opt_no_inherit", - "opt_column_list", "columnlist", "columnElem", "opt_c_include", - "key_match", "exclusionconstraintlist", "exclusionconstraintelem", - "exclusionwhereclause", "key_actions", "key_update", - "key_delete", "key_action", "optinherit", "optpartitionspec", - "partitionspec", "part_params", "part_elem", "table_access_method_clause", - "optwith", "oncommitoption", "opttablespace", "optconstablespace", - "existingindex", "createstatsstmt", "alterstatsstmt", - "createasstmt", "create_as_target", "opt_with_data", - "creatematviewstmt", "create_mv_target", "optnolog", - "refreshmatviewstmt", "createseqstmt", "alterseqstmt", - "optseqoptlist", "optparenthesizedseqoptlist", "seqoptlist", - "seqoptelem", "opt_by", "numericonly", "numericonly_list", - "createplangstmt", "opt_trusted", "handler_name", "opt_inline_handler", - "validator_clause", "opt_validator", "opt_procedural", - "createtablespacestmt", "opttablespaceowner", "droptablespacestmt", - "createextensionstmt", "create_extension_opt_list", "create_extension_opt_item", - "alterextensionstmt", "alter_extension_opt_list", "alter_extension_opt_item", - "alterextensioncontentsstmt", "createfdwstmt", "fdw_option", - "fdw_options", "opt_fdw_options", "alterfdwstmt", "create_generic_options", - "generic_option_list", "alter_generic_options", "alter_generic_option_list", - "alter_generic_option_elem", "generic_option_elem", "generic_option_name", - "generic_option_arg", "createforeignserverstmt", "opt_type", - "foreign_server_version", "opt_foreign_server_version", - "alterforeignserverstmt", "createforeigntablestmt", "importforeignschemastmt", - "import_qualification_type", "import_qualification", - "createusermappingstmt", "auth_ident", "dropusermappingstmt", - "alterusermappingstmt", "createpolicystmt", "alterpolicystmt", - "rowsecurityoptionalexpr", "rowsecurityoptionalwithcheck", - "rowsecuritydefaulttorole", "rowsecurityoptionaltorole", - "rowsecuritydefaultpermissive", "rowsecuritydefaultforcmd", - "row_security_cmd", "createamstmt", "am_type", "createtrigstmt", - "triggeractiontime", "triggerevents", "triggeroneevent", - "triggerreferencing", "triggertransitions", "triggertransition", - "transitionoldornew", "transitionrowortable", "transitionrelname", - "triggerforspec", "triggerforopteach", "triggerfortype", - "triggerwhen", "function_or_procedure", "triggerfuncargs", - "triggerfuncarg", "optconstrfromtable", "constraintattributespec", - "constraintattributeElem", "createeventtrigstmt", "event_trigger_when_list", - "event_trigger_when_item", "event_trigger_value_list", - "altereventtrigstmt", "enable_trigger", "createassertionstmt", - "definestmt", "definition", "def_list", "def_elem", "def_arg", - "old_aggr_definition", "old_aggr_list", "old_aggr_elem", - "opt_enum_val_list", "enum_val_list", "alterenumstmt", - "opt_if_not_exists", "createopclassstmt", "opclass_item_list", - "opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", - "opt_recheck", "createopfamilystmt", "alteropfamilystmt", - "opclass_drop_list", "opclass_drop", "dropopclassstmt", - "dropopfamilystmt", "dropownedstmt", "reassignownedstmt", - "dropstmt", "object_type_any_name", "object_type_name", - "drop_type_name", "object_type_name_on_any_name", "any_name_list", - "any_name", "attrs", "type_name_list", "truncatestmt", - "opt_restart_seqs", "commentstmt", "comment_text", "seclabelstmt", - "opt_provider", "security_label", "fetchstmt", "fetch_args", - "from_in", "opt_from_in", "grantstmt", "revokestmt", - "privileges", "privilege_list", "privilege", "privilege_target", - "grantee_list", "grantee", "opt_grant_grant_option", - "grantrolestmt", "revokerolestmt", "opt_grant_admin_option", - "opt_granted_by", "alterdefaultprivilegesstmt", "defacloptionlist", - "defacloption", "defaclaction", "defacl_privilege_target", - "indexstmt", "opt_unique", "opt_concurrently", "opt_index_name", - "access_method_clause", "index_params", "index_elem_options", - "index_elem", "opt_include", "index_including_params", - "opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", - "createfunctionstmt", "opt_or_replace", "func_args", - "func_args_list", "function_with_argtypes_list", "function_with_argtypes", - "func_args_with_defaults", "func_args_with_defaults_list", - "func_arg", "arg_class", "param_name", "func_return", - "func_type", "func_arg_with_default", "aggr_arg", "aggr_args", - "aggr_args_list", "aggregate_with_argtypes", "aggregate_with_argtypes_list", - "createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", - "func_as", "transform_type_list", "opt_definition", "table_func_column", - "table_func_column_list", "alterfunctionstmt", "alterfunc_opt_list", - "opt_restrict", "removefuncstmt", "removeaggrstmt", "removeoperstmt", - "oper_argtypes", "any_operator", "operator_with_argtypes_list", - "operator_with_argtypes", "dostmt", "dostmt_opt_list", - "dostmt_opt_item", "createcaststmt", "cast_context", - "dropcaststmt", "opt_if_exists", "createtransformstmt", - "transform_element_list", "droptransformstmt", "reindexstmt", - "reindex_target_type", "reindex_target_multitable", "reindex_option_list", - "reindex_option_elem", "altertblspcstmt", "renamestmt", - "opt_column", "opt_set_data", "alterobjectdependsstmt", - "opt_no", "alterobjectschemastmt", "alteroperatorstmt", - "operator_def_list", "operator_def_elem", "operator_def_arg", - "altertypestmt", "alterownerstmt", "createpublicationstmt", - "opt_publication_for_tables", "publication_for_tables", - "alterpublicationstmt", "createsubscriptionstmt", "publication_name_list", - "publication_name_item", "altersubscriptionstmt", "dropsubscriptionstmt", - "rulestmt", "ruleactionlist", "ruleactionmulti", "ruleactionstmt", - "ruleactionstmtOrEmpty", "event", "opt_instead", "notifystmt", - "notify_payload", "listenstmt", "unlistenstmt", "transactionstmt", - "opt_transaction", "transaction_mode_item", "transaction_mode_list", - "transaction_mode_list_or_empty", "opt_transaction_chain", - "viewstmt", "opt_check_option", "loadstmt", "createdbstmt", - "createdb_opt_list", "createdb_opt_items", "createdb_opt_item", - "createdb_opt_name", "opt_equal", "alterdatabasestmt", - "alterdatabasesetstmt", "dropdbstmt", "drop_option_list", - "drop_option", "altercollationstmt", "altersystemstmt", - "createdomainstmt", "alterdomainstmt", "opt_as", "altertsdictionarystmt", - "altertsconfigurationstmt", "any_with", "createconversionstmt", - "clusterstmt", "cluster_index_specification", "vacuumstmt", - "analyzestmt", "vac_analyze_option_list", "analyze_keyword", - "vac_analyze_option_elem", "vac_analyze_option_name", - "vac_analyze_option_arg", "opt_analyze", "opt_verbose", - "opt_full", "opt_freeze", "opt_name_list", "vacuum_relation", - "vacuum_relation_list", "opt_vacuum_relation_list", "explainstmt", - "explainablestmt", "explain_option_list", "explain_option_elem", - "explain_option_name", "explain_option_arg", "preparestmt", - "prep_type_clause", "preparablestmt", "executestmt", - "execute_param_clause", "deallocatestmt", "insertstmt", - "insert_target", "insert_rest", "override_kind", "insert_column_list", - "insert_column_item", "opt_on_conflict", "opt_conf_expr", - "returning_clause", "mergestmt", "merge_insert_clause", - "merge_update_clause", "merge_delete_clause", "deletestmt", - "using_clause", "lockstmt", "opt_lock", "lock_type", - "opt_nowait", "opt_nowait_or_skip", "updatestmt", "set_clause_list", - "set_clause", "set_target", "set_target_list", "declarecursorstmt", - "cursor_name", "cursor_options", "opt_hold", "selectstmt", - "select_with_parens", "select_no_parens", "select_clause", - "simple_select_intersect", "simple_select_pramary", "with_clause", - "cte_list", "common_table_expr", "opt_materialized", - "opt_with_clause", "into_clause", "opt_strict", "opttempTableName", - "opt_table", "all_or_distinct", "distinct_clause", "opt_all_clause", - "opt_sort_clause", "sort_clause", "sortby_list", "sortby", - "select_limit", "opt_select_limit", "limit_clause", "offset_clause", - "select_limit_value", "select_offset_value", "select_fetch_first_value", - "i_or_f_const", "row_or_rows", "first_or_next", "group_clause", - "group_by_list", "group_by_item", "empty_grouping_set", - "rollup_clause", "cube_clause", "grouping_sets_clause", - "having_clause", "for_locking_clause", "opt_for_locking_clause", - "for_locking_items", "for_locking_item", "for_locking_strength", - "locked_rels_list", "values_clause", "from_clause", "from_list", - "non_ansi_join", "table_ref", "alias_clause", "opt_alias_clause", - "table_alias_clause", "func_alias_clause", "join_type", - "join_qual", "relation_expr", "relation_expr_list", "relation_expr_opt_alias", - "tablesample_clause", "opt_repeatable_clause", "func_table", - "rowsfrom_item", "rowsfrom_list", "opt_col_def_list", - "opt_ordinality", "where_clause", "where_or_current_clause", - "opttablefuncelementlist", "tablefuncelementlist", "tablefuncelement", - "xmltable", "xmltable_column_list", "xmltable_column_el", - "xmltable_column_option_list", "xmltable_column_option_el", - "xml_namespace_list", "xml_namespace_el", "typename", - "opt_array_bounds", "simpletypename", "consttypename", - "generictype", "opt_type_modifiers", "numeric", "opt_float", - "bit", "constbit", "bitwithlength", "bitwithoutlength", - "character", "constcharacter", "character_c", "opt_varying", - "constdatetime", "constinterval", "opt_timezone", "opt_interval", - "interval_second", "opt_escape", "a_expr", "a_expr_qual", - "a_expr_lessless", "a_expr_or", "a_expr_and", "a_expr_between", - "a_expr_in", "a_expr_unary_not", "a_expr_isnull", "a_expr_is_not", - "a_expr_compare", "a_expr_like", "a_expr_qual_op", "a_expr_unary_qualop", - "a_expr_add", "a_expr_mul", "a_expr_caret", "a_expr_unary_sign", - "a_expr_at_time_zone", "a_expr_collate", "a_expr_typecast", - "b_expr", "c_expr", "plsqlvariablename", "func_application", - "func_expr", "func_expr_windowless", "func_expr_common_subexpr", - "xml_root_version", "opt_xml_root_standalone", "xml_attributes", - "xml_attribute_list", "xml_attribute_el", "document_or_content", - "xml_whitespace_option", "xmlexists_argument", "xml_passing_mech", - "within_group_clause", "filter_clause", "window_clause", - "window_definition_list", "window_definition", "over_clause", - "window_specification", "opt_existing_window_name", "opt_partition_clause", - "opt_frame_clause", "frame_extent", "frame_bound", "opt_window_exclusion_clause", - "row", "explicit_row", "implicit_row", "sub_type", "all_op", - "mathop", "qual_op", "qual_all_op", "subquery_Op", "expr_list", - "func_arg_list", "func_arg_expr", "type_list", "array_expr", - "array_expr_list", "extract_list", "extract_arg", "unicode_normal_form", - "overlay_list", "position_list", "substr_list", "trim_list", - "in_expr", "case_expr", "when_clause_list", "when_clause", - "case_default", "case_arg", "columnref", "indirection_el", - "opt_slice_bound", "indirection", "opt_indirection", - "opt_target_list", "target_list", "target_el", "qualified_name_list", - "qualified_name", "name_list", "name", "attr_name", "file_name", - "func_name", "aexprconst", "xconst", "bconst", "fconst", - "iconst", "sconst", "anysconst", "opt_uescape", "signediconst", - "roleid", "rolespec", "role_list", "colid", "table_alias", - "type_function_name", "nonreservedword", "collabel", - "identifier", "plsqlidentifier", "unreserved_keyword", - "col_name_keyword", "type_func_name_keyword", "reserved_keyword", - "builtin_function_name", "pl_function", "comp_options", - "comp_option", "sharp", "option_value", "opt_semi", "pl_block", - "decl_sect", "decl_start", "decl_stmts", "label_decl", - "decl_stmt", "decl_statement", "opt_scrollable", "decl_cursor_query", - "decl_cursor_args", "decl_cursor_arglist", "decl_cursor_arg", - "decl_is_for", "decl_aliasitem", "decl_varname", "decl_const", - "decl_datatype", "decl_collate", "decl_notnull", "decl_defval", - "decl_defkey", "assign_operator", "proc_sect", "proc_stmt", - "stmt_perform", "stmt_call", "opt_expr_list", "stmt_assign", - "stmt_getdiag", "getdiag_area_opt", "getdiag_list", "getdiag_list_item", - "getdiag_item", "getdiag_target", "assign_var", "stmt_if", - "stmt_elsifs", "stmt_else", "stmt_case", "opt_expr_until_when", - "case_when_list", "case_when", "opt_case_else", "stmt_loop", - "stmt_while", "stmt_for", "for_control", "opt_for_using_expression", - "opt_cursor_parameters", "opt_reverse", "opt_by_expression", - "for_variable", "stmt_foreach_a", "foreach_slice", "stmt_exit", - "exit_type", "stmt_return", "opt_return_result", "stmt_raise", - "opt_stmt_raise_level", "opt_raise_list", "opt_raise_using", - "opt_raise_using_elem", "opt_raise_using_elem_list", - "stmt_assert", "opt_stmt_assert_message", "loop_body", - "stmt_execsql", "stmt_dynexecute", "opt_execute_using", - "opt_execute_using_list", "opt_execute_into", "stmt_open", - "opt_open_bound_list_item", "opt_open_bound_list", "opt_open_using", - "opt_scroll_option", "opt_scroll_option_no", "stmt_fetch", - "into_target", "opt_cursor_from", "opt_fetch_direction", - "stmt_move", "stmt_close", "stmt_null", "stmt_commit", - "stmt_rollback", "plsql_opt_transaction_chain", "stmt_set", - "cursor_variable", "exception_sect", "proc_exceptions", - "proc_exception", "proc_conditions", "proc_condition", - "opt_block_label", "opt_loop_label", "opt_label", "opt_exitcond", - "any_identifier", "plsql_unreserved_keyword", "sql_expression", - "expr_until_then", "expr_until_semi", "expr_until_rightbracket", - "expr_until_loop", "make_execsql_stmt", "opt_returning_clause_into" ] - - EOF = Token.EOF - Dollar=1 - OPEN_PAREN=2 - CLOSE_PAREN=3 - OPEN_BRACKET=4 - CLOSE_BRACKET=5 - COMMA=6 - SEMI=7 - COLON=8 - STAR=9 - EQUAL=10 - DOT=11 - PLUS=12 - MINUS=13 - SLASH=14 - CARET=15 - LT=16 - GT=17 - LESS_LESS=18 - GREATER_GREATER=19 - COLON_EQUALS=20 - LESS_EQUALS=21 - EQUALS_GREATER=22 - GREATER_EQUALS=23 - DOT_DOT=24 - NOT_EQUALS=25 - TYPECAST=26 - PERCENT=27 - PARAM=28 - Operator=29 - ALL=30 - ANALYSE=31 - ANALYZE=32 - AND=33 - ANY=34 - ARRAY=35 - AS=36 - ASC=37 - ASYMMETRIC=38 - BOTH=39 - CASE=40 - CAST=41 - CHECK=42 - COLLATE=43 - COLUMN=44 - CONSTRAINT=45 - CREATE=46 - CURRENT_CATALOG=47 - CURRENT_DATE=48 - CURRENT_ROLE=49 - CURRENT_TIME=50 - CURRENT_TIMESTAMP=51 - CURRENT_USER=52 - DEFAULT=53 - DEFERRABLE=54 - DESC=55 - DISTINCT=56 - DO=57 - ELSE=58 - EXCEPT=59 - FALSE_P=60 - FETCH=61 - FOR=62 - FOREIGN=63 - FROM=64 - GRANT=65 - GROUP_P=66 - HAVING=67 - IN_P=68 - INITIALLY=69 - INTERSECT=70 - INTO=71 - LATERAL_P=72 - LEADING=73 - LIMIT=74 - LOCALTIME=75 - LOCALTIMESTAMP=76 - NOT=77 - NULL_P=78 - OFFSET=79 - ON=80 - ONLY=81 - OR=82 - ORDER=83 - PLACING=84 - PRIMARY=85 - REFERENCES=86 - RETURNING=87 - SELECT=88 - SESSION_USER=89 - SOME=90 - SYMMETRIC=91 - TABLE=92 - THEN=93 - TO=94 - TRAILING=95 - TRUE_P=96 - UNION=97 - UNIQUE=98 - USER=99 - USING=100 - VARIADIC=101 - WHEN=102 - WHERE=103 - WINDOW=104 - WITH=105 - AUTHORIZATION=106 - BINARY=107 - COLLATION=108 - CONCURRENTLY=109 - CROSS=110 - CURRENT_SCHEMA=111 - FREEZE=112 - FULL=113 - ILIKE=114 - INNER_P=115 - IS=116 - ISNULL=117 - JOIN=118 - LEFT=119 - LIKE=120 - NATURAL=121 - NOTNULL=122 - OUTER_P=123 - OVER=124 - OVERLAPS=125 - RIGHT=126 - SIMILAR=127 - VERBOSE=128 - ABORT_P=129 - ABSOLUTE_P=130 - ACCESS=131 - ACTION=132 - ADD_P=133 - ADMIN=134 - AFTER=135 - AGGREGATE=136 - ALSO=137 - ALTER=138 - ALWAYS=139 - ASSERTION=140 - ASSIGNMENT=141 - AT=142 - ATTRIBUTE=143 - BACKWARD=144 - BEFORE=145 - BEGIN_P=146 - BY=147 - CACHE=148 - CALLED=149 - CASCADE=150 - CASCADED=151 - CATALOG=152 - CHAIN=153 - CHARACTERISTICS=154 - CHECKPOINT=155 - CLASS=156 - CLOSE=157 - CLUSTER=158 - COMMENT=159 - COMMENTS=160 - COMMIT=161 - COMMITTED=162 - CONFIGURATION=163 - CONNECTION=164 - CONSTRAINTS=165 - CONTENT_P=166 - CONTINUE_P=167 - CONVERSION_P=168 - COPY=169 - COST=170 - CSV=171 - CURSOR=172 - CYCLE=173 - DATA_P=174 - DATABASE=175 - DAY_P=176 - DEALLOCATE=177 - DECLARE=178 - DEFAULTS=179 - DEFERRED=180 - DEFINER=181 - DELETE_P=182 - DELIMITER=183 - DELIMITERS=184 - DICTIONARY=185 - DISABLE_P=186 - DISCARD=187 - DOCUMENT_P=188 - DOMAIN_P=189 - DOUBLE_P=190 - DROP=191 - EACH=192 - ENABLE_P=193 - ENCODING=194 - ENCRYPTED=195 - ENUM_P=196 - ESCAPE=197 - EVENT=198 - EXCLUDE=199 - EXCLUDING=200 - EXCLUSIVE=201 - EXECUTE=202 - EXPLAIN=203 - EXTENSION=204 - EXTERNAL=205 - FAMILY=206 - FIRST_P=207 - FOLLOWING=208 - FORCE=209 - FORWARD=210 - FUNCTION=211 - FUNCTIONS=212 - GLOBAL=213 - GRANTED=214 - HANDLER=215 - HEADER_P=216 - HOLD=217 - HOUR_P=218 - IDENTITY_P=219 - IF_P=220 - IMMEDIATE=221 - IMMUTABLE=222 - IMPLICIT_P=223 - INCLUDING=224 - INCREMENT=225 - INDEX=226 - INDEXES=227 - INHERIT=228 - INHERITS=229 - INLINE_P=230 - INSENSITIVE=231 - INSERT=232 - INSTEAD=233 - INVOKER=234 - ISOLATION=235 - KEY=236 - LABEL=237 - LANGUAGE=238 - LARGE_P=239 - LAST_P=240 - LEAKPROOF=241 - LEVEL=242 - LISTEN=243 - LOAD=244 - LOCAL=245 - LOCATION=246 - LOCK_P=247 - MAPPING=248 - MATCH=249 - MATCHED=250 - MATERIALIZED=251 - MAXVALUE=252 - MERGE=253 - MINUTE_P=254 - MINVALUE=255 - MODE=256 - MONTH_P=257 - MOVE=258 - NAME_P=259 - NAMES=260 - NEXT=261 - NO=262 - NOTHING=263 - NOTIFY=264 - NOWAIT=265 - NULLS_P=266 - OBJECT_P=267 - OF=268 - OFF=269 - OIDS=270 - OPERATOR=271 - OPTION=272 - OPTIONS=273 - OWNED=274 - OWNER=275 - PARSER=276 - PARTIAL=277 - PARTITION=278 - PASSING=279 - PASSWORD=280 - PLANS=281 - PRECEDING=282 - PREPARE=283 - PREPARED=284 - PRESERVE=285 - PRIOR=286 - PRIVILEGES=287 - PROCEDURAL=288 - PROCEDURE=289 - PROGRAM=290 - QUOTE=291 - RANGE=292 - READ=293 - REASSIGN=294 - RECHECK=295 - RECURSIVE=296 - REF=297 - REFRESH=298 - REINDEX=299 - RELATIVE_P=300 - RELEASE=301 - RENAME=302 - REPEATABLE=303 - REPLACE=304 - REPLICA=305 - RESET=306 - RESTART=307 - RESTRICT=308 - RETURNS=309 - REVOKE=310 - ROLE=311 - ROLLBACK=312 - ROWS=313 - RULE=314 - SAVEPOINT=315 - SCHEMA=316 - SCROLL=317 - SEARCH=318 - SECOND_P=319 - SECURITY=320 - SEQUENCE=321 - SEQUENCES=322 - SERIALIZABLE=323 - SERVER=324 - SESSION=325 - SET=326 - SHARE=327 - SHOW=328 - SIMPLE=329 - SNAPSHOT=330 - STABLE=331 - STANDALONE_P=332 - START=333 - STATEMENT=334 - STATISTICS=335 - STDIN=336 - STDOUT=337 - STORAGE=338 - STRICT_P=339 - STRIP_P=340 - SYSID=341 - SYSTEM_P=342 - TABLES=343 - TABLESPACE=344 - TEMP=345 - TEMPLATE=346 - TEMPORARY=347 - TEXT_P=348 - TRANSACTION=349 - TRIGGER=350 - TRUNCATE=351 - TRUSTED=352 - TYPE_P=353 - TYPES_P=354 - UNBOUNDED=355 - UNCOMMITTED=356 - UNENCRYPTED=357 - UNKNOWN=358 - UNLISTEN=359 - UNLOGGED=360 - UNTIL=361 - UPDATE=362 - VACUUM=363 - VALID=364 - VALIDATE=365 - VALIDATOR=366 - VARYING=367 - VERSION_P=368 - VIEW=369 - VOLATILE=370 - WHITESPACE_P=371 - WITHOUT=372 - WORK=373 - WRAPPER=374 - WRITE=375 - XML_P=376 - YEAR_P=377 - YES_P=378 - ZONE=379 - BETWEEN=380 - BIGINT=381 - BIT=382 - BOOLEAN_P=383 - CHAR_P=384 - CHARACTER=385 - COALESCE=386 - DEC=387 - DECIMAL_P=388 - EXISTS=389 - EXTRACT=390 - FLOAT_P=391 - GREATEST=392 - INOUT=393 - INT_P=394 - INTEGER=395 - INTERVAL=396 - LEAST=397 - NATIONAL=398 - NCHAR=399 - NONE=400 - NULLIF=401 - NUMERIC=402 - OVERLAY=403 - POSITION=404 - PRECISION=405 - REAL=406 - ROW=407 - SETOF=408 - SMALLINT=409 - SUBSTRING=410 - TIME=411 - TIMESTAMP=412 - TREAT=413 - TRIM=414 - VALUES=415 - VARCHAR=416 - XMLATTRIBUTES=417 - XMLCOMMENT=418 - XMLAGG=419 - XML_IS_WELL_FORMED=420 - XML_IS_WELL_FORMED_DOCUMENT=421 - XML_IS_WELL_FORMED_CONTENT=422 - XPATH=423 - XPATH_EXISTS=424 - XMLCONCAT=425 - XMLELEMENT=426 - XMLEXISTS=427 - XMLFOREST=428 - XMLPARSE=429 - XMLPI=430 - XMLROOT=431 - XMLSERIALIZE=432 - CALL=433 - CURRENT_P=434 - ATTACH=435 - DETACH=436 - EXPRESSION=437 - GENERATED=438 - LOGGED=439 - STORED=440 - INCLUDE=441 - ROUTINE=442 - TRANSFORM=443 - IMPORT_P=444 - POLICY=445 - METHOD=446 - REFERENCING=447 - NEW=448 - OLD=449 - VALUE_P=450 - SUBSCRIPTION=451 - PUBLICATION=452 - OUT_P=453 - END_P=454 - ROUTINES=455 - SCHEMAS=456 - PROCEDURES=457 - INPUT_P=458 - SUPPORT=459 - PARALLEL=460 - SQL_P=461 - DEPENDS=462 - OVERRIDING=463 - CONFLICT=464 - SKIP_P=465 - LOCKED=466 - TIES=467 - ROLLUP=468 - CUBE=469 - GROUPING=470 - SETS=471 - TABLESAMPLE=472 - ORDINALITY=473 - XMLTABLE=474 - COLUMNS=475 - XMLNAMESPACES=476 - ROWTYPE=477 - NORMALIZED=478 - WITHIN=479 - FILTER=480 - GROUPS=481 - OTHERS=482 - NFC=483 - NFD=484 - NFKC=485 - NFKD=486 - UESCAPE=487 - VIEWS=488 - NORMALIZE=489 - DUMP=490 - PRINT_STRICT_PARAMS=491 - VARIABLE_CONFLICT=492 - ERROR=493 - USE_VARIABLE=494 - USE_COLUMN=495 - ALIAS=496 - CONSTANT=497 - PERFORM=498 - GET=499 - DIAGNOSTICS=500 - STACKED=501 - ELSIF=502 - WHILE=503 - REVERSE=504 - FOREACH=505 - SLICE=506 - EXIT=507 - RETURN=508 - QUERY=509 - RAISE=510 - SQLSTATE=511 - DEBUG=512 - LOG=513 - INFO=514 - NOTICE=515 - WARNING=516 - EXCEPTION=517 - ASSERT=518 - LOOP=519 - OPEN=520 - ABS=521 - CBRT=522 - CEIL=523 - CEILING=524 - DEGREES=525 - DIV=526 - EXP=527 - FACTORIAL=528 - FLOOR=529 - GCD=530 - LCM=531 - LN=532 - LOG10=533 - MIN_SCALE=534 - MOD=535 - PI=536 - POWER=537 - RADIANS=538 - ROUND=539 - SCALE=540 - SIGN=541 - SQRT=542 - TRIM_SCALE=543 - TRUNC=544 - WIDTH_BUCKET=545 - RANDOM=546 - SETSEED=547 - ACOS=548 - ACOSD=549 - ASIN=550 - ASIND=551 - ATAN=552 - ATAND=553 - ATAN2=554 - ATAN2D=555 - COS=556 - COSD=557 - COT=558 - COTD=559 - SIN=560 - SIND=561 - TAN=562 - TAND=563 - SINH=564 - COSH=565 - TANH=566 - ASINH=567 - ACOSH=568 - ATANH=569 - BIT_LENGTH=570 - CHAR_LENGTH=571 - CHARACTER_LENGTH=572 - LOWER=573 - OCTET_LENGTH=574 - UPPER=575 - ASCII=576 - BTRIM=577 - CHR=578 - CONCAT=579 - CONCAT_WS=580 - FORMAT=581 - INITCAP=582 - LENGTH=583 - LPAD=584 - LTRIM=585 - MD5=586 - PARSE_IDENT=587 - PG_CLIENT_ENCODING=588 - QUOTE_IDENT=589 - QUOTE_LITERAL=590 - QUOTE_NULLABLE=591 - REGEXP_COUNT=592 - REGEXP_INSTR=593 - REGEXP_LIKE=594 - REGEXP_MATCH=595 - REGEXP_MATCHES=596 - REGEXP_REPLACE=597 - REGEXP_SPLIT_TO_ARRAY=598 - REGEXP_SPLIT_TO_TABLE=599 - REGEXP_SUBSTR=600 - REPEAT=601 - RPAD=602 - RTRIM=603 - SPLIT_PART=604 - STARTS_WITH=605 - STRING_TO_ARRAY=606 - STRING_TO_TABLE=607 - STRPOS=608 - SUBSTR=609 - TO_ASCII=610 - TO_HEX=611 - TRANSLATE=612 - UNISTR=613 - AGE=614 - CLOCK_TIMESTAMP=615 - DATE_BIN=616 - DATE_PART=617 - DATE_TRUNC=618 - ISFINITE=619 - JUSTIFY_DAYS=620 - JUSTIFY_HOURS=621 - JUSTIFY_INTERVAL=622 - MAKE_DATE=623 - MAKE_INTERVAL=624 - MAKE_TIME=625 - MAKE_TIMESTAMP=626 - MAKE_TIMESTAMPTZ=627 - NOW=628 - STATEMENT_TIMESTAMP=629 - TIMEOFDAY=630 - TRANSACTION_TIMESTAMP=631 - TO_TIMESTAMP=632 - TO_CHAR=633 - TO_DATE=634 - TO_NUMBER=635 - Identifier=636 - QuotedIdentifier=637 - UnterminatedQuotedIdentifier=638 - InvalidQuotedIdentifier=639 - InvalidUnterminatedQuotedIdentifier=640 - UnicodeQuotedIdentifier=641 - UnterminatedUnicodeQuotedIdentifier=642 - InvalidUnicodeQuotedIdentifier=643 - InvalidUnterminatedUnicodeQuotedIdentifier=644 - StringConstant=645 - UnterminatedStringConstant=646 - UnicodeEscapeStringConstant=647 - UnterminatedUnicodeEscapeStringConstant=648 - BeginDollarStringConstant=649 - BinaryStringConstant=650 - UnterminatedBinaryStringConstant=651 - InvalidBinaryStringConstant=652 - InvalidUnterminatedBinaryStringConstant=653 - HexadecimalStringConstant=654 - UnterminatedHexadecimalStringConstant=655 - InvalidHexadecimalStringConstant=656 - InvalidUnterminatedHexadecimalStringConstant=657 - Integral=658 - NumericFail=659 - Numeric=660 - PLSQLVARIABLENAME=661 - PLSQLIDENTIFIER=662 - Whitespace=663 - Newline=664 - LineComment=665 - BlockComment=666 - UnterminatedBlockComment=667 - MetaCommand=668 - EndMetaCommand=669 - ErrorCharacter=670 - EscapeStringConstant=671 - UnterminatedEscapeStringConstant=672 - InvalidEscapeStringConstant=673 - InvalidUnterminatedEscapeStringConstant=674 - AfterEscapeStringConstantMode_NotContinued=675 - AfterEscapeStringConstantWithNewlineMode_NotContinued=676 - DollarText=677 - EndDollarStringConstant=678 - AfterEscapeStringConstantWithNewlineMode_Continued=679 - - def __init__(self, input:TokenStream, output:TextIO = sys.stdout): - super().__init__(input, output) - self.checkVersion("4.13.2") - self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) - self._predicates = None - - - - - - - class RootContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def stmtblock(self): - return self.getTypedRuleContext(PostgreSQLParser.StmtblockContext,0) - - - def EOF(self): - return self.getToken(PostgreSQLParser.EOF, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_root - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRoot" ): - listener.enterRoot(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRoot" ): - listener.exitRoot(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRoot" ): - return visitor.visitRoot(self) - else: - return visitor.visitChildren(self) - - - - - def root(self): - - localctx = PostgreSQLParser.RootContext(self, self._ctx, self.state) - self.enterRule(localctx, 0, self.RULE_root) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1624 - self.stmtblock() - self.state = 1625 - self.match(PostgreSQLParser.EOF) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PlsqlrootContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def pl_function(self): - return self.getTypedRuleContext(PostgreSQLParser.Pl_functionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsqlroot - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsqlroot" ): - listener.enterPlsqlroot(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsqlroot" ): - listener.exitPlsqlroot(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsqlroot" ): - return visitor.visitPlsqlroot(self) - else: - return visitor.visitChildren(self) - - - - - def plsqlroot(self): - - localctx = PostgreSQLParser.PlsqlrootContext(self, self._ctx, self.state) - self.enterRule(localctx, 2, self.RULE_plsqlroot) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1627 - self.pl_function() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StmtblockContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def stmtmulti(self): - return self.getTypedRuleContext(PostgreSQLParser.StmtmultiContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmtblock - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmtblock" ): - listener.enterStmtblock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmtblock" ): - listener.exitStmtblock(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmtblock" ): - return visitor.visitStmtblock(self) - else: - return visitor.visitChildren(self) - - - - - def stmtblock(self): - - localctx = PostgreSQLParser.StmtblockContext(self, self._ctx, self.state) - self.enterRule(localctx, 4, self.RULE_stmtblock) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1629 - self.stmtmulti() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StmtmultiContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def stmt(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.StmtContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.StmtContext,i) - - - def SEMI(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.SEMI) - else: - return self.getToken(PostgreSQLParser.SEMI, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmtmulti - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmtmulti" ): - listener.enterStmtmulti(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmtmulti" ): - listener.exitStmtmulti(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmtmulti" ): - return visitor.visitStmtmulti(self) - else: - return visitor.visitChildren(self) - - - - - def stmtmulti(self): - - localctx = PostgreSQLParser.StmtmultiContext(self, self._ctx, self.state) - self.enterRule(localctx, 6, self.RULE_stmtmulti) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1637 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2450028572476178436) != 0) or ((((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 1099654234113) != 0) or ((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 4909769124516856321) != 0) or ((((_la - 202)) & ~0x3f) == 0 and ((1 << (_la - 202)) & 4686037194794598403) != 0) or ((((_la - 283)) & ~0x3f) == 0 and ((1 << (_la - 283)) & 1170022785714177) != 0) or ((((_la - 351)) & ~0x3f) == 0 and ((1 << (_la - 351)) & 6401) != 0) or ((((_la - 415)) & ~0x3f) == 0 and ((1 << (_la - 415)) & 550292946945) != 0) or _la==668: - self.state = 1631 - self.stmt() - self.state = 1633 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==7: - self.state = 1632 - self.match(PostgreSQLParser.SEMI) - - - self.state = 1639 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class StmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def altereventtrigstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltereventtrigstmtContext,0) - - - def altercollationstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltercollationstmtContext,0) - - - def alterdatabasestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterdatabasestmtContext,0) - - - def alterdatabasesetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterdatabasesetstmtContext,0) - - - def alterdefaultprivilegesstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterdefaultprivilegesstmtContext,0) - - - def alterdomainstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterdomainstmtContext,0) - - - def alterenumstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterenumstmtContext,0) - - - def alterextensionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterextensionstmtContext,0) - - - def alterextensioncontentsstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterextensioncontentsstmtContext,0) - - - def alterfdwstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterfdwstmtContext,0) - - - def alterforeignserverstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterforeignserverstmtContext,0) - - - def alterfunctionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterfunctionstmtContext,0) - - - def altergroupstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltergroupstmtContext,0) - - - def alterobjectdependsstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterobjectdependsstmtContext,0) - - - def alterobjectschemastmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterobjectschemastmtContext,0) - - - def alterownerstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterownerstmtContext,0) - - - def alteroperatorstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlteroperatorstmtContext,0) - - - def altertypestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltertypestmtContext,0) - - - def alterpolicystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterpolicystmtContext,0) - - - def alterseqstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterseqstmtContext,0) - - - def altersystemstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltersystemstmtContext,0) - - - def altertablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltertablestmtContext,0) - - - def altertblspcstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltertblspcstmtContext,0) - - - def altercompositetypestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltercompositetypestmtContext,0) - - - def alterpublicationstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterpublicationstmtContext,0) - - - def alterrolesetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterrolesetstmtContext,0) - - - def alterrolestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterrolestmtContext,0) - - - def altersubscriptionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltersubscriptionstmtContext,0) - - - def alterstatsstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterstatsstmtContext,0) - - - def altertsconfigurationstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltertsconfigurationstmtContext,0) - - - def altertsdictionarystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AltertsdictionarystmtContext,0) - - - def alterusermappingstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlterusermappingstmtContext,0) - - - def analyzestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AnalyzestmtContext,0) - - - def callstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CallstmtContext,0) - - - def checkpointstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CheckpointstmtContext,0) - - - def closeportalstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CloseportalstmtContext,0) - - - def clusterstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ClusterstmtContext,0) - - - def commentstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CommentstmtContext,0) - - - def constraintssetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintssetstmtContext,0) - - - def copystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CopystmtContext,0) - - - def createamstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateamstmtContext,0) - - - def createasstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateasstmtContext,0) - - - def createassertionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateassertionstmtContext,0) - - - def createcaststmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatecaststmtContext,0) - - - def createconversionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateconversionstmtContext,0) - - - def createdomainstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatedomainstmtContext,0) - - - def createextensionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateextensionstmtContext,0) - - - def createfdwstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatefdwstmtContext,0) - - - def createforeignserverstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateforeignserverstmtContext,0) - - - def createforeigntablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateforeigntablestmtContext,0) - - - def createfunctionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatefunctionstmtContext,0) - - - def creategroupstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreategroupstmtContext,0) - - - def creatematviewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatematviewstmtContext,0) - - - def createopclassstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateopclassstmtContext,0) - - - def createopfamilystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateopfamilystmtContext,0) - - - def createpublicationstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatepublicationstmtContext,0) - - - def alteropfamilystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.AlteropfamilystmtContext,0) - - - def createpolicystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatepolicystmtContext,0) - - - def createplangstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateplangstmtContext,0) - - - def createschemastmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateschemastmtContext,0) - - - def createseqstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateseqstmtContext,0) - - - def createstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatestmtContext,0) - - - def createsubscriptionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatesubscriptionstmtContext,0) - - - def createstatsstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatestatsstmtContext,0) - - - def createtablespacestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatetablespacestmtContext,0) - - - def createtransformstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatetransformstmtContext,0) - - - def createtrigstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatetrigstmtContext,0) - - - def createeventtrigstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateeventtrigstmtContext,0) - - - def createrolestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreaterolestmtContext,0) - - - def createuserstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateuserstmtContext,0) - - - def createusermappingstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateusermappingstmtContext,0) - - - def createdbstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatedbstmtContext,0) - - - def deallocatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeallocatestmtContext,0) - - - def declarecursorstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeclarecursorstmtContext,0) - - - def definestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinestmtContext,0) - - - def deletestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeletestmtContext,0) - - - def discardstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DiscardstmtContext,0) - - - def dostmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DostmtContext,0) - - - def dropcaststmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropcaststmtContext,0) - - - def dropopclassstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropopclassstmtContext,0) - - - def dropopfamilystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropopfamilystmtContext,0) - - - def dropownedstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropownedstmtContext,0) - - - def dropstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropstmtContext,0) - - - def dropsubscriptionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropsubscriptionstmtContext,0) - - - def droptablespacestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DroptablespacestmtContext,0) - - - def droptransformstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DroptransformstmtContext,0) - - - def droprolestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DroprolestmtContext,0) - - - def dropusermappingstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropusermappingstmtContext,0) - - - def dropdbstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DropdbstmtContext,0) - - - def executestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ExecutestmtContext,0) - - - def explainstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ExplainstmtContext,0) - - - def fetchstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.FetchstmtContext,0) - - - def grantstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.GrantstmtContext,0) - - - def grantrolestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.GrantrolestmtContext,0) - - - def importforeignschemastmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ImportforeignschemastmtContext,0) - - - def indexstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.IndexstmtContext,0) - - - def insertstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.InsertstmtContext,0) - - - def mergestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.MergestmtContext,0) - - - def listenstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ListenstmtContext,0) - - - def refreshmatviewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RefreshmatviewstmtContext,0) - - - def loadstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.LoadstmtContext,0) - - - def lockstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.LockstmtContext,0) - - - def notifystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.NotifystmtContext,0) - - - def preparestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.PreparestmtContext,0) - - - def reassignownedstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ReassignownedstmtContext,0) - - - def reindexstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ReindexstmtContext,0) - - - def removeaggrstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RemoveaggrstmtContext,0) - - - def removefuncstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RemovefuncstmtContext,0) - - - def removeoperstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RemoveoperstmtContext,0) - - - def renamestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RenamestmtContext,0) - - - def revokestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RevokestmtContext,0) - - - def revokerolestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RevokerolestmtContext,0) - - - def rulestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RulestmtContext,0) - - - def seclabelstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SeclabelstmtContext,0) - - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def transactionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.TransactionstmtContext,0) - - - def truncatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.TruncatestmtContext,0) - - - def unlistenstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.UnlistenstmtContext,0) - - - def updatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.UpdatestmtContext,0) - - - def vacuumstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VacuumstmtContext,0) - - - def variableresetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VariableresetstmtContext,0) - - - def variablesetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VariablesetstmtContext,0) - - - def variableshowstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VariableshowstmtContext,0) - - - def viewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ViewstmtContext,0) - - - def plsqlconsolecommand(self): - return self.getTypedRuleContext(PostgreSQLParser.PlsqlconsolecommandContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt" ): - listener.enterStmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt" ): - listener.exitStmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt" ): - return visitor.visitStmt(self) - else: - return visitor.visitChildren(self) - - - - - def stmt(self): - - localctx = PostgreSQLParser.StmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 8, self.RULE_stmt) - try: - self.state = 1765 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,2,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1640 - self.altereventtrigstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1641 - self.altercollationstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1642 - self.alterdatabasestmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1643 - self.alterdatabasesetstmt() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1644 - self.alterdefaultprivilegesstmt() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1645 - self.alterdomainstmt() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1646 - self.alterenumstmt() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1647 - self.alterextensionstmt() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 1648 - self.alterextensioncontentsstmt() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 1649 - self.alterfdwstmt() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 1650 - self.alterforeignserverstmt() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 1651 - self.alterfunctionstmt() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 1652 - self.altergroupstmt() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 1653 - self.alterobjectdependsstmt() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 1654 - self.alterobjectschemastmt() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 1655 - self.alterownerstmt() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 1656 - self.alteroperatorstmt() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 1657 - self.altertypestmt() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 1658 - self.alterpolicystmt() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 1659 - self.alterseqstmt() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 1660 - self.altersystemstmt() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 1661 - self.altertablestmt() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 1662 - self.altertblspcstmt() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 1663 - self.altercompositetypestmt() - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 1664 - self.alterpublicationstmt() - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 1665 - self.alterrolesetstmt() - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 1666 - self.alterrolestmt() - pass - - elif la_ == 28: - self.enterOuterAlt(localctx, 28) - self.state = 1667 - self.altersubscriptionstmt() - pass - - elif la_ == 29: - self.enterOuterAlt(localctx, 29) - self.state = 1668 - self.alterstatsstmt() - pass - - elif la_ == 30: - self.enterOuterAlt(localctx, 30) - self.state = 1669 - self.altertsconfigurationstmt() - pass - - elif la_ == 31: - self.enterOuterAlt(localctx, 31) - self.state = 1670 - self.altertsdictionarystmt() - pass - - elif la_ == 32: - self.enterOuterAlt(localctx, 32) - self.state = 1671 - self.alterusermappingstmt() - pass - - elif la_ == 33: - self.enterOuterAlt(localctx, 33) - self.state = 1672 - self.analyzestmt() - pass - - elif la_ == 34: - self.enterOuterAlt(localctx, 34) - self.state = 1673 - self.callstmt() - pass - - elif la_ == 35: - self.enterOuterAlt(localctx, 35) - self.state = 1674 - self.checkpointstmt() - pass - - elif la_ == 36: - self.enterOuterAlt(localctx, 36) - self.state = 1675 - self.closeportalstmt() - pass - - elif la_ == 37: - self.enterOuterAlt(localctx, 37) - self.state = 1676 - self.clusterstmt() - pass - - elif la_ == 38: - self.enterOuterAlt(localctx, 38) - self.state = 1677 - self.commentstmt() - pass - - elif la_ == 39: - self.enterOuterAlt(localctx, 39) - self.state = 1678 - self.constraintssetstmt() - pass - - elif la_ == 40: - self.enterOuterAlt(localctx, 40) - self.state = 1679 - self.copystmt() - pass - - elif la_ == 41: - self.enterOuterAlt(localctx, 41) - self.state = 1680 - self.createamstmt() - pass - - elif la_ == 42: - self.enterOuterAlt(localctx, 42) - self.state = 1681 - self.createasstmt() - pass - - elif la_ == 43: - self.enterOuterAlt(localctx, 43) - self.state = 1682 - self.createassertionstmt() - pass - - elif la_ == 44: - self.enterOuterAlt(localctx, 44) - self.state = 1683 - self.createcaststmt() - pass - - elif la_ == 45: - self.enterOuterAlt(localctx, 45) - self.state = 1684 - self.createconversionstmt() - pass - - elif la_ == 46: - self.enterOuterAlt(localctx, 46) - self.state = 1685 - self.createdomainstmt() - pass - - elif la_ == 47: - self.enterOuterAlt(localctx, 47) - self.state = 1686 - self.createextensionstmt() - pass - - elif la_ == 48: - self.enterOuterAlt(localctx, 48) - self.state = 1687 - self.createfdwstmt() - pass - - elif la_ == 49: - self.enterOuterAlt(localctx, 49) - self.state = 1688 - self.createforeignserverstmt() - pass - - elif la_ == 50: - self.enterOuterAlt(localctx, 50) - self.state = 1689 - self.createforeigntablestmt() - pass - - elif la_ == 51: - self.enterOuterAlt(localctx, 51) - self.state = 1690 - self.createfunctionstmt() - pass - - elif la_ == 52: - self.enterOuterAlt(localctx, 52) - self.state = 1691 - self.creategroupstmt() - pass - - elif la_ == 53: - self.enterOuterAlt(localctx, 53) - self.state = 1692 - self.creatematviewstmt() - pass - - elif la_ == 54: - self.enterOuterAlt(localctx, 54) - self.state = 1693 - self.createopclassstmt() - pass - - elif la_ == 55: - self.enterOuterAlt(localctx, 55) - self.state = 1694 - self.createopfamilystmt() - pass - - elif la_ == 56: - self.enterOuterAlt(localctx, 56) - self.state = 1695 - self.createpublicationstmt() - pass - - elif la_ == 57: - self.enterOuterAlt(localctx, 57) - self.state = 1696 - self.alteropfamilystmt() - pass - - elif la_ == 58: - self.enterOuterAlt(localctx, 58) - self.state = 1697 - self.createpolicystmt() - pass - - elif la_ == 59: - self.enterOuterAlt(localctx, 59) - self.state = 1698 - self.createplangstmt() - pass - - elif la_ == 60: - self.enterOuterAlt(localctx, 60) - self.state = 1699 - self.createschemastmt() - pass - - elif la_ == 61: - self.enterOuterAlt(localctx, 61) - self.state = 1700 - self.createseqstmt() - pass - - elif la_ == 62: - self.enterOuterAlt(localctx, 62) - self.state = 1701 - self.createstmt() - pass - - elif la_ == 63: - self.enterOuterAlt(localctx, 63) - self.state = 1702 - self.createsubscriptionstmt() - pass - - elif la_ == 64: - self.enterOuterAlt(localctx, 64) - self.state = 1703 - self.createstatsstmt() - pass - - elif la_ == 65: - self.enterOuterAlt(localctx, 65) - self.state = 1704 - self.createtablespacestmt() - pass - - elif la_ == 66: - self.enterOuterAlt(localctx, 66) - self.state = 1705 - self.createtransformstmt() - pass - - elif la_ == 67: - self.enterOuterAlt(localctx, 67) - self.state = 1706 - self.createtrigstmt() - pass - - elif la_ == 68: - self.enterOuterAlt(localctx, 68) - self.state = 1707 - self.createeventtrigstmt() - pass - - elif la_ == 69: - self.enterOuterAlt(localctx, 69) - self.state = 1708 - self.createrolestmt() - pass - - elif la_ == 70: - self.enterOuterAlt(localctx, 70) - self.state = 1709 - self.createuserstmt() - pass - - elif la_ == 71: - self.enterOuterAlt(localctx, 71) - self.state = 1710 - self.createusermappingstmt() - pass - - elif la_ == 72: - self.enterOuterAlt(localctx, 72) - self.state = 1711 - self.createdbstmt() - pass - - elif la_ == 73: - self.enterOuterAlt(localctx, 73) - self.state = 1712 - self.deallocatestmt() - pass - - elif la_ == 74: - self.enterOuterAlt(localctx, 74) - self.state = 1713 - self.declarecursorstmt() - pass - - elif la_ == 75: - self.enterOuterAlt(localctx, 75) - self.state = 1714 - self.definestmt() - pass - - elif la_ == 76: - self.enterOuterAlt(localctx, 76) - self.state = 1715 - self.deletestmt() - pass - - elif la_ == 77: - self.enterOuterAlt(localctx, 77) - self.state = 1716 - self.discardstmt() - pass - - elif la_ == 78: - self.enterOuterAlt(localctx, 78) - self.state = 1717 - self.dostmt() - pass - - elif la_ == 79: - self.enterOuterAlt(localctx, 79) - self.state = 1718 - self.dropcaststmt() - pass - - elif la_ == 80: - self.enterOuterAlt(localctx, 80) - self.state = 1719 - self.dropopclassstmt() - pass - - elif la_ == 81: - self.enterOuterAlt(localctx, 81) - self.state = 1720 - self.dropopfamilystmt() - pass - - elif la_ == 82: - self.enterOuterAlt(localctx, 82) - self.state = 1721 - self.dropownedstmt() - pass - - elif la_ == 83: - self.enterOuterAlt(localctx, 83) - self.state = 1722 - self.dropstmt() - pass - - elif la_ == 84: - self.enterOuterAlt(localctx, 84) - self.state = 1723 - self.dropsubscriptionstmt() - pass - - elif la_ == 85: - self.enterOuterAlt(localctx, 85) - self.state = 1724 - self.droptablespacestmt() - pass - - elif la_ == 86: - self.enterOuterAlt(localctx, 86) - self.state = 1725 - self.droptransformstmt() - pass - - elif la_ == 87: - self.enterOuterAlt(localctx, 87) - self.state = 1726 - self.droprolestmt() - pass - - elif la_ == 88: - self.enterOuterAlt(localctx, 88) - self.state = 1727 - self.dropusermappingstmt() - pass - - elif la_ == 89: - self.enterOuterAlt(localctx, 89) - self.state = 1728 - self.dropdbstmt() - pass - - elif la_ == 90: - self.enterOuterAlt(localctx, 90) - self.state = 1729 - self.executestmt() - pass - - elif la_ == 91: - self.enterOuterAlt(localctx, 91) - self.state = 1730 - self.explainstmt() - pass - - elif la_ == 92: - self.enterOuterAlt(localctx, 92) - self.state = 1731 - self.fetchstmt() - pass - - elif la_ == 93: - self.enterOuterAlt(localctx, 93) - self.state = 1732 - self.grantstmt() - pass - - elif la_ == 94: - self.enterOuterAlt(localctx, 94) - self.state = 1733 - self.grantrolestmt() - pass - - elif la_ == 95: - self.enterOuterAlt(localctx, 95) - self.state = 1734 - self.importforeignschemastmt() - pass - - elif la_ == 96: - self.enterOuterAlt(localctx, 96) - self.state = 1735 - self.indexstmt() - pass - - elif la_ == 97: - self.enterOuterAlt(localctx, 97) - self.state = 1736 - self.insertstmt() - pass - - elif la_ == 98: - self.enterOuterAlt(localctx, 98) - self.state = 1737 - self.mergestmt() - pass - - elif la_ == 99: - self.enterOuterAlt(localctx, 99) - self.state = 1738 - self.listenstmt() - pass - - elif la_ == 100: - self.enterOuterAlt(localctx, 100) - self.state = 1739 - self.refreshmatviewstmt() - pass - - elif la_ == 101: - self.enterOuterAlt(localctx, 101) - self.state = 1740 - self.loadstmt() - pass - - elif la_ == 102: - self.enterOuterAlt(localctx, 102) - self.state = 1741 - self.lockstmt() - pass - - elif la_ == 103: - self.enterOuterAlt(localctx, 103) - self.state = 1742 - self.notifystmt() - pass - - elif la_ == 104: - self.enterOuterAlt(localctx, 104) - self.state = 1743 - self.preparestmt() - pass - - elif la_ == 105: - self.enterOuterAlt(localctx, 105) - self.state = 1744 - self.reassignownedstmt() - pass - - elif la_ == 106: - self.enterOuterAlt(localctx, 106) - self.state = 1745 - self.reindexstmt() - pass - - elif la_ == 107: - self.enterOuterAlt(localctx, 107) - self.state = 1746 - self.removeaggrstmt() - pass - - elif la_ == 108: - self.enterOuterAlt(localctx, 108) - self.state = 1747 - self.removefuncstmt() - pass - - elif la_ == 109: - self.enterOuterAlt(localctx, 109) - self.state = 1748 - self.removeoperstmt() - pass - - elif la_ == 110: - self.enterOuterAlt(localctx, 110) - self.state = 1749 - self.renamestmt() - pass - - elif la_ == 111: - self.enterOuterAlt(localctx, 111) - self.state = 1750 - self.revokestmt() - pass - - elif la_ == 112: - self.enterOuterAlt(localctx, 112) - self.state = 1751 - self.revokerolestmt() - pass - - elif la_ == 113: - self.enterOuterAlt(localctx, 113) - self.state = 1752 - self.rulestmt() - pass - - elif la_ == 114: - self.enterOuterAlt(localctx, 114) - self.state = 1753 - self.seclabelstmt() - pass - - elif la_ == 115: - self.enterOuterAlt(localctx, 115) - self.state = 1754 - self.selectstmt() - pass - - elif la_ == 116: - self.enterOuterAlt(localctx, 116) - self.state = 1755 - self.transactionstmt() - pass - - elif la_ == 117: - self.enterOuterAlt(localctx, 117) - self.state = 1756 - self.truncatestmt() - pass - - elif la_ == 118: - self.enterOuterAlt(localctx, 118) - self.state = 1757 - self.unlistenstmt() - pass - - elif la_ == 119: - self.enterOuterAlt(localctx, 119) - self.state = 1758 - self.updatestmt() - pass - - elif la_ == 120: - self.enterOuterAlt(localctx, 120) - self.state = 1759 - self.vacuumstmt() - pass - - elif la_ == 121: - self.enterOuterAlt(localctx, 121) - self.state = 1760 - self.variableresetstmt() - pass - - elif la_ == 122: - self.enterOuterAlt(localctx, 122) - self.state = 1761 - self.variablesetstmt() - pass - - elif la_ == 123: - self.enterOuterAlt(localctx, 123) - self.state = 1762 - self.variableshowstmt() - pass - - elif la_ == 124: - self.enterOuterAlt(localctx, 124) - self.state = 1763 - self.viewstmt() - pass - - elif la_ == 125: - self.enterOuterAlt(localctx, 125) - self.state = 1764 - self.plsqlconsolecommand() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PlsqlconsolecommandContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def MetaCommand(self): - return self.getToken(PostgreSQLParser.MetaCommand, 0) - - def EndMetaCommand(self): - return self.getToken(PostgreSQLParser.EndMetaCommand, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsqlconsolecommand - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsqlconsolecommand" ): - listener.enterPlsqlconsolecommand(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsqlconsolecommand" ): - listener.exitPlsqlconsolecommand(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsqlconsolecommand" ): - return visitor.visitPlsqlconsolecommand(self) - else: - return visitor.visitChildren(self) - - - - - def plsqlconsolecommand(self): - - localctx = PostgreSQLParser.PlsqlconsolecommandContext(self, self._ctx, self.state) - self.enterRule(localctx, 10, self.RULE_plsqlconsolecommand) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1767 - self.match(PostgreSQLParser.MetaCommand) - self.state = 1769 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==669: - self.state = 1768 - self.match(PostgreSQLParser.EndMetaCommand) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CallstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CALL(self): - return self.getToken(PostgreSQLParser.CALL, 0) - - def func_application(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_applicationContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_callstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCallstmt" ): - listener.enterCallstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCallstmt" ): - listener.exitCallstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCallstmt" ): - return visitor.visitCallstmt(self) - else: - return visitor.visitChildren(self) - - - - - def callstmt(self): - - localctx = PostgreSQLParser.CallstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 12, self.RULE_callstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1771 - self.match(PostgreSQLParser.CALL) - self.state = 1772 - self.func_application() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreaterolestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def roleid(self): - return self.getTypedRuleContext(PostgreSQLParser.RoleidContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def optrolelist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptrolelistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createrolestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreaterolestmt" ): - listener.enterCreaterolestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreaterolestmt" ): - listener.exitCreaterolestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreaterolestmt" ): - return visitor.visitCreaterolestmt(self) - else: - return visitor.visitChildren(self) - - - - - def createrolestmt(self): - - localctx = PostgreSQLParser.CreaterolestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 14, self.RULE_createrolestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1774 - self.match(PostgreSQLParser.CREATE) - self.state = 1775 - self.match(PostgreSQLParser.ROLE) - self.state = 1776 - self.roleid() - self.state = 1777 - self.opt_with() - self.state = 1778 - self.optrolelist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_withContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_with - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_with" ): - listener.enterOpt_with(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_with" ): - listener.exitOpt_with(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_with" ): - return visitor.visitOpt_with(self) - else: - return visitor.visitChildren(self) - - - - - def opt_with(self): - - localctx = PostgreSQLParser.Opt_withContext(self, self._ctx, self.state) - self.enterRule(localctx, 16, self.RULE_opt_with) - try: - self.state = 1782 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,4,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1780 - self.match(PostgreSQLParser.WITH) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptrolelistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createoptroleelem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.CreateoptroleelemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.CreateoptroleelemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optrolelist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptrolelist" ): - listener.enterOptrolelist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptrolelist" ): - listener.exitOptrolelist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptrolelist" ): - return visitor.visitOptrolelist(self) - else: - return visitor.visitChildren(self) - - - - - def optrolelist(self): - - localctx = PostgreSQLParser.OptrolelistContext(self, self._ctx, self.state) - self.enterRule(localctx, 18, self.RULE_optrolelist) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1787 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,5,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1784 - self.createoptroleelem() - self.state = 1789 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,5,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlteroptrolelistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alteroptroleelem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.AlteroptroleelemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.AlteroptroleelemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alteroptrolelist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlteroptrolelist" ): - listener.enterAlteroptrolelist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlteroptrolelist" ): - listener.exitAlteroptrolelist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlteroptrolelist" ): - return visitor.visitAlteroptrolelist(self) - else: - return visitor.visitChildren(self) - - - - - def alteroptrolelist(self): - - localctx = PostgreSQLParser.AlteroptrolelistContext(self, self._ctx, self.state) - self.enterRule(localctx, 20, self.RULE_alteroptrolelist) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1793 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1790 - self.alteroptroleelem() - self.state = 1795 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,6,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlteroptroleelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PASSWORD(self): - return self.getToken(PostgreSQLParser.PASSWORD, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def ENCRYPTED(self): - return self.getToken(PostgreSQLParser.ENCRYPTED, 0) - - def UNENCRYPTED(self): - return self.getToken(PostgreSQLParser.UNENCRYPTED, 0) - - def INHERIT(self): - return self.getToken(PostgreSQLParser.INHERIT, 0) - - def CONNECTION(self): - return self.getToken(PostgreSQLParser.CONNECTION, 0) - - def LIMIT(self): - return self.getToken(PostgreSQLParser.LIMIT, 0) - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def VALID(self): - return self.getToken(PostgreSQLParser.VALID, 0) - - def UNTIL(self): - return self.getToken(PostgreSQLParser.UNTIL, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alteroptroleelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlteroptroleelem" ): - listener.enterAlteroptroleelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlteroptroleelem" ): - listener.exitAlteroptroleelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlteroptroleelem" ): - return visitor.visitAlteroptroleelem(self) - else: - return visitor.visitChildren(self) - - - - - def alteroptroleelem(self): - - localctx = PostgreSQLParser.AlteroptroleelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 22, self.RULE_alteroptroleelem) - self._la = 0 # Token type - try: - self.state = 1814 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [280]: - self.enterOuterAlt(localctx, 1) - self.state = 1796 - self.match(PostgreSQLParser.PASSWORD) - self.state = 1799 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.state = 1797 - self.sconst() - pass - elif token in [78]: - self.state = 1798 - self.match(PostgreSQLParser.NULL_P) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [195, 357]: - self.enterOuterAlt(localctx, 2) - self.state = 1801 - _la = self._input.LA(1) - if not(_la==195 or _la==357): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1802 - self.match(PostgreSQLParser.PASSWORD) - self.state = 1803 - self.sconst() - pass - elif token in [228]: - self.enterOuterAlt(localctx, 3) - self.state = 1804 - self.match(PostgreSQLParser.INHERIT) - pass - elif token in [164]: - self.enterOuterAlt(localctx, 4) - self.state = 1805 - self.match(PostgreSQLParser.CONNECTION) - self.state = 1806 - self.match(PostgreSQLParser.LIMIT) - self.state = 1807 - self.signediconst() - pass - elif token in [364]: - self.enterOuterAlt(localctx, 5) - self.state = 1808 - self.match(PostgreSQLParser.VALID) - self.state = 1809 - self.match(PostgreSQLParser.UNTIL) - self.state = 1810 - self.sconst() - pass - elif token in [99]: - self.enterOuterAlt(localctx, 6) - self.state = 1811 - self.match(PostgreSQLParser.USER) - self.state = 1812 - self.role_list() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 123, 130, 144, 153, 157, 161, 167, 172, 207, 210, 232, 240, 258, 261, 262, 272, 286, 300, 306, 312, 316, 317, 326, 353, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 7) - self.state = 1813 - self.identifier() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateoptroleelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alteroptroleelem(self): - return self.getTypedRuleContext(PostgreSQLParser.AlteroptroleelemContext,0) - - - def SYSID(self): - return self.getToken(PostgreSQLParser.SYSID, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def ADMIN(self): - return self.getToken(PostgreSQLParser.ADMIN, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createoptroleelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateoptroleelem" ): - listener.enterCreateoptroleelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateoptroleelem" ): - listener.exitCreateoptroleelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateoptroleelem" ): - return visitor.visitCreateoptroleelem(self) - else: - return visitor.visitChildren(self) - - - - - def createoptroleelem(self): - - localctx = PostgreSQLParser.CreateoptroleelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 24, self.RULE_createoptroleelem) - self._la = 0 # Token type - try: - self.state = 1826 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 99, 116, 123, 130, 144, 153, 157, 161, 164, 167, 172, 195, 207, 210, 228, 232, 240, 258, 261, 262, 272, 280, 286, 300, 306, 312, 316, 317, 326, 353, 357, 364, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 1816 - self.alteroptroleelem() - pass - elif token in [341]: - self.enterOuterAlt(localctx, 2) - self.state = 1817 - self.match(PostgreSQLParser.SYSID) - self.state = 1818 - self.iconst() - pass - elif token in [134]: - self.enterOuterAlt(localctx, 3) - self.state = 1819 - self.match(PostgreSQLParser.ADMIN) - self.state = 1820 - self.role_list() - pass - elif token in [311]: - self.enterOuterAlt(localctx, 4) - self.state = 1821 - self.match(PostgreSQLParser.ROLE) - self.state = 1822 - self.role_list() - pass - elif token in [68]: - self.enterOuterAlt(localctx, 5) - self.state = 1823 - self.match(PostgreSQLParser.IN_P) - self.state = 1824 - _la = self._input.LA(1) - if not(_la==66 or _la==311): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1825 - self.role_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateuserstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def roleid(self): - return self.getTypedRuleContext(PostgreSQLParser.RoleidContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def optrolelist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptrolelistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createuserstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateuserstmt" ): - listener.enterCreateuserstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateuserstmt" ): - listener.exitCreateuserstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateuserstmt" ): - return visitor.visitCreateuserstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createuserstmt(self): - - localctx = PostgreSQLParser.CreateuserstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 26, self.RULE_createuserstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1828 - self.match(PostgreSQLParser.CREATE) - self.state = 1829 - self.match(PostgreSQLParser.USER) - self.state = 1830 - self.roleid() - self.state = 1831 - self.opt_with() - self.state = 1832 - self.optrolelist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterrolestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def alteroptrolelist(self): - return self.getTypedRuleContext(PostgreSQLParser.AlteroptrolelistContext,0) - - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterrolestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterrolestmt" ): - listener.enterAlterrolestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterrolestmt" ): - listener.exitAlterrolestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterrolestmt" ): - return visitor.visitAlterrolestmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterrolestmt(self): - - localctx = PostgreSQLParser.AlterrolestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 28, self.RULE_alterrolestmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1834 - self.match(PostgreSQLParser.ALTER) - self.state = 1835 - _la = self._input.LA(1) - if not(_la==99 or _la==311): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1836 - self.rolespec() - self.state = 1837 - self.opt_with() - self.state = 1838 - self.alteroptrolelist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_in_databaseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_in_database - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_in_database" ): - listener.enterOpt_in_database(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_in_database" ): - listener.exitOpt_in_database(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_in_database" ): - return visitor.visitOpt_in_database(self) - else: - return visitor.visitChildren(self) - - - - - def opt_in_database(self): - - localctx = PostgreSQLParser.Opt_in_databaseContext(self, self._ctx, self.state) - self.enterRule(localctx, 30, self.RULE_opt_in_database) - try: - self.state = 1844 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [306, 326]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [68]: - self.enterOuterAlt(localctx, 2) - self.state = 1841 - self.match(PostgreSQLParser.IN_P) - self.state = 1842 - self.match(PostgreSQLParser.DATABASE) - self.state = 1843 - self.name() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterrolesetstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def opt_in_database(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_in_databaseContext,0) - - - def setresetclause(self): - return self.getTypedRuleContext(PostgreSQLParser.SetresetclauseContext,0) - - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterrolesetstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterrolesetstmt" ): - listener.enterAlterrolesetstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterrolesetstmt" ): - listener.exitAlterrolesetstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterrolesetstmt" ): - return visitor.visitAlterrolesetstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterrolesetstmt(self): - - localctx = PostgreSQLParser.AlterrolesetstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 32, self.RULE_alterrolesetstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1846 - self.match(PostgreSQLParser.ALTER) - self.state = 1847 - _la = self._input.LA(1) - if not(_la==99 or _la==311): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1849 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==30: - self.state = 1848 - self.match(PostgreSQLParser.ALL) - - - self.state = 1851 - self.rolespec() - self.state = 1852 - self.opt_in_database() - self.state = 1853 - self.setresetclause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DroprolestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_droprolestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDroprolestmt" ): - listener.enterDroprolestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDroprolestmt" ): - listener.exitDroprolestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDroprolestmt" ): - return visitor.visitDroprolestmt(self) - else: - return visitor.visitChildren(self) - - - - - def droprolestmt(self): - - localctx = PostgreSQLParser.DroprolestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 34, self.RULE_droprolestmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1855 - self.match(PostgreSQLParser.DROP) - self.state = 1856 - _la = self._input.LA(1) - if not(_la==66 or _la==99 or _la==311): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1859 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,12,self._ctx) - if la_ == 1: - self.state = 1857 - self.match(PostgreSQLParser.IF_P) - self.state = 1858 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 1861 - self.role_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreategroupstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def roleid(self): - return self.getTypedRuleContext(PostgreSQLParser.RoleidContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def optrolelist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptrolelistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_creategroupstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreategroupstmt" ): - listener.enterCreategroupstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreategroupstmt" ): - listener.exitCreategroupstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreategroupstmt" ): - return visitor.visitCreategroupstmt(self) - else: - return visitor.visitChildren(self) - - - - - def creategroupstmt(self): - - localctx = PostgreSQLParser.CreategroupstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 36, self.RULE_creategroupstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1863 - self.match(PostgreSQLParser.CREATE) - self.state = 1864 - self.match(PostgreSQLParser.GROUP_P) - self.state = 1865 - self.roleid() - self.state = 1866 - self.opt_with() - self.state = 1867 - self.optrolelist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltergroupstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def add_drop(self): - return self.getTypedRuleContext(PostgreSQLParser.Add_dropContext,0) - - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altergroupstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltergroupstmt" ): - listener.enterAltergroupstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltergroupstmt" ): - listener.exitAltergroupstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltergroupstmt" ): - return visitor.visitAltergroupstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altergroupstmt(self): - - localctx = PostgreSQLParser.AltergroupstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 38, self.RULE_altergroupstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1869 - self.match(PostgreSQLParser.ALTER) - self.state = 1870 - self.match(PostgreSQLParser.GROUP_P) - self.state = 1871 - self.rolespec() - self.state = 1872 - self.add_drop() - self.state = 1873 - self.match(PostgreSQLParser.USER) - self.state = 1874 - self.role_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Add_dropContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_add_drop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAdd_drop" ): - listener.enterAdd_drop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAdd_drop" ): - listener.exitAdd_drop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAdd_drop" ): - return visitor.visitAdd_drop(self) - else: - return visitor.visitChildren(self) - - - - - def add_drop(self): - - localctx = PostgreSQLParser.Add_dropContext(self, self._ctx, self.state) - self.enterRule(localctx, 40, self.RULE_add_drop) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1876 - _la = self._input.LA(1) - if not(_la==133 or _la==191): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateschemastmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def optschemaeltlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptschemaeltlistContext,0) - - - def optschemaname(self): - return self.getTypedRuleContext(PostgreSQLParser.OptschemanameContext,0) - - - def AUTHORIZATION(self): - return self.getToken(PostgreSQLParser.AUTHORIZATION, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createschemastmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateschemastmt" ): - listener.enterCreateschemastmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateschemastmt" ): - listener.exitCreateschemastmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateschemastmt" ): - return visitor.visitCreateschemastmt(self) - else: - return visitor.visitChildren(self) - - - - - def createschemastmt(self): - - localctx = PostgreSQLParser.CreateschemastmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 42, self.RULE_createschemastmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1878 - self.match(PostgreSQLParser.CREATE) - self.state = 1879 - self.match(PostgreSQLParser.SCHEMA) - self.state = 1883 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,13,self._ctx) - if la_ == 1: - self.state = 1880 - self.match(PostgreSQLParser.IF_P) - self.state = 1881 - self.match(PostgreSQLParser.NOT) - self.state = 1882 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 1890 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,14,self._ctx) - if la_ == 1: - self.state = 1885 - self.optschemaname() - self.state = 1886 - self.match(PostgreSQLParser.AUTHORIZATION) - self.state = 1887 - self.rolespec() - pass - - elif la_ == 2: - self.state = 1889 - self.colid() - pass - - - self.state = 1892 - self.optschemaeltlist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptschemanameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optschemaname - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptschemaname" ): - listener.enterOptschemaname(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptschemaname" ): - listener.exitOptschemaname(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptschemaname" ): - return visitor.visitOptschemaname(self) - else: - return visitor.visitChildren(self) - - - - - def optschemaname(self): - - localctx = PostgreSQLParser.OptschemanameContext(self, self._ctx, self.state) - self.enterRule(localctx, 44, self.RULE_optschemaname) - try: - self.state = 1896 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 1894 - self.colid() - pass - elif token in [106]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptschemaeltlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def schema_stmt(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Schema_stmtContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Schema_stmtContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optschemaeltlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptschemaeltlist" ): - listener.enterOptschemaeltlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptschemaeltlist" ): - listener.exitOptschemaeltlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptschemaeltlist" ): - return visitor.visitOptschemaeltlist(self) - else: - return visitor.visitChildren(self) - - - - - def optschemaeltlist(self): - - localctx = PostgreSQLParser.OptschemaeltlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 46, self.RULE_optschemaeltlist) - try: - self.enterOuterAlt(localctx, 1) - self.state = 1901 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,16,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 1898 - self.schema_stmt() - self.state = 1903 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,16,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Schema_stmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatestmtContext,0) - - - def indexstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.IndexstmtContext,0) - - - def createseqstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateseqstmtContext,0) - - - def createtrigstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatetrigstmtContext,0) - - - def grantstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.GrantstmtContext,0) - - - def viewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ViewstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_schema_stmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSchema_stmt" ): - listener.enterSchema_stmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSchema_stmt" ): - listener.exitSchema_stmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSchema_stmt" ): - return visitor.visitSchema_stmt(self) - else: - return visitor.visitChildren(self) - - - - - def schema_stmt(self): - - localctx = PostgreSQLParser.Schema_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 48, self.RULE_schema_stmt) - try: - self.state = 1910 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,17,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1904 - self.createstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1905 - self.indexstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1906 - self.createseqstmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1907 - self.createtrigstmt() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1908 - self.grantstmt() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1909 - self.viewstmt() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariablesetstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_rest(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_restContext,0) - - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_variablesetstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariablesetstmt" ): - listener.enterVariablesetstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariablesetstmt" ): - listener.exitVariablesetstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariablesetstmt" ): - return visitor.visitVariablesetstmt(self) - else: - return visitor.visitChildren(self) - - - - - def variablesetstmt(self): - - localctx = PostgreSQLParser.VariablesetstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 50, self.RULE_variablesetstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1912 - self.match(PostgreSQLParser.SET) - self.state = 1914 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) - if la_ == 1: - self.state = 1913 - _la = self._input.LA(1) - if not(_la==245 or _la==325): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - self.state = 1916 - self.set_rest() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_restContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def transaction_mode_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Transaction_mode_listContext,0) - - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def CHARACTERISTICS(self): - return self.getToken(PostgreSQLParser.CHARACTERISTICS, 0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def set_rest_more(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_rest_moreContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_rest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_rest" ): - listener.enterSet_rest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_rest" ): - listener.exitSet_rest(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_rest" ): - return visitor.visitSet_rest(self) - else: - return visitor.visitChildren(self) - - - - - def set_rest(self): - - localctx = PostgreSQLParser.Set_restContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_set_rest) - try: - self.state = 1926 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,19,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1918 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 1919 - self.transaction_mode_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1920 - self.match(PostgreSQLParser.SESSION) - self.state = 1921 - self.match(PostgreSQLParser.CHARACTERISTICS) - self.state = 1922 - self.match(PostgreSQLParser.AS) - self.state = 1923 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 1924 - self.transaction_mode_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1925 - self.set_rest_more() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_setContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def var_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Var_nameContext,0) - - - def var_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Var_listContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_set - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_set" ): - listener.enterGeneric_set(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_set" ): - listener.exitGeneric_set(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_set" ): - return visitor.visitGeneric_set(self) - else: - return visitor.visitChildren(self) - - - - - def generic_set(self): - - localctx = PostgreSQLParser.Generic_setContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_generic_set) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1928 - self.var_name() - self.state = 1929 - _la = self._input.LA(1) - if not(_la==10 or _la==94): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1930 - self.var_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_rest_moreContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generic_set(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_setContext,0) - - - def var_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Var_nameContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def zone_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Zone_valueContext,0) - - - def CATALOG(self): - return self.getToken(PostgreSQLParser.CATALOG, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def NAMES(self): - return self.getToken(PostgreSQLParser.NAMES, 0) - - def opt_encoding(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_encodingContext,0) - - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def AUTHORIZATION(self): - return self.getToken(PostgreSQLParser.AUTHORIZATION, 0) - - def XML_P(self): - return self.getToken(PostgreSQLParser.XML_P, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def document_or_content(self): - return self.getTypedRuleContext(PostgreSQLParser.Document_or_contentContext,0) - - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def SNAPSHOT(self): - return self.getToken(PostgreSQLParser.SNAPSHOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_rest_more - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_rest_more" ): - listener.enterSet_rest_more(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_rest_more" ): - listener.exitSet_rest_more(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_rest_more" ): - return visitor.visitSet_rest_more(self) - else: - return visitor.visitChildren(self) - - - - - def set_rest_more(self): - - localctx = PostgreSQLParser.Set_rest_moreContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_set_rest_more) - try: - self.state = 1957 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,20,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1932 - self.generic_set() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1933 - self.var_name() - self.state = 1934 - self.match(PostgreSQLParser.FROM) - self.state = 1935 - self.match(PostgreSQLParser.CURRENT_P) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1937 - self.match(PostgreSQLParser.TIME) - self.state = 1938 - self.match(PostgreSQLParser.ZONE) - self.state = 1939 - self.zone_value() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1940 - self.match(PostgreSQLParser.CATALOG) - self.state = 1941 - self.sconst() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 1942 - self.match(PostgreSQLParser.SCHEMA) - self.state = 1943 - self.sconst() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 1944 - self.match(PostgreSQLParser.NAMES) - self.state = 1945 - self.opt_encoding() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 1946 - self.match(PostgreSQLParser.ROLE) - self.state = 1947 - self.nonreservedword_or_sconst() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 1948 - self.match(PostgreSQLParser.SESSION) - self.state = 1949 - self.match(PostgreSQLParser.AUTHORIZATION) - self.state = 1950 - self.nonreservedword_or_sconst() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 1951 - self.match(PostgreSQLParser.XML_P) - self.state = 1952 - self.match(PostgreSQLParser.OPTION) - self.state = 1953 - self.document_or_content() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 1954 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 1955 - self.match(PostgreSQLParser.SNAPSHOT) - self.state = 1956 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Var_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ColidContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,i) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.DOT) - else: - return self.getToken(PostgreSQLParser.DOT, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_var_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVar_name" ): - listener.enterVar_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVar_name" ): - listener.exitVar_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVar_name" ): - return visitor.visitVar_name(self) - else: - return visitor.visitChildren(self) - - - - - def var_name(self): - - localctx = PostgreSQLParser.Var_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_var_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1959 - self.colid() - self.state = 1964 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==11: - self.state = 1960 - self.match(PostgreSQLParser.DOT) - self.state = 1961 - self.colid() - self.state = 1966 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Var_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def var_value(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Var_valueContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Var_valueContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_var_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVar_list" ): - listener.enterVar_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVar_list" ): - listener.exitVar_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVar_list" ): - return visitor.visitVar_list(self) - else: - return visitor.visitChildren(self) - - - - - def var_list(self): - - localctx = PostgreSQLParser.Var_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 60, self.RULE_var_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 1967 - self.var_value() - self.state = 1972 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 1968 - self.match(PostgreSQLParser.COMMA) - self.state = 1969 - self.var_value() - self.state = 1974 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Var_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_var_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVar_value" ): - listener.enterVar_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVar_value" ): - listener.exitVar_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVar_value" ): - return visitor.visitVar_value(self) - else: - return visitor.visitChildren(self) - - - - - def var_value(self): - - localctx = PostgreSQLParser.Var_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 62, self.RULE_var_value) - try: - self.state = 1977 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 60, 61, 80, 92, 96, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 1975 - self.opt_boolean_or_string() - pass - elif token in [12, 13, 658, 660]: - self.enterOuterAlt(localctx, 2) - self.state = 1976 - self.numericonly() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Iso_levelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def READ(self): - return self.getToken(PostgreSQLParser.READ, 0) - - def UNCOMMITTED(self): - return self.getToken(PostgreSQLParser.UNCOMMITTED, 0) - - def COMMITTED(self): - return self.getToken(PostgreSQLParser.COMMITTED, 0) - - def REPEATABLE(self): - return self.getToken(PostgreSQLParser.REPEATABLE, 0) - - def SERIALIZABLE(self): - return self.getToken(PostgreSQLParser.SERIALIZABLE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_iso_level - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIso_level" ): - listener.enterIso_level(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIso_level" ): - listener.exitIso_level(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIso_level" ): - return visitor.visitIso_level(self) - else: - return visitor.visitChildren(self) - - - - - def iso_level(self): - - localctx = PostgreSQLParser.Iso_levelContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_iso_level) - self._la = 0 # Token type - try: - self.state = 1984 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [293]: - self.enterOuterAlt(localctx, 1) - self.state = 1979 - self.match(PostgreSQLParser.READ) - self.state = 1980 - _la = self._input.LA(1) - if not(_la==162 or _la==356): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [303]: - self.enterOuterAlt(localctx, 2) - self.state = 1981 - self.match(PostgreSQLParser.REPEATABLE) - self.state = 1982 - self.match(PostgreSQLParser.READ) - pass - elif token in [323]: - self.enterOuterAlt(localctx, 3) - self.state = 1983 - self.match(PostgreSQLParser.SERIALIZABLE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_boolean_or_stringContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRUE_P(self): - return self.getToken(PostgreSQLParser.TRUE_P, 0) - - def FALSE_P(self): - return self.getToken(PostgreSQLParser.FALSE_P, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_boolean_or_string - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_boolean_or_string" ): - listener.enterOpt_boolean_or_string(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_boolean_or_string" ): - listener.exitOpt_boolean_or_string(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_boolean_or_string" ): - return visitor.visitOpt_boolean_or_string(self) - else: - return visitor.visitChildren(self) - - - - - def opt_boolean_or_string(self): - - localctx = PostgreSQLParser.Opt_boolean_or_stringContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_opt_boolean_or_string) - try: - self.state = 1990 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [96]: - self.enterOuterAlt(localctx, 1) - self.state = 1986 - self.match(PostgreSQLParser.TRUE_P) - pass - elif token in [60]: - self.enterOuterAlt(localctx, 2) - self.state = 1987 - self.match(PostgreSQLParser.FALSE_P) - pass - elif token in [80]: - self.enterOuterAlt(localctx, 3) - self.state = 1988 - self.match(PostgreSQLParser.ON) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 4) - self.state = 1989 - self.nonreservedword_or_sconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Zone_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def constinterval(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstintervalContext,0) - - - def opt_interval(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_intervalContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_zone_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterZone_value" ): - listener.enterZone_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitZone_value" ): - listener.exitZone_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitZone_value" ): - return visitor.visitZone_value(self) - else: - return visitor.visitChildren(self) - - - - - def zone_value(self): - - localctx = PostgreSQLParser.Zone_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_zone_value) - try: - self.state = 2007 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,26,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 1992 - self.sconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 1993 - self.identifier() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 1994 - self.constinterval() - self.state = 1995 - self.sconst() - self.state = 1996 - self.opt_interval() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 1998 - self.constinterval() - self.state = 1999 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2000 - self.iconst() - self.state = 2001 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2002 - self.sconst() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2004 - self.numericonly() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2005 - self.match(PostgreSQLParser.DEFAULT) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2006 - self.match(PostgreSQLParser.LOCAL) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_encodingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_encoding - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_encoding" ): - listener.enterOpt_encoding(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_encoding" ): - listener.exitOpt_encoding(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_encoding" ): - return visitor.visitOpt_encoding(self) - else: - return visitor.visitChildren(self) - - - - - def opt_encoding(self): - - localctx = PostgreSQLParser.Opt_encodingContext(self, self._ctx, self.state) - self.enterRule(localctx, 70, self.RULE_opt_encoding) - try: - self.state = 2012 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 2009 - self.sconst() - pass - elif token in [53]: - self.enterOuterAlt(localctx, 2) - self.state = 2010 - self.match(PostgreSQLParser.DEFAULT) - pass - elif token in [-1, 2, 7, 31, 32, 36, 46, 57, 61, 65, 71, 77, 88, 92, 104, 105, 129, 138, 146, 149, 155, 157, 158, 159, 161, 169, 170, 177, 178, 182, 187, 191, 202, 203, 205, 222, 232, 238, 241, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 308, 309, 310, 312, 313, 315, 320, 326, 328, 331, 333, 339, 351, 359, 362, 363, 370, 415, 433, 443, 444, 454, 459, 460, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Nonreservedword_or_sconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonreservedword(self): - return self.getTypedRuleContext(PostgreSQLParser.NonreservedwordContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_nonreservedword_or_sconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNonreservedword_or_sconst" ): - listener.enterNonreservedword_or_sconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNonreservedword_or_sconst" ): - listener.exitNonreservedword_or_sconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNonreservedword_or_sconst" ): - return visitor.visitNonreservedword_or_sconst(self) - else: - return visitor.visitChildren(self) - - - - - def nonreservedword_or_sconst(self): - - localctx = PostgreSQLParser.Nonreservedword_or_sconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 72, self.RULE_nonreservedword_or_sconst) - try: - self.state = 2016 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 2014 - self.nonreservedword() - pass - elif token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 2) - self.state = 2015 - self.sconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableresetstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def reset_rest(self): - return self.getTypedRuleContext(PostgreSQLParser.Reset_restContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_variableresetstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableresetstmt" ): - listener.enterVariableresetstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableresetstmt" ): - listener.exitVariableresetstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableresetstmt" ): - return visitor.visitVariableresetstmt(self) - else: - return visitor.visitChildren(self) - - - - - def variableresetstmt(self): - - localctx = PostgreSQLParser.VariableresetstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 74, self.RULE_variableresetstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2018 - self.match(PostgreSQLParser.RESET) - self.state = 2019 - self.reset_rest() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reset_restContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generic_reset(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_resetContext,0) - - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def ISOLATION(self): - return self.getToken(PostgreSQLParser.ISOLATION, 0) - - def LEVEL(self): - return self.getToken(PostgreSQLParser.LEVEL, 0) - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def AUTHORIZATION(self): - return self.getToken(PostgreSQLParser.AUTHORIZATION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reset_rest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReset_rest" ): - listener.enterReset_rest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReset_rest" ): - listener.exitReset_rest(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReset_rest" ): - return visitor.visitReset_rest(self) - else: - return visitor.visitChildren(self) - - - - - def reset_rest(self): - - localctx = PostgreSQLParser.Reset_restContext(self, self._ctx, self.state) - self.enterRule(localctx, 76, self.RULE_reset_rest) - try: - self.state = 2029 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,29,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2021 - self.generic_reset() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2022 - self.match(PostgreSQLParser.TIME) - self.state = 2023 - self.match(PostgreSQLParser.ZONE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2024 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 2025 - self.match(PostgreSQLParser.ISOLATION) - self.state = 2026 - self.match(PostgreSQLParser.LEVEL) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2027 - self.match(PostgreSQLParser.SESSION) - self.state = 2028 - self.match(PostgreSQLParser.AUTHORIZATION) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_resetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def var_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Var_nameContext,0) - - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_reset - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_reset" ): - listener.enterGeneric_reset(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_reset" ): - listener.exitGeneric_reset(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_reset" ): - return visitor.visitGeneric_reset(self) - else: - return visitor.visitChildren(self) - - - - - def generic_reset(self): - - localctx = PostgreSQLParser.Generic_resetContext(self, self._ctx, self.state) - self.enterRule(localctx, 78, self.RULE_generic_reset) - try: - self.state = 2033 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 2031 - self.var_name() - pass - elif token in [30]: - self.enterOuterAlt(localctx, 2) - self.state = 2032 - self.match(PostgreSQLParser.ALL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SetresetclauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_rest(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_restContext,0) - - - def variableresetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VariableresetstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_setresetclause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSetresetclause" ): - listener.enterSetresetclause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSetresetclause" ): - listener.exitSetresetclause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSetresetclause" ): - return visitor.visitSetresetclause(self) - else: - return visitor.visitChildren(self) - - - - - def setresetclause(self): - - localctx = PostgreSQLParser.SetresetclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 80, self.RULE_setresetclause) - try: - self.state = 2038 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [326]: - self.enterOuterAlt(localctx, 1) - self.state = 2035 - self.match(PostgreSQLParser.SET) - self.state = 2036 - self.set_rest() - pass - elif token in [306]: - self.enterOuterAlt(localctx, 2) - self.state = 2037 - self.variableresetstmt() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FunctionsetresetclauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_rest_more(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_rest_moreContext,0) - - - def variableresetstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.VariableresetstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_functionsetresetclause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunctionsetresetclause" ): - listener.enterFunctionsetresetclause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunctionsetresetclause" ): - listener.exitFunctionsetresetclause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunctionsetresetclause" ): - return visitor.visitFunctionsetresetclause(self) - else: - return visitor.visitChildren(self) - - - - - def functionsetresetclause(self): - - localctx = PostgreSQLParser.FunctionsetresetclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 82, self.RULE_functionsetresetclause) - try: - self.state = 2043 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [326]: - self.enterOuterAlt(localctx, 1) - self.state = 2040 - self.match(PostgreSQLParser.SET) - self.state = 2041 - self.set_rest_more() - pass - elif token in [306]: - self.enterOuterAlt(localctx, 2) - self.state = 2042 - self.variableresetstmt() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VariableshowstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SHOW(self): - return self.getToken(PostgreSQLParser.SHOW, 0) - - def var_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Var_nameContext,0) - - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def ISOLATION(self): - return self.getToken(PostgreSQLParser.ISOLATION, 0) - - def LEVEL(self): - return self.getToken(PostgreSQLParser.LEVEL, 0) - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def AUTHORIZATION(self): - return self.getToken(PostgreSQLParser.AUTHORIZATION, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_variableshowstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVariableshowstmt" ): - listener.enterVariableshowstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVariableshowstmt" ): - listener.exitVariableshowstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVariableshowstmt" ): - return visitor.visitVariableshowstmt(self) - else: - return visitor.visitChildren(self) - - - - - def variableshowstmt(self): - - localctx = PostgreSQLParser.VariableshowstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 84, self.RULE_variableshowstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2045 - self.match(PostgreSQLParser.SHOW) - self.state = 2055 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,33,self._ctx) - if la_ == 1: - self.state = 2046 - self.var_name() - pass - - elif la_ == 2: - self.state = 2047 - self.match(PostgreSQLParser.TIME) - self.state = 2048 - self.match(PostgreSQLParser.ZONE) - pass - - elif la_ == 3: - self.state = 2049 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 2050 - self.match(PostgreSQLParser.ISOLATION) - self.state = 2051 - self.match(PostgreSQLParser.LEVEL) - pass - - elif la_ == 4: - self.state = 2052 - self.match(PostgreSQLParser.SESSION) - self.state = 2053 - self.match(PostgreSQLParser.AUTHORIZATION) - pass - - elif la_ == 5: - self.state = 2054 - self.match(PostgreSQLParser.ALL) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstraintssetstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def CONSTRAINTS(self): - return self.getToken(PostgreSQLParser.CONSTRAINTS, 0) - - def constraints_set_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Constraints_set_listContext,0) - - - def constraints_set_mode(self): - return self.getTypedRuleContext(PostgreSQLParser.Constraints_set_modeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraintssetstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraintssetstmt" ): - listener.enterConstraintssetstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraintssetstmt" ): - listener.exitConstraintssetstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraintssetstmt" ): - return visitor.visitConstraintssetstmt(self) - else: - return visitor.visitChildren(self) - - - - - def constraintssetstmt(self): - - localctx = PostgreSQLParser.ConstraintssetstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 86, self.RULE_constraintssetstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2057 - self.match(PostgreSQLParser.SET) - self.state = 2058 - self.match(PostgreSQLParser.CONSTRAINTS) - self.state = 2059 - self.constraints_set_list() - self.state = 2060 - self.constraints_set_mode() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Constraints_set_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def qualified_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_name_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraints_set_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraints_set_list" ): - listener.enterConstraints_set_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraints_set_list" ): - listener.exitConstraints_set_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraints_set_list" ): - return visitor.visitConstraints_set_list(self) - else: - return visitor.visitChildren(self) - - - - - def constraints_set_list(self): - - localctx = PostgreSQLParser.Constraints_set_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 88, self.RULE_constraints_set_list) - try: - self.state = 2064 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [30]: - self.enterOuterAlt(localctx, 1) - self.state = 2062 - self.match(PostgreSQLParser.ALL) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - self.state = 2063 - self.qualified_name_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Constraints_set_modeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFERRED(self): - return self.getToken(PostgreSQLParser.DEFERRED, 0) - - def IMMEDIATE(self): - return self.getToken(PostgreSQLParser.IMMEDIATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraints_set_mode - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraints_set_mode" ): - listener.enterConstraints_set_mode(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraints_set_mode" ): - listener.exitConstraints_set_mode(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraints_set_mode" ): - return visitor.visitConstraints_set_mode(self) - else: - return visitor.visitChildren(self) - - - - - def constraints_set_mode(self): - - localctx = PostgreSQLParser.Constraints_set_modeContext(self, self._ctx, self.state) - self.enterRule(localctx, 90, self.RULE_constraints_set_mode) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2066 - _la = self._input.LA(1) - if not(_la==180 or _la==221): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CheckpointstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CHECKPOINT(self): - return self.getToken(PostgreSQLParser.CHECKPOINT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_checkpointstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCheckpointstmt" ): - listener.enterCheckpointstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCheckpointstmt" ): - listener.exitCheckpointstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCheckpointstmt" ): - return visitor.visitCheckpointstmt(self) - else: - return visitor.visitChildren(self) - - - - - def checkpointstmt(self): - - localctx = PostgreSQLParser.CheckpointstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 92, self.RULE_checkpointstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2068 - self.match(PostgreSQLParser.CHECKPOINT) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DiscardstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DISCARD(self): - return self.getToken(PostgreSQLParser.DISCARD, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def TEMP(self): - return self.getToken(PostgreSQLParser.TEMP, 0) - - def TEMPORARY(self): - return self.getToken(PostgreSQLParser.TEMPORARY, 0) - - def PLANS(self): - return self.getToken(PostgreSQLParser.PLANS, 0) - - def SEQUENCES(self): - return self.getToken(PostgreSQLParser.SEQUENCES, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_discardstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDiscardstmt" ): - listener.enterDiscardstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDiscardstmt" ): - listener.exitDiscardstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDiscardstmt" ): - return visitor.visitDiscardstmt(self) - else: - return visitor.visitChildren(self) - - - - - def discardstmt(self): - - localctx = PostgreSQLParser.DiscardstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 94, self.RULE_discardstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2070 - self.match(PostgreSQLParser.DISCARD) - self.state = 2071 - _la = self._input.LA(1) - if not(_la==30 or _la==281 or _la==322 or _la==345 or _la==347): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltertablestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def alter_table_cmds(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_table_cmdsContext,0) - - - def partition_cmd(self): - return self.getTypedRuleContext(PostgreSQLParser.Partition_cmdContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def TABLESPACE(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.TABLESPACE) - else: - return self.getToken(PostgreSQLParser.TABLESPACE, i) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def opt_nowait(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_nowaitContext,0) - - - def OWNED(self): - return self.getToken(PostgreSQLParser.OWNED, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def index_partition_cmd(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_partition_cmdContext,0) - - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altertablestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltertablestmt" ): - listener.enterAltertablestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltertablestmt" ): - listener.exitAltertablestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltertablestmt" ): - return visitor.visitAltertablestmt(self) - else: - return visitor.visitChildren(self) - - - - - def altertablestmt(self): - - localctx = PostgreSQLParser.AltertablestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 96, self.RULE_altertablestmt) - self._la = 0 # Token type - try: - self.state = 2182 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,46,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2073 - self.match(PostgreSQLParser.ALTER) - self.state = 2074 - self.match(PostgreSQLParser.TABLE) - self.state = 2077 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,35,self._ctx) - if la_ == 1: - self.state = 2075 - self.match(PostgreSQLParser.IF_P) - self.state = 2076 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2079 - self.relation_expr() - self.state = 2082 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [77, 133, 138, 158, 186, 191, 193, 209, 228, 262, 268, 273, 275, 305, 306, 326, 365]: - self.state = 2080 - self.alter_table_cmds() - pass - elif token in [435, 436]: - self.state = 2081 - self.partition_cmd() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2084 - self.match(PostgreSQLParser.ALTER) - self.state = 2085 - self.match(PostgreSQLParser.TABLE) - self.state = 2086 - self.match(PostgreSQLParser.ALL) - self.state = 2087 - self.match(PostgreSQLParser.IN_P) - self.state = 2088 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2089 - self.name() - self.state = 2093 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==274: - self.state = 2090 - self.match(PostgreSQLParser.OWNED) - self.state = 2091 - self.match(PostgreSQLParser.BY) - self.state = 2092 - self.role_list() - - - self.state = 2095 - self.match(PostgreSQLParser.SET) - self.state = 2096 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2097 - self.name() - self.state = 2098 - self.opt_nowait() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2100 - self.match(PostgreSQLParser.ALTER) - self.state = 2101 - self.match(PostgreSQLParser.INDEX) - self.state = 2104 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,38,self._ctx) - if la_ == 1: - self.state = 2102 - self.match(PostgreSQLParser.IF_P) - self.state = 2103 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2106 - self.qualified_name() - self.state = 2109 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [77, 133, 138, 158, 186, 191, 193, 209, 228, 262, 268, 273, 275, 305, 306, 326, 365]: - self.state = 2107 - self.alter_table_cmds() - pass - elif token in [435]: - self.state = 2108 - self.index_partition_cmd() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2111 - self.match(PostgreSQLParser.ALTER) - self.state = 2112 - self.match(PostgreSQLParser.INDEX) - self.state = 2113 - self.match(PostgreSQLParser.ALL) - self.state = 2114 - self.match(PostgreSQLParser.IN_P) - self.state = 2115 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2116 - self.name() - self.state = 2120 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==274: - self.state = 2117 - self.match(PostgreSQLParser.OWNED) - self.state = 2118 - self.match(PostgreSQLParser.BY) - self.state = 2119 - self.role_list() - - - self.state = 2122 - self.match(PostgreSQLParser.SET) - self.state = 2123 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2124 - self.name() - self.state = 2125 - self.opt_nowait() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2127 - self.match(PostgreSQLParser.ALTER) - self.state = 2128 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 2131 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,41,self._ctx) - if la_ == 1: - self.state = 2129 - self.match(PostgreSQLParser.IF_P) - self.state = 2130 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2133 - self.qualified_name() - self.state = 2134 - self.alter_table_cmds() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2136 - self.match(PostgreSQLParser.ALTER) - self.state = 2137 - self.match(PostgreSQLParser.VIEW) - self.state = 2140 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,42,self._ctx) - if la_ == 1: - self.state = 2138 - self.match(PostgreSQLParser.IF_P) - self.state = 2139 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2142 - self.qualified_name() - self.state = 2143 - self.alter_table_cmds() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2145 - self.match(PostgreSQLParser.ALTER) - self.state = 2146 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 2147 - self.match(PostgreSQLParser.VIEW) - self.state = 2150 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,43,self._ctx) - if la_ == 1: - self.state = 2148 - self.match(PostgreSQLParser.IF_P) - self.state = 2149 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2152 - self.qualified_name() - self.state = 2153 - self.alter_table_cmds() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 2155 - self.match(PostgreSQLParser.ALTER) - self.state = 2156 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 2157 - self.match(PostgreSQLParser.VIEW) - self.state = 2158 - self.match(PostgreSQLParser.ALL) - self.state = 2159 - self.match(PostgreSQLParser.IN_P) - self.state = 2160 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2161 - self.name() - self.state = 2165 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==274: - self.state = 2162 - self.match(PostgreSQLParser.OWNED) - self.state = 2163 - self.match(PostgreSQLParser.BY) - self.state = 2164 - self.role_list() - - - self.state = 2167 - self.match(PostgreSQLParser.SET) - self.state = 2168 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2169 - self.name() - self.state = 2170 - self.opt_nowait() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 2172 - self.match(PostgreSQLParser.ALTER) - self.state = 2173 - self.match(PostgreSQLParser.FOREIGN) - self.state = 2174 - self.match(PostgreSQLParser.TABLE) - self.state = 2177 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,45,self._ctx) - if la_ == 1: - self.state = 2175 - self.match(PostgreSQLParser.IF_P) - self.state = 2176 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2179 - self.relation_expr() - self.state = 2180 - self.alter_table_cmds() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_table_cmdsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alter_table_cmd(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alter_table_cmdContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alter_table_cmdContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_table_cmds - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_table_cmds" ): - listener.enterAlter_table_cmds(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_table_cmds" ): - listener.exitAlter_table_cmds(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_table_cmds" ): - return visitor.visitAlter_table_cmds(self) - else: - return visitor.visitChildren(self) - - - - - def alter_table_cmds(self): - - localctx = PostgreSQLParser.Alter_table_cmdsContext(self, self._ctx, self.state) - self.enterRule(localctx, 98, self.RULE_alter_table_cmds) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2184 - self.alter_table_cmd() - self.state = 2189 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2185 - self.match(PostgreSQLParser.COMMA) - self.state = 2186 - self.alter_table_cmd() - self.state = 2191 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Partition_cmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ATTACH(self): - return self.getToken(PostgreSQLParser.ATTACH, 0) - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def partitionboundspec(self): - return self.getTypedRuleContext(PostgreSQLParser.PartitionboundspecContext,0) - - - def DETACH(self): - return self.getToken(PostgreSQLParser.DETACH, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_partition_cmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPartition_cmd" ): - listener.enterPartition_cmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPartition_cmd" ): - listener.exitPartition_cmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPartition_cmd" ): - return visitor.visitPartition_cmd(self) - else: - return visitor.visitChildren(self) - - - - - def partition_cmd(self): - - localctx = PostgreSQLParser.Partition_cmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 100, self.RULE_partition_cmd) - try: - self.state = 2200 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [435]: - self.enterOuterAlt(localctx, 1) - self.state = 2192 - self.match(PostgreSQLParser.ATTACH) - self.state = 2193 - self.match(PostgreSQLParser.PARTITION) - self.state = 2194 - self.qualified_name() - self.state = 2195 - self.partitionboundspec() - pass - elif token in [436]: - self.enterOuterAlt(localctx, 2) - self.state = 2197 - self.match(PostgreSQLParser.DETACH) - self.state = 2198 - self.match(PostgreSQLParser.PARTITION) - self.state = 2199 - self.qualified_name() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Index_partition_cmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ATTACH(self): - return self.getToken(PostgreSQLParser.ATTACH, 0) - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_index_partition_cmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndex_partition_cmd" ): - listener.enterIndex_partition_cmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndex_partition_cmd" ): - listener.exitIndex_partition_cmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndex_partition_cmd" ): - return visitor.visitIndex_partition_cmd(self) - else: - return visitor.visitChildren(self) - - - - - def index_partition_cmd(self): - - localctx = PostgreSQLParser.Index_partition_cmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 102, self.RULE_index_partition_cmd) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2202 - self.match(PostgreSQLParser.ATTACH) - self.state = 2203 - self.match(PostgreSQLParser.PARTITION) - self.state = 2204 - self.qualified_name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_table_cmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def columnDef(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnDefContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def opt_column(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_columnContext,0) - - - def colid(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ColidContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,i) - - - def alter_column_default(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_column_defaultContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def EXPRESSION(self): - return self.getToken(PostgreSQLParser.EXPRESSION, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ReloptionsContext,0) - - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def STORAGE(self): - return self.getToken(PostgreSQLParser.STORAGE, 0) - - def GENERATED(self): - return self.getToken(PostgreSQLParser.GENERATED, 0) - - def generated_when(self): - return self.getTypedRuleContext(PostgreSQLParser.Generated_whenContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def IDENTITY_P(self): - return self.getToken(PostgreSQLParser.IDENTITY_P, 0) - - def optparenthesizedseqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptparenthesizedseqoptlistContext,0) - - - def alter_identity_column_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_identity_column_option_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def opt_set_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_set_dataContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def opt_collate_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_collate_clauseContext,0) - - - def alter_using(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_usingContext,0) - - - def alter_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_optionsContext,0) - - - def tableconstraint(self): - return self.getTypedRuleContext(PostgreSQLParser.TableconstraintContext,0) - - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def constraintattributespec(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattributespecContext,0) - - - def VALIDATE(self): - return self.getToken(PostgreSQLParser.VALIDATE, 0) - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def OIDS(self): - return self.getToken(PostgreSQLParser.OIDS, 0) - - def CLUSTER(self): - return self.getToken(PostgreSQLParser.CLUSTER, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def LOGGED(self): - return self.getToken(PostgreSQLParser.LOGGED, 0) - - def UNLOGGED(self): - return self.getToken(PostgreSQLParser.UNLOGGED, 0) - - def ENABLE_P(self): - return self.getToken(PostgreSQLParser.ENABLE_P, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def ALWAYS(self): - return self.getToken(PostgreSQLParser.ALWAYS, 0) - - def REPLICA(self): - return self.getToken(PostgreSQLParser.REPLICA, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def DISABLE_P(self): - return self.getToken(PostgreSQLParser.DISABLE_P, 0) - - def RULE(self): - return self.getToken(PostgreSQLParser.RULE, 0) - - def INHERIT(self): - return self.getToken(PostgreSQLParser.INHERIT, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def OWNER(self): - return self.getToken(PostgreSQLParser.OWNER, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def replica_identity(self): - return self.getTypedRuleContext(PostgreSQLParser.Replica_identityContext,0) - - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def LEVEL(self): - return self.getToken(PostgreSQLParser.LEVEL, 0) - - def SECURITY(self): - return self.getToken(PostgreSQLParser.SECURITY, 0) - - def FORCE(self): - return self.getToken(PostgreSQLParser.FORCE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_table_cmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_table_cmd" ): - listener.enterAlter_table_cmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_table_cmd" ): - listener.exitAlter_table_cmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_table_cmd" ): - return visitor.visitAlter_table_cmd(self) - else: - return visitor.visitChildren(self) - - - - - def alter_table_cmd(self): - - localctx = PostgreSQLParser.Alter_table_cmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 104, self.RULE_alter_table_cmd) - try: - self.state = 2458 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,49,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2206 - self.match(PostgreSQLParser.ADD_P) - self.state = 2207 - self.columnDef() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2208 - self.match(PostgreSQLParser.ADD_P) - self.state = 2209 - self.match(PostgreSQLParser.IF_P) - self.state = 2210 - self.match(PostgreSQLParser.NOT) - self.state = 2211 - self.match(PostgreSQLParser.EXISTS) - self.state = 2212 - self.columnDef() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2213 - self.match(PostgreSQLParser.ADD_P) - self.state = 2214 - self.match(PostgreSQLParser.COLUMN) - self.state = 2215 - self.columnDef() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2216 - self.match(PostgreSQLParser.ADD_P) - self.state = 2217 - self.match(PostgreSQLParser.COLUMN) - self.state = 2218 - self.match(PostgreSQLParser.IF_P) - self.state = 2219 - self.match(PostgreSQLParser.NOT) - self.state = 2220 - self.match(PostgreSQLParser.EXISTS) - self.state = 2221 - self.columnDef() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2222 - self.match(PostgreSQLParser.ALTER) - self.state = 2223 - self.opt_column() - self.state = 2224 - self.colid() - self.state = 2225 - self.alter_column_default() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2227 - self.match(PostgreSQLParser.ALTER) - self.state = 2228 - self.opt_column() - self.state = 2229 - self.colid() - self.state = 2230 - self.match(PostgreSQLParser.DROP) - self.state = 2231 - self.match(PostgreSQLParser.NOT) - self.state = 2232 - self.match(PostgreSQLParser.NULL_P) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2234 - self.match(PostgreSQLParser.ALTER) - self.state = 2235 - self.opt_column() - self.state = 2236 - self.colid() - self.state = 2237 - self.match(PostgreSQLParser.SET) - self.state = 2238 - self.match(PostgreSQLParser.NOT) - self.state = 2239 - self.match(PostgreSQLParser.NULL_P) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 2241 - self.match(PostgreSQLParser.ALTER) - self.state = 2242 - self.opt_column() - self.state = 2243 - self.colid() - self.state = 2244 - self.match(PostgreSQLParser.DROP) - self.state = 2245 - self.match(PostgreSQLParser.EXPRESSION) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 2247 - self.match(PostgreSQLParser.ALTER) - self.state = 2248 - self.opt_column() - self.state = 2249 - self.colid() - self.state = 2250 - self.match(PostgreSQLParser.DROP) - self.state = 2251 - self.match(PostgreSQLParser.EXPRESSION) - self.state = 2252 - self.match(PostgreSQLParser.IF_P) - self.state = 2253 - self.match(PostgreSQLParser.EXISTS) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 2255 - self.match(PostgreSQLParser.ALTER) - self.state = 2256 - self.opt_column() - self.state = 2257 - self.colid() - self.state = 2258 - self.match(PostgreSQLParser.SET) - self.state = 2259 - self.match(PostgreSQLParser.STATISTICS) - self.state = 2260 - self.signediconst() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 2262 - self.match(PostgreSQLParser.ALTER) - self.state = 2263 - self.opt_column() - self.state = 2264 - self.iconst() - self.state = 2265 - self.match(PostgreSQLParser.SET) - self.state = 2266 - self.match(PostgreSQLParser.STATISTICS) - self.state = 2267 - self.signediconst() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 2269 - self.match(PostgreSQLParser.ALTER) - self.state = 2270 - self.opt_column() - self.state = 2271 - self.colid() - self.state = 2272 - self.match(PostgreSQLParser.SET) - self.state = 2273 - self.reloptions() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 2275 - self.match(PostgreSQLParser.ALTER) - self.state = 2276 - self.opt_column() - self.state = 2277 - self.colid() - self.state = 2278 - self.match(PostgreSQLParser.RESET) - self.state = 2279 - self.reloptions() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 2281 - self.match(PostgreSQLParser.ALTER) - self.state = 2282 - self.opt_column() - self.state = 2283 - self.colid() - self.state = 2284 - self.match(PostgreSQLParser.SET) - self.state = 2285 - self.match(PostgreSQLParser.STORAGE) - self.state = 2286 - self.colid() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 2288 - self.match(PostgreSQLParser.ALTER) - self.state = 2289 - self.opt_column() - self.state = 2290 - self.colid() - self.state = 2291 - self.match(PostgreSQLParser.ADD_P) - self.state = 2292 - self.match(PostgreSQLParser.GENERATED) - self.state = 2293 - self.generated_when() - self.state = 2294 - self.match(PostgreSQLParser.AS) - self.state = 2295 - self.match(PostgreSQLParser.IDENTITY_P) - self.state = 2296 - self.optparenthesizedseqoptlist() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 2298 - self.match(PostgreSQLParser.ALTER) - self.state = 2299 - self.opt_column() - self.state = 2300 - self.colid() - self.state = 2301 - self.alter_identity_column_option_list() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 2303 - self.match(PostgreSQLParser.ALTER) - self.state = 2304 - self.opt_column() - self.state = 2305 - self.colid() - self.state = 2306 - self.match(PostgreSQLParser.DROP) - self.state = 2307 - self.match(PostgreSQLParser.IDENTITY_P) - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 2309 - self.match(PostgreSQLParser.ALTER) - self.state = 2310 - self.opt_column() - self.state = 2311 - self.colid() - self.state = 2312 - self.match(PostgreSQLParser.DROP) - self.state = 2313 - self.match(PostgreSQLParser.IDENTITY_P) - self.state = 2314 - self.match(PostgreSQLParser.IF_P) - self.state = 2315 - self.match(PostgreSQLParser.EXISTS) - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 2317 - self.match(PostgreSQLParser.DROP) - self.state = 2318 - self.opt_column() - self.state = 2319 - self.match(PostgreSQLParser.IF_P) - self.state = 2320 - self.match(PostgreSQLParser.EXISTS) - self.state = 2321 - self.colid() - self.state = 2322 - self.opt_drop_behavior() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 2324 - self.match(PostgreSQLParser.DROP) - self.state = 2325 - self.opt_column() - self.state = 2326 - self.colid() - self.state = 2327 - self.opt_drop_behavior() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 2329 - self.match(PostgreSQLParser.ALTER) - self.state = 2330 - self.opt_column() - self.state = 2331 - self.colid() - self.state = 2332 - self.opt_set_data() - self.state = 2333 - self.match(PostgreSQLParser.TYPE_P) - self.state = 2334 - self.typename() - self.state = 2335 - self.opt_collate_clause() - self.state = 2336 - self.alter_using() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 2338 - self.match(PostgreSQLParser.ALTER) - self.state = 2339 - self.opt_column() - self.state = 2340 - self.colid() - self.state = 2341 - self.alter_generic_options() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 2343 - self.match(PostgreSQLParser.ADD_P) - self.state = 2344 - self.tableconstraint() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 2345 - self.match(PostgreSQLParser.ALTER) - self.state = 2346 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2347 - self.name() - self.state = 2348 - self.constraintattributespec() - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 2350 - self.match(PostgreSQLParser.VALIDATE) - self.state = 2351 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2352 - self.name() - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 2353 - self.match(PostgreSQLParser.DROP) - self.state = 2354 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2355 - self.match(PostgreSQLParser.IF_P) - self.state = 2356 - self.match(PostgreSQLParser.EXISTS) - self.state = 2357 - self.name() - self.state = 2358 - self.opt_drop_behavior() - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 2360 - self.match(PostgreSQLParser.DROP) - self.state = 2361 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2362 - self.name() - self.state = 2363 - self.opt_drop_behavior() - pass - - elif la_ == 28: - self.enterOuterAlt(localctx, 28) - self.state = 2365 - self.match(PostgreSQLParser.SET) - self.state = 2366 - self.match(PostgreSQLParser.WITHOUT) - self.state = 2367 - self.match(PostgreSQLParser.OIDS) - pass - - elif la_ == 29: - self.enterOuterAlt(localctx, 29) - self.state = 2368 - self.match(PostgreSQLParser.CLUSTER) - self.state = 2369 - self.match(PostgreSQLParser.ON) - self.state = 2370 - self.name() - pass - - elif la_ == 30: - self.enterOuterAlt(localctx, 30) - self.state = 2371 - self.match(PostgreSQLParser.SET) - self.state = 2372 - self.match(PostgreSQLParser.WITHOUT) - self.state = 2373 - self.match(PostgreSQLParser.CLUSTER) - pass - - elif la_ == 31: - self.enterOuterAlt(localctx, 31) - self.state = 2374 - self.match(PostgreSQLParser.SET) - self.state = 2375 - self.match(PostgreSQLParser.LOGGED) - pass - - elif la_ == 32: - self.enterOuterAlt(localctx, 32) - self.state = 2376 - self.match(PostgreSQLParser.SET) - self.state = 2377 - self.match(PostgreSQLParser.UNLOGGED) - pass - - elif la_ == 33: - self.enterOuterAlt(localctx, 33) - self.state = 2378 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2379 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2380 - self.name() - pass - - elif la_ == 34: - self.enterOuterAlt(localctx, 34) - self.state = 2381 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2382 - self.match(PostgreSQLParser.ALWAYS) - self.state = 2383 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2384 - self.name() - pass - - elif la_ == 35: - self.enterOuterAlt(localctx, 35) - self.state = 2385 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2386 - self.match(PostgreSQLParser.REPLICA) - self.state = 2387 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2388 - self.name() - pass - - elif la_ == 36: - self.enterOuterAlt(localctx, 36) - self.state = 2389 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2390 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2391 - self.match(PostgreSQLParser.ALL) - pass - - elif la_ == 37: - self.enterOuterAlt(localctx, 37) - self.state = 2392 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2393 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2394 - self.match(PostgreSQLParser.USER) - pass - - elif la_ == 38: - self.enterOuterAlt(localctx, 38) - self.state = 2395 - self.match(PostgreSQLParser.DISABLE_P) - self.state = 2396 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2397 - self.name() - pass - - elif la_ == 39: - self.enterOuterAlt(localctx, 39) - self.state = 2398 - self.match(PostgreSQLParser.DISABLE_P) - self.state = 2399 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2400 - self.match(PostgreSQLParser.ALL) - pass - - elif la_ == 40: - self.enterOuterAlt(localctx, 40) - self.state = 2401 - self.match(PostgreSQLParser.DISABLE_P) - self.state = 2402 - self.match(PostgreSQLParser.TRIGGER) - self.state = 2403 - self.match(PostgreSQLParser.USER) - pass - - elif la_ == 41: - self.enterOuterAlt(localctx, 41) - self.state = 2404 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2405 - self.match(PostgreSQLParser.RULE) - self.state = 2406 - self.name() - pass - - elif la_ == 42: - self.enterOuterAlt(localctx, 42) - self.state = 2407 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2408 - self.match(PostgreSQLParser.ALWAYS) - self.state = 2409 - self.match(PostgreSQLParser.RULE) - self.state = 2410 - self.name() - pass - - elif la_ == 43: - self.enterOuterAlt(localctx, 43) - self.state = 2411 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2412 - self.match(PostgreSQLParser.REPLICA) - self.state = 2413 - self.match(PostgreSQLParser.RULE) - self.state = 2414 - self.name() - pass - - elif la_ == 44: - self.enterOuterAlt(localctx, 44) - self.state = 2415 - self.match(PostgreSQLParser.DISABLE_P) - self.state = 2416 - self.match(PostgreSQLParser.RULE) - self.state = 2417 - self.name() - pass - - elif la_ == 45: - self.enterOuterAlt(localctx, 45) - self.state = 2418 - self.match(PostgreSQLParser.INHERIT) - self.state = 2419 - self.qualified_name() - pass - - elif la_ == 46: - self.enterOuterAlt(localctx, 46) - self.state = 2420 - self.match(PostgreSQLParser.NO) - self.state = 2421 - self.match(PostgreSQLParser.INHERIT) - self.state = 2422 - self.qualified_name() - pass - - elif la_ == 47: - self.enterOuterAlt(localctx, 47) - self.state = 2423 - self.match(PostgreSQLParser.OF) - self.state = 2424 - self.any_name() - pass - - elif la_ == 48: - self.enterOuterAlt(localctx, 48) - self.state = 2425 - self.match(PostgreSQLParser.NOT) - self.state = 2426 - self.match(PostgreSQLParser.OF) - pass - - elif la_ == 49: - self.enterOuterAlt(localctx, 49) - self.state = 2427 - self.match(PostgreSQLParser.OWNER) - self.state = 2428 - self.match(PostgreSQLParser.TO) - self.state = 2429 - self.rolespec() - pass - - elif la_ == 50: - self.enterOuterAlt(localctx, 50) - self.state = 2430 - self.match(PostgreSQLParser.SET) - self.state = 2431 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 2432 - self.name() - pass - - elif la_ == 51: - self.enterOuterAlt(localctx, 51) - self.state = 2433 - self.match(PostgreSQLParser.SET) - self.state = 2434 - self.reloptions() - pass - - elif la_ == 52: - self.enterOuterAlt(localctx, 52) - self.state = 2435 - self.match(PostgreSQLParser.RESET) - self.state = 2436 - self.reloptions() - pass - - elif la_ == 53: - self.enterOuterAlt(localctx, 53) - self.state = 2437 - self.match(PostgreSQLParser.REPLICA) - self.state = 2438 - self.match(PostgreSQLParser.IDENTITY_P) - self.state = 2439 - self.replica_identity() - pass - - elif la_ == 54: - self.enterOuterAlt(localctx, 54) - self.state = 2440 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 2441 - self.match(PostgreSQLParser.ROW) - self.state = 2442 - self.match(PostgreSQLParser.LEVEL) - self.state = 2443 - self.match(PostgreSQLParser.SECURITY) - pass - - elif la_ == 55: - self.enterOuterAlt(localctx, 55) - self.state = 2444 - self.match(PostgreSQLParser.DISABLE_P) - self.state = 2445 - self.match(PostgreSQLParser.ROW) - self.state = 2446 - self.match(PostgreSQLParser.LEVEL) - self.state = 2447 - self.match(PostgreSQLParser.SECURITY) - pass - - elif la_ == 56: - self.enterOuterAlt(localctx, 56) - self.state = 2448 - self.match(PostgreSQLParser.FORCE) - self.state = 2449 - self.match(PostgreSQLParser.ROW) - self.state = 2450 - self.match(PostgreSQLParser.LEVEL) - self.state = 2451 - self.match(PostgreSQLParser.SECURITY) - pass - - elif la_ == 57: - self.enterOuterAlt(localctx, 57) - self.state = 2452 - self.match(PostgreSQLParser.NO) - self.state = 2453 - self.match(PostgreSQLParser.FORCE) - self.state = 2454 - self.match(PostgreSQLParser.ROW) - self.state = 2455 - self.match(PostgreSQLParser.LEVEL) - self.state = 2456 - self.match(PostgreSQLParser.SECURITY) - pass - - elif la_ == 58: - self.enterOuterAlt(localctx, 58) - self.state = 2457 - self.alter_generic_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_column_defaultContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_column_default - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_column_default" ): - listener.enterAlter_column_default(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_column_default" ): - listener.exitAlter_column_default(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_column_default" ): - return visitor.visitAlter_column_default(self) - else: - return visitor.visitChildren(self) - - - - - def alter_column_default(self): - - localctx = PostgreSQLParser.Alter_column_defaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 106, self.RULE_alter_column_default) - try: - self.state = 2465 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [326]: - self.enterOuterAlt(localctx, 1) - self.state = 2460 - self.match(PostgreSQLParser.SET) - self.state = 2461 - self.match(PostgreSQLParser.DEFAULT) - self.state = 2462 - self.a_expr() - pass - elif token in [191]: - self.enterOuterAlt(localctx, 2) - self.state = 2463 - self.match(PostgreSQLParser.DROP) - self.state = 2464 - self.match(PostgreSQLParser.DEFAULT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_drop_behaviorContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CASCADE(self): - return self.getToken(PostgreSQLParser.CASCADE, 0) - - def RESTRICT(self): - return self.getToken(PostgreSQLParser.RESTRICT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_drop_behavior - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_drop_behavior" ): - listener.enterOpt_drop_behavior(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_drop_behavior" ): - listener.exitOpt_drop_behavior(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_drop_behavior" ): - return visitor.visitOpt_drop_behavior(self) - else: - return visitor.visitChildren(self) - - - - - def opt_drop_behavior(self): - - localctx = PostgreSQLParser.Opt_drop_behaviorContext(self, self._ctx, self.state) - self.enterRule(localctx, 108, self.RULE_opt_drop_behavior) - try: - self.state = 2470 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [150]: - self.enterOuterAlt(localctx, 1) - self.state = 2467 - self.match(PostgreSQLParser.CASCADE) - pass - elif token in [308]: - self.enterOuterAlt(localctx, 2) - self.state = 2468 - self.match(PostgreSQLParser.RESTRICT) - pass - elif token in [-1, 2, 6, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_collate_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_collate_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_collate_clause" ): - listener.enterOpt_collate_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_collate_clause" ): - listener.exitOpt_collate_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_collate_clause" ): - return visitor.visitOpt_collate_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_collate_clause(self): - - localctx = PostgreSQLParser.Opt_collate_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 110, self.RULE_opt_collate_clause) - try: - self.state = 2475 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [43]: - self.enterOuterAlt(localctx, 1) - self.state = 2472 - self.match(PostgreSQLParser.COLLATE) - self.state = 2473 - self.any_name() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 100, 105, 129, 138, 146, 150, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 308, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_usingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_using - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_using" ): - listener.enterAlter_using(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_using" ): - listener.exitAlter_using(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_using" ): - return visitor.visitAlter_using(self) - else: - return visitor.visitChildren(self) - - - - - def alter_using(self): - - localctx = PostgreSQLParser.Alter_usingContext(self, self._ctx, self.state) - self.enterRule(localctx, 112, self.RULE_alter_using) - try: - self.state = 2480 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 2477 - self.match(PostgreSQLParser.USING) - self.state = 2478 - self.a_expr() - pass - elif token in [-1, 2, 6, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Replica_identityContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOTHING(self): - return self.getToken(PostgreSQLParser.NOTHING, 0) - - def FULL(self): - return self.getToken(PostgreSQLParser.FULL, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_replica_identity - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReplica_identity" ): - listener.enterReplica_identity(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReplica_identity" ): - listener.exitReplica_identity(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReplica_identity" ): - return visitor.visitReplica_identity(self) - else: - return visitor.visitChildren(self) - - - - - def replica_identity(self): - - localctx = PostgreSQLParser.Replica_identityContext(self, self._ctx, self.state) - self.enterRule(localctx, 114, self.RULE_replica_identity) - try: - self.state = 2488 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [263]: - self.enterOuterAlt(localctx, 1) - self.state = 2482 - self.match(PostgreSQLParser.NOTHING) - pass - elif token in [113]: - self.enterOuterAlt(localctx, 2) - self.state = 2483 - self.match(PostgreSQLParser.FULL) - pass - elif token in [53]: - self.enterOuterAlt(localctx, 3) - self.state = 2484 - self.match(PostgreSQLParser.DEFAULT) - pass - elif token in [100]: - self.enterOuterAlt(localctx, 4) - self.state = 2485 - self.match(PostgreSQLParser.USING) - self.state = 2486 - self.match(PostgreSQLParser.INDEX) - self.state = 2487 - self.name() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReloptionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def reloption_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Reloption_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reloptions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReloptions" ): - listener.enterReloptions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReloptions" ): - listener.exitReloptions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReloptions" ): - return visitor.visitReloptions(self) - else: - return visitor.visitChildren(self) - - - - - def reloptions(self): - - localctx = PostgreSQLParser.ReloptionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 116, self.RULE_reloptions) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2490 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2491 - self.reloption_list() - self.state = 2492 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_reloptionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ReloptionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_reloptions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_reloptions" ): - listener.enterOpt_reloptions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_reloptions" ): - listener.exitOpt_reloptions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_reloptions" ): - return visitor.visitOpt_reloptions(self) - else: - return visitor.visitChildren(self) - - - - - def opt_reloptions(self): - - localctx = PostgreSQLParser.Opt_reloptionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 118, self.RULE_opt_reloptions) - try: - self.state = 2497 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,55,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2494 - self.match(PostgreSQLParser.WITH) - self.state = 2495 - self.reloptions() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reloption_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def reloption_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Reloption_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Reloption_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reloption_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReloption_list" ): - listener.enterReloption_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReloption_list" ): - listener.exitReloption_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReloption_list" ): - return visitor.visitReloption_list(self) - else: - return visitor.visitChildren(self) - - - - - def reloption_list(self): - - localctx = PostgreSQLParser.Reloption_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 120, self.RULE_reloption_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2499 - self.reloption_elem() - self.state = 2504 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2500 - self.match(PostgreSQLParser.COMMA) - self.state = 2501 - self.reloption_elem() - self.state = 2506 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reloption_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.CollabelContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,i) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def def_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Def_argContext,0) - - - def DOT(self): - return self.getToken(PostgreSQLParser.DOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reloption_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReloption_elem" ): - listener.enterReloption_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReloption_elem" ): - listener.exitReloption_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReloption_elem" ): - return visitor.visitReloption_elem(self) - else: - return visitor.visitChildren(self) - - - - - def reloption_elem(self): - - localctx = PostgreSQLParser.Reloption_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 122, self.RULE_reloption_elem) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2507 - self.collabel() - self.state = 2516 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [10]: - self.state = 2508 - self.match(PostgreSQLParser.EQUAL) - self.state = 2509 - self.def_arg() - pass - elif token in [11]: - self.state = 2510 - self.match(PostgreSQLParser.DOT) - self.state = 2511 - self.collabel() - self.state = 2514 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==10: - self.state = 2512 - self.match(PostgreSQLParser.EQUAL) - self.state = 2513 - self.def_arg() - - - pass - elif token in [3, 6]: - pass - else: - pass - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_identity_column_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alter_identity_column_option(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alter_identity_column_optionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alter_identity_column_optionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_identity_column_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_identity_column_option_list" ): - listener.enterAlter_identity_column_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_identity_column_option_list" ): - listener.exitAlter_identity_column_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_identity_column_option_list" ): - return visitor.visitAlter_identity_column_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def alter_identity_column_option_list(self): - - localctx = PostgreSQLParser.Alter_identity_column_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 124, self.RULE_alter_identity_column_option_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2519 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 2518 - self.alter_identity_column_option() - - else: - raise NoViableAltException(self) - self.state = 2521 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,59,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_identity_column_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RESTART(self): - return self.getToken(PostgreSQLParser.RESTART, 0) - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def seqoptelem(self): - return self.getTypedRuleContext(PostgreSQLParser.SeqoptelemContext,0) - - - def GENERATED(self): - return self.getToken(PostgreSQLParser.GENERATED, 0) - - def generated_when(self): - return self.getTypedRuleContext(PostgreSQLParser.Generated_whenContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_identity_column_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_identity_column_option" ): - listener.enterAlter_identity_column_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_identity_column_option" ): - listener.exitAlter_identity_column_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_identity_column_option" ): - return visitor.visitAlter_identity_column_option(self) - else: - return visitor.visitChildren(self) - - - - - def alter_identity_column_option(self): - - localctx = PostgreSQLParser.Alter_identity_column_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 126, self.RULE_alter_identity_column_option) - try: - self.state = 2535 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [307]: - self.enterOuterAlt(localctx, 1) - self.state = 2523 - self.match(PostgreSQLParser.RESTART) - self.state = 2527 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,60,self._ctx) - if la_ == 1: - self.state = 2524 - self.opt_with() - self.state = 2525 - self.numericonly() - - - pass - elif token in [326]: - self.enterOuterAlt(localctx, 2) - self.state = 2529 - self.match(PostgreSQLParser.SET) - self.state = 2533 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36, 148, 173, 225, 252, 255, 262, 274, 307, 321, 333]: - self.state = 2530 - self.seqoptelem() - pass - elif token in [438]: - self.state = 2531 - self.match(PostgreSQLParser.GENERATED) - self.state = 2532 - self.generated_when() - pass - else: - raise NoViableAltException(self) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PartitionboundspecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def VALUES(self): - return self.getToken(PostgreSQLParser.VALUES, 0) - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def OPEN_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OPEN_PAREN) - else: - return self.getToken(PostgreSQLParser.OPEN_PAREN, i) - - def hash_partbound(self): - return self.getTypedRuleContext(PostgreSQLParser.Hash_partboundContext,0) - - - def CLOSE_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CLOSE_PAREN) - else: - return self.getToken(PostgreSQLParser.CLOSE_PAREN, i) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def expr_list(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Expr_listContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,i) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_partitionboundspec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPartitionboundspec" ): - listener.enterPartitionboundspec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPartitionboundspec" ): - listener.exitPartitionboundspec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPartitionboundspec" ): - return visitor.visitPartitionboundspec(self) - else: - return visitor.visitChildren(self) - - - - - def partitionboundspec(self): - - localctx = PostgreSQLParser.PartitionboundspecContext(self, self._ctx, self.state) - self.enterRule(localctx, 128, self.RULE_partitionboundspec) - try: - self.state = 2563 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,63,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2537 - self.match(PostgreSQLParser.FOR) - self.state = 2538 - self.match(PostgreSQLParser.VALUES) - self.state = 2539 - self.match(PostgreSQLParser.WITH) - self.state = 2540 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2541 - self.hash_partbound() - self.state = 2542 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2544 - self.match(PostgreSQLParser.FOR) - self.state = 2545 - self.match(PostgreSQLParser.VALUES) - self.state = 2546 - self.match(PostgreSQLParser.IN_P) - self.state = 2547 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2548 - self.expr_list() - self.state = 2549 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2551 - self.match(PostgreSQLParser.FOR) - self.state = 2552 - self.match(PostgreSQLParser.VALUES) - self.state = 2553 - self.match(PostgreSQLParser.FROM) - self.state = 2554 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2555 - self.expr_list() - self.state = 2556 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2557 - self.match(PostgreSQLParser.TO) - self.state = 2558 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2559 - self.expr_list() - self.state = 2560 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2562 - self.match(PostgreSQLParser.DEFAULT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Hash_partbound_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonreservedword(self): - return self.getTypedRuleContext(PostgreSQLParser.NonreservedwordContext,0) - - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_hash_partbound_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHash_partbound_elem" ): - listener.enterHash_partbound_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHash_partbound_elem" ): - listener.exitHash_partbound_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHash_partbound_elem" ): - return visitor.visitHash_partbound_elem(self) - else: - return visitor.visitChildren(self) - - - - - def hash_partbound_elem(self): - - localctx = PostgreSQLParser.Hash_partbound_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 130, self.RULE_hash_partbound_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2565 - self.nonreservedword() - self.state = 2566 - self.iconst() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Hash_partboundContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def hash_partbound_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Hash_partbound_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Hash_partbound_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_hash_partbound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHash_partbound" ): - listener.enterHash_partbound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHash_partbound" ): - listener.exitHash_partbound(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHash_partbound" ): - return visitor.visitHash_partbound(self) - else: - return visitor.visitChildren(self) - - - - - def hash_partbound(self): - - localctx = PostgreSQLParser.Hash_partboundContext(self, self._ctx, self.state) - self.enterRule(localctx, 132, self.RULE_hash_partbound) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2568 - self.hash_partbound_elem() - self.state = 2573 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2569 - self.match(PostgreSQLParser.COMMA) - self.state = 2570 - self.hash_partbound_elem() - self.state = 2575 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltercompositetypestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def alter_type_cmds(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_type_cmdsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altercompositetypestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltercompositetypestmt" ): - listener.enterAltercompositetypestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltercompositetypestmt" ): - listener.exitAltercompositetypestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltercompositetypestmt" ): - return visitor.visitAltercompositetypestmt(self) - else: - return visitor.visitChildren(self) - - - - - def altercompositetypestmt(self): - - localctx = PostgreSQLParser.AltercompositetypestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 134, self.RULE_altercompositetypestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2576 - self.match(PostgreSQLParser.ALTER) - self.state = 2577 - self.match(PostgreSQLParser.TYPE_P) - self.state = 2578 - self.any_name() - self.state = 2579 - self.alter_type_cmds() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_type_cmdsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alter_type_cmd(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alter_type_cmdContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alter_type_cmdContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_type_cmds - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_type_cmds" ): - listener.enterAlter_type_cmds(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_type_cmds" ): - listener.exitAlter_type_cmds(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_type_cmds" ): - return visitor.visitAlter_type_cmds(self) - else: - return visitor.visitChildren(self) - - - - - def alter_type_cmds(self): - - localctx = PostgreSQLParser.Alter_type_cmdsContext(self, self._ctx, self.state) - self.enterRule(localctx, 136, self.RULE_alter_type_cmds) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2581 - self.alter_type_cmd() - self.state = 2586 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2582 - self.match(PostgreSQLParser.COMMA) - self.state = 2583 - self.alter_type_cmd() - self.state = 2588 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_type_cmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def ATTRIBUTE(self): - return self.getToken(PostgreSQLParser.ATTRIBUTE, 0) - - def tablefuncelement(self): - return self.getTypedRuleContext(PostgreSQLParser.TablefuncelementContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def opt_set_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_set_dataContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def opt_collate_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_collate_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_type_cmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_type_cmd" ): - listener.enterAlter_type_cmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_type_cmd" ): - listener.exitAlter_type_cmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_type_cmd" ): - return visitor.visitAlter_type_cmd(self) - else: - return visitor.visitChildren(self) - - - - - def alter_type_cmd(self): - - localctx = PostgreSQLParser.Alter_type_cmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 138, self.RULE_alter_type_cmd) - try: - self.state = 2612 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [133]: - self.enterOuterAlt(localctx, 1) - self.state = 2589 - self.match(PostgreSQLParser.ADD_P) - self.state = 2590 - self.match(PostgreSQLParser.ATTRIBUTE) - self.state = 2591 - self.tablefuncelement() - self.state = 2592 - self.opt_drop_behavior() - pass - elif token in [191]: - self.enterOuterAlt(localctx, 2) - self.state = 2594 - self.match(PostgreSQLParser.DROP) - self.state = 2595 - self.match(PostgreSQLParser.ATTRIBUTE) - self.state = 2598 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,66,self._ctx) - if la_ == 1: - self.state = 2596 - self.match(PostgreSQLParser.IF_P) - self.state = 2597 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2600 - self.colid() - self.state = 2601 - self.opt_drop_behavior() - pass - elif token in [138]: - self.enterOuterAlt(localctx, 3) - self.state = 2603 - self.match(PostgreSQLParser.ALTER) - self.state = 2604 - self.match(PostgreSQLParser.ATTRIBUTE) - self.state = 2605 - self.colid() - self.state = 2606 - self.opt_set_data() - self.state = 2607 - self.match(PostgreSQLParser.TYPE_P) - self.state = 2608 - self.typename() - self.state = 2609 - self.opt_collate_clause() - self.state = 2610 - self.opt_drop_behavior() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CloseportalstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CLOSE(self): - return self.getToken(PostgreSQLParser.CLOSE, 0) - - def cursor_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_nameContext,0) - - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_closeportalstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCloseportalstmt" ): - listener.enterCloseportalstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCloseportalstmt" ): - listener.exitCloseportalstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCloseportalstmt" ): - return visitor.visitCloseportalstmt(self) - else: - return visitor.visitChildren(self) - - - - - def closeportalstmt(self): - - localctx = PostgreSQLParser.CloseportalstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 140, self.RULE_closeportalstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2614 - self.match(PostgreSQLParser.CLOSE) - self.state = 2617 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 2615 - self.cursor_name() - pass - elif token in [30]: - self.state = 2616 - self.match(PostgreSQLParser.ALL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CopystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COPY(self): - return self.getToken(PostgreSQLParser.COPY, 0) - - def opt_binary(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_binaryContext,0) - - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def copy_from(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_fromContext,0) - - - def opt_program(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_programContext,0) - - - def copy_file_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_file_nameContext,0) - - - def copy_delimiter(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_delimiterContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def copy_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_optionsContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def preparablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.PreparablestmtContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopystmt" ): - listener.enterCopystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopystmt" ): - listener.exitCopystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopystmt" ): - return visitor.visitCopystmt(self) - else: - return visitor.visitChildren(self) - - - - - def copystmt(self): - - localctx = PostgreSQLParser.CopystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 142, self.RULE_copystmt) - try: - self.state = 2641 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,69,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2619 - self.match(PostgreSQLParser.COPY) - self.state = 2620 - self.opt_binary() - self.state = 2621 - self.qualified_name() - self.state = 2622 - self.opt_column_list() - self.state = 2623 - self.copy_from() - self.state = 2624 - self.opt_program() - self.state = 2625 - self.copy_file_name() - self.state = 2626 - self.copy_delimiter() - self.state = 2627 - self.opt_with() - self.state = 2628 - self.copy_options() - self.state = 2629 - self.where_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2631 - self.match(PostgreSQLParser.COPY) - self.state = 2632 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2633 - self.preparablestmt() - self.state = 2634 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2635 - self.match(PostgreSQLParser.TO) - self.state = 2636 - self.opt_program() - self.state = 2637 - self.copy_file_name() - self.state = 2638 - self.opt_with() - self.state = 2639 - self.copy_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_fromContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_from - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_from" ): - listener.enterCopy_from(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_from" ): - listener.exitCopy_from(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_from" ): - return visitor.visitCopy_from(self) - else: - return visitor.visitChildren(self) - - - - - def copy_from(self): - - localctx = PostgreSQLParser.Copy_fromContext(self, self._ctx, self.state) - self.enterRule(localctx, 144, self.RULE_copy_from) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2643 - _la = self._input.LA(1) - if not(_la==64 or _la==94): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_programContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PROGRAM(self): - return self.getToken(PostgreSQLParser.PROGRAM, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_program - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_program" ): - listener.enterOpt_program(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_program" ): - listener.exitOpt_program(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_program" ): - return visitor.visitOpt_program(self) - else: - return visitor.visitChildren(self) - - - - - def opt_program(self): - - localctx = PostgreSQLParser.Opt_programContext(self, self._ctx, self.state) - self.enterRule(localctx, 146, self.RULE_opt_program) - try: - self.state = 2647 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [290]: - self.enterOuterAlt(localctx, 1) - self.state = 2645 - self.match(PostgreSQLParser.PROGRAM) - pass - elif token in [336, 337, 645, 647, 649, 671]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_file_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def STDIN(self): - return self.getToken(PostgreSQLParser.STDIN, 0) - - def STDOUT(self): - return self.getToken(PostgreSQLParser.STDOUT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_file_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_file_name" ): - listener.enterCopy_file_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_file_name" ): - listener.exitCopy_file_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_file_name" ): - return visitor.visitCopy_file_name(self) - else: - return visitor.visitChildren(self) - - - - - def copy_file_name(self): - - localctx = PostgreSQLParser.Copy_file_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 148, self.RULE_copy_file_name) - try: - self.state = 2652 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 2649 - self.sconst() - pass - elif token in [336]: - self.enterOuterAlt(localctx, 2) - self.state = 2650 - self.match(PostgreSQLParser.STDIN) - pass - elif token in [337]: - self.enterOuterAlt(localctx, 3) - self.state = 2651 - self.match(PostgreSQLParser.STDOUT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def copy_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_opt_listContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def copy_generic_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_generic_opt_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_options" ): - listener.enterCopy_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_options" ): - listener.exitCopy_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_options" ): - return visitor.visitCopy_options(self) - else: - return visitor.visitChildren(self) - - - - - def copy_options(self): - - localctx = PostgreSQLParser.Copy_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 150, self.RULE_copy_options) - try: - self.state = 2659 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,72,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2654 - self.copy_opt_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2655 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2656 - self.copy_generic_opt_list() - self.state = 2657 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def copy_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Copy_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Copy_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_opt_list" ): - listener.enterCopy_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_opt_list" ): - listener.exitCopy_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_opt_list" ): - return visitor.visitCopy_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def copy_opt_list(self): - - localctx = PostgreSQLParser.Copy_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 152, self.RULE_copy_opt_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2664 - self._errHandler.sync(self) - _la = self._input.LA(1) - while ((((_la - 78)) & ~0x3f) == 0 and ((1 << (_la - 78)) & 17716740097) != 0) or ((((_la - 171)) & ~0x3f) == 0 and ((1 << (_la - 171)) & 35459325497345) != 0) or _la==291: - self.state = 2661 - self.copy_opt_item() - self.state = 2666 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BINARY(self): - return self.getToken(PostgreSQLParser.BINARY, 0) - - def FREEZE(self): - return self.getToken(PostgreSQLParser.FREEZE, 0) - - def DELIMITER(self): - return self.getToken(PostgreSQLParser.DELIMITER, 0) - - def opt_as(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_asContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def CSV(self): - return self.getToken(PostgreSQLParser.CSV, 0) - - def HEADER_P(self): - return self.getToken(PostgreSQLParser.HEADER_P, 0) - - def QUOTE(self): - return self.getToken(PostgreSQLParser.QUOTE, 0) - - def ESCAPE(self): - return self.getToken(PostgreSQLParser.ESCAPE, 0) - - def FORCE(self): - return self.getToken(PostgreSQLParser.FORCE, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def ENCODING(self): - return self.getToken(PostgreSQLParser.ENCODING, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_opt_item" ): - listener.enterCopy_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_opt_item" ): - listener.exitCopy_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_opt_item" ): - return visitor.visitCopy_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def copy_opt_item(self): - - localctx = PostgreSQLParser.Copy_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 154, self.RULE_copy_opt_item) - try: - self.state = 2702 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,74,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2667 - self.match(PostgreSQLParser.BINARY) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2668 - self.match(PostgreSQLParser.FREEZE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2669 - self.match(PostgreSQLParser.DELIMITER) - self.state = 2670 - self.opt_as() - self.state = 2671 - self.sconst() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2673 - self.match(PostgreSQLParser.NULL_P) - self.state = 2674 - self.opt_as() - self.state = 2675 - self.sconst() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 2677 - self.match(PostgreSQLParser.CSV) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 2678 - self.match(PostgreSQLParser.HEADER_P) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 2679 - self.match(PostgreSQLParser.QUOTE) - self.state = 2680 - self.opt_as() - self.state = 2681 - self.sconst() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 2683 - self.match(PostgreSQLParser.ESCAPE) - self.state = 2684 - self.opt_as() - self.state = 2685 - self.sconst() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 2687 - self.match(PostgreSQLParser.FORCE) - self.state = 2688 - self.match(PostgreSQLParser.QUOTE) - self.state = 2689 - self.columnlist() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 2690 - self.match(PostgreSQLParser.FORCE) - self.state = 2691 - self.match(PostgreSQLParser.QUOTE) - self.state = 2692 - self.match(PostgreSQLParser.STAR) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 2693 - self.match(PostgreSQLParser.FORCE) - self.state = 2694 - self.match(PostgreSQLParser.NOT) - self.state = 2695 - self.match(PostgreSQLParser.NULL_P) - self.state = 2696 - self.columnlist() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 2697 - self.match(PostgreSQLParser.FORCE) - self.state = 2698 - self.match(PostgreSQLParser.NULL_P) - self.state = 2699 - self.columnlist() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 2700 - self.match(PostgreSQLParser.ENCODING) - self.state = 2701 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_binaryContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BINARY(self): - return self.getToken(PostgreSQLParser.BINARY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_binary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_binary" ): - listener.enterOpt_binary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_binary" ): - listener.exitOpt_binary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_binary" ): - return visitor.visitOpt_binary(self) - else: - return visitor.visitChildren(self) - - - - - def opt_binary(self): - - localctx = PostgreSQLParser.Opt_binaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 156, self.RULE_opt_binary) - try: - self.state = 2706 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [107]: - self.enterOuterAlt(localctx, 1) - self.state = 2704 - self.match(PostgreSQLParser.BINARY) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_delimiterContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_using(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_usingContext,0) - - - def DELIMITERS(self): - return self.getToken(PostgreSQLParser.DELIMITERS, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_delimiter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_delimiter" ): - listener.enterCopy_delimiter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_delimiter" ): - listener.exitCopy_delimiter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_delimiter" ): - return visitor.visitCopy_delimiter(self) - else: - return visitor.visitChildren(self) - - - - - def copy_delimiter(self): - - localctx = PostgreSQLParser.Copy_delimiterContext(self, self._ctx, self.state) - self.enterRule(localctx, 158, self.RULE_copy_delimiter) - try: - self.state = 2713 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100, 184]: - self.enterOuterAlt(localctx, 1) - self.state = 2708 - self.opt_using() - self.state = 2709 - self.match(PostgreSQLParser.DELIMITERS) - self.state = 2710 - self.sconst() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 78, 88, 92, 103, 105, 107, 112, 129, 138, 146, 155, 157, 158, 159, 161, 169, 171, 177, 178, 182, 183, 187, 191, 194, 197, 202, 203, 209, 216, 232, 243, 244, 247, 253, 258, 264, 283, 291, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_usingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_using - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_using" ): - listener.enterOpt_using(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_using" ): - listener.exitOpt_using(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_using" ): - return visitor.visitOpt_using(self) - else: - return visitor.visitChildren(self) - - - - - def opt_using(self): - - localctx = PostgreSQLParser.Opt_usingContext(self, self._ctx, self.state) - self.enterRule(localctx, 160, self.RULE_opt_using) - try: - self.state = 2717 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 2715 - self.match(PostgreSQLParser.USING) - pass - elif token in [184]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_generic_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def copy_generic_opt_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Copy_generic_opt_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Copy_generic_opt_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_generic_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_generic_opt_list" ): - listener.enterCopy_generic_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_generic_opt_list" ): - listener.exitCopy_generic_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_generic_opt_list" ): - return visitor.visitCopy_generic_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def copy_generic_opt_list(self): - - localctx = PostgreSQLParser.Copy_generic_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 162, self.RULE_copy_generic_opt_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2719 - self.copy_generic_opt_elem() - self.state = 2724 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2720 - self.match(PostgreSQLParser.COMMA) - self.state = 2721 - self.copy_generic_opt_elem() - self.state = 2726 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_generic_opt_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def copy_generic_opt_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_generic_opt_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_generic_opt_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_generic_opt_elem" ): - listener.enterCopy_generic_opt_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_generic_opt_elem" ): - listener.exitCopy_generic_opt_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_generic_opt_elem" ): - return visitor.visitCopy_generic_opt_elem(self) - else: - return visitor.visitChildren(self) - - - - - def copy_generic_opt_elem(self): - - localctx = PostgreSQLParser.Copy_generic_opt_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 164, self.RULE_copy_generic_opt_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2727 - self.collabel() - self.state = 2728 - self.copy_generic_opt_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_generic_opt_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def copy_generic_opt_arg_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Copy_generic_opt_arg_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_generic_opt_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_generic_opt_arg" ): - listener.enterCopy_generic_opt_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_generic_opt_arg" ): - listener.exitCopy_generic_opt_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_generic_opt_arg" ): - return visitor.visitCopy_generic_opt_arg(self) - else: - return visitor.visitChildren(self) - - - - - def copy_generic_opt_arg(self): - - localctx = PostgreSQLParser.Copy_generic_opt_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 166, self.RULE_copy_generic_opt_arg) - try: - self.state = 2738 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 60, 61, 80, 92, 96, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 2730 - self.opt_boolean_or_string() - pass - elif token in [12, 13, 658, 660]: - self.enterOuterAlt(localctx, 2) - self.state = 2731 - self.numericonly() - pass - elif token in [9]: - self.enterOuterAlt(localctx, 3) - self.state = 2732 - self.match(PostgreSQLParser.STAR) - pass - elif token in [2]: - self.enterOuterAlt(localctx, 4) - self.state = 2733 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2734 - self.copy_generic_opt_arg_list() - self.state = 2735 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [3, 6]: - self.enterOuterAlt(localctx, 5) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_generic_opt_arg_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def copy_generic_opt_arg_list_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Copy_generic_opt_arg_list_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Copy_generic_opt_arg_list_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_generic_opt_arg_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_generic_opt_arg_list" ): - listener.enterCopy_generic_opt_arg_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_generic_opt_arg_list" ): - listener.exitCopy_generic_opt_arg_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_generic_opt_arg_list" ): - return visitor.visitCopy_generic_opt_arg_list(self) - else: - return visitor.visitChildren(self) - - - - - def copy_generic_opt_arg_list(self): - - localctx = PostgreSQLParser.Copy_generic_opt_arg_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 168, self.RULE_copy_generic_opt_arg_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2740 - self.copy_generic_opt_arg_list_item() - self.state = 2745 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2741 - self.match(PostgreSQLParser.COMMA) - self.state = 2742 - self.copy_generic_opt_arg_list_item() - self.state = 2747 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Copy_generic_opt_arg_list_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_copy_generic_opt_arg_list_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCopy_generic_opt_arg_list_item" ): - listener.enterCopy_generic_opt_arg_list_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCopy_generic_opt_arg_list_item" ): - listener.exitCopy_generic_opt_arg_list_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCopy_generic_opt_arg_list_item" ): - return visitor.visitCopy_generic_opt_arg_list_item(self) - else: - return visitor.visitChildren(self) - - - - - def copy_generic_opt_arg_list_item(self): - - localctx = PostgreSQLParser.Copy_generic_opt_arg_list_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 170, self.RULE_copy_generic_opt_arg_list_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2748 - self.opt_boolean_or_string() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opttemp(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def qualified_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Qualified_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,i) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opttableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttableelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def optinherit(self): - return self.getTypedRuleContext(PostgreSQLParser.OptinheritContext,0) - - - def optpartitionspec(self): - return self.getTypedRuleContext(PostgreSQLParser.OptpartitionspecContext,0) - - - def table_access_method_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_access_method_clauseContext,0) - - - def optwith(self): - return self.getTypedRuleContext(PostgreSQLParser.OptwithContext,0) - - - def oncommitoption(self): - return self.getTypedRuleContext(PostgreSQLParser.OncommitoptionContext,0) - - - def opttablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablespaceContext,0) - - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def opttypedtableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttypedtableelementlistContext,0) - - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def partitionboundspec(self): - return self.getTypedRuleContext(PostgreSQLParser.PartitionboundspecContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatestmt" ): - listener.enterCreatestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatestmt" ): - listener.exitCreatestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatestmt" ): - return visitor.visitCreatestmt(self) - else: - return visitor.visitChildren(self) - - - - - def createstmt(self): - - localctx = PostgreSQLParser.CreatestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 172, self.RULE_createstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2750 - self.match(PostgreSQLParser.CREATE) - self.state = 2751 - self.opttemp() - self.state = 2752 - self.match(PostgreSQLParser.TABLE) - self.state = 2756 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,81,self._ctx) - if la_ == 1: - self.state = 2753 - self.match(PostgreSQLParser.IF_P) - self.state = 2754 - self.match(PostgreSQLParser.NOT) - self.state = 2755 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 2758 - self.qualified_name() - self.state = 2789 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 2759 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2760 - self.opttableelementlist() - self.state = 2761 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2762 - self.optinherit() - self.state = 2763 - self.optpartitionspec() - self.state = 2764 - self.table_access_method_clause() - self.state = 2765 - self.optwith() - self.state = 2766 - self.oncommitoption() - self.state = 2767 - self.opttablespace() - pass - elif token in [268]: - self.state = 2769 - self.match(PostgreSQLParser.OF) - self.state = 2770 - self.any_name() - self.state = 2771 - self.opttypedtableelementlist() - self.state = 2772 - self.optpartitionspec() - self.state = 2773 - self.table_access_method_clause() - self.state = 2774 - self.optwith() - self.state = 2775 - self.oncommitoption() - self.state = 2776 - self.opttablespace() - pass - elif token in [278]: - self.state = 2778 - self.match(PostgreSQLParser.PARTITION) - self.state = 2779 - self.match(PostgreSQLParser.OF) - self.state = 2780 - self.qualified_name() - self.state = 2781 - self.opttypedtableelementlist() - self.state = 2782 - self.partitionboundspec() - self.state = 2783 - self.optpartitionspec() - self.state = 2784 - self.table_access_method_clause() - self.state = 2785 - self.optwith() - self.state = 2786 - self.oncommitoption() - self.state = 2787 - self.opttablespace() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttempContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TEMPORARY(self): - return self.getToken(PostgreSQLParser.TEMPORARY, 0) - - def TEMP(self): - return self.getToken(PostgreSQLParser.TEMP, 0) - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def GLOBAL(self): - return self.getToken(PostgreSQLParser.GLOBAL, 0) - - def UNLOGGED(self): - return self.getToken(PostgreSQLParser.UNLOGGED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttemp - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttemp" ): - listener.enterOpttemp(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttemp" ): - listener.exitOpttemp(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttemp" ): - return visitor.visitOpttemp(self) - else: - return visitor.visitChildren(self) - - - - - def opttemp(self): - - localctx = PostgreSQLParser.OpttempContext(self, self._ctx, self.state) - self.enterRule(localctx, 174, self.RULE_opttemp) - self._la = 0 # Token type - try: - self.state = 2799 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [347]: - self.enterOuterAlt(localctx, 1) - self.state = 2791 - self.match(PostgreSQLParser.TEMPORARY) - pass - elif token in [345]: - self.enterOuterAlt(localctx, 2) - self.state = 2792 - self.match(PostgreSQLParser.TEMP) - pass - elif token in [245]: - self.enterOuterAlt(localctx, 3) - self.state = 2793 - self.match(PostgreSQLParser.LOCAL) - self.state = 2794 - _la = self._input.LA(1) - if not(_la==345 or _la==347): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [213]: - self.enterOuterAlt(localctx, 4) - self.state = 2795 - self.match(PostgreSQLParser.GLOBAL) - self.state = 2796 - _la = self._input.LA(1) - if not(_la==345 or _la==347): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [360]: - self.enterOuterAlt(localctx, 5) - self.state = 2797 - self.match(PostgreSQLParser.UNLOGGED) - pass - elif token in [92, 296, 321, 369]: - self.enterOuterAlt(localctx, 6) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttableelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TableelementlistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttableelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttableelementlist" ): - listener.enterOpttableelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttableelementlist" ): - listener.exitOpttableelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttableelementlist" ): - return visitor.visitOpttableelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def opttableelementlist(self): - - localctx = PostgreSQLParser.OpttableelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 176, self.RULE_opttableelementlist) - try: - self.state = 2803 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 42, 43, 44, 45, 53, 57, 61, 63, 85, 92, 98, 116, 119, 120, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 2801 - self.tableelementlist() - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttypedtableelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def typedtableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TypedtableelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttypedtableelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttypedtableelementlist" ): - listener.enterOpttypedtableelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttypedtableelementlist" ): - listener.exitOpttypedtableelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttypedtableelementlist" ): - return visitor.visitOpttypedtableelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def opttypedtableelementlist(self): - - localctx = PostgreSQLParser.OpttypedtableelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 178, self.RULE_opttypedtableelementlist) - try: - self.state = 2810 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,85,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2805 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2806 - self.typedtableelementlist() - self.state = 2807 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TableelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tableelement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TableelementContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TableelementContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tableelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTableelementlist" ): - listener.enterTableelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTableelementlist" ): - listener.exitTableelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableelementlist" ): - return visitor.visitTableelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def tableelementlist(self): - - localctx = PostgreSQLParser.TableelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 180, self.RULE_tableelementlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2812 - self.tableelement() - self.state = 2817 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2813 - self.match(PostgreSQLParser.COMMA) - self.state = 2814 - self.tableelement() - self.state = 2819 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypedtableelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typedtableelement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypedtableelementContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypedtableelementContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_typedtableelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypedtableelementlist" ): - listener.enterTypedtableelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypedtableelementlist" ): - listener.exitTypedtableelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypedtableelementlist" ): - return visitor.visitTypedtableelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def typedtableelementlist(self): - - localctx = PostgreSQLParser.TypedtableelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 182, self.RULE_typedtableelementlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2820 - self.typedtableelement() - self.state = 2825 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 2821 - self.match(PostgreSQLParser.COMMA) - self.state = 2822 - self.typedtableelement() - self.state = 2827 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TableelementContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tableconstraint(self): - return self.getTypedRuleContext(PostgreSQLParser.TableconstraintContext,0) - - - def tablelikeclause(self): - return self.getTypedRuleContext(PostgreSQLParser.TablelikeclauseContext,0) - - - def columnDef(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnDefContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tableelement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTableelement" ): - listener.enterTableelement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTableelement" ): - listener.exitTableelement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableelement" ): - return visitor.visitTableelement(self) - else: - return visitor.visitChildren(self) - - - - - def tableelement(self): - - localctx = PostgreSQLParser.TableelementContext(self, self._ctx, self.state) - self.enterRule(localctx, 184, self.RULE_tableelement) - try: - self.state = 2831 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,88,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2828 - self.tableconstraint() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2829 - self.tablelikeclause() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2830 - self.columnDef() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypedtableelementContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def columnOptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnOptionsContext,0) - - - def tableconstraint(self): - return self.getTypedRuleContext(PostgreSQLParser.TableconstraintContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_typedtableelement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypedtableelement" ): - listener.enterTypedtableelement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypedtableelement" ): - listener.exitTypedtableelement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypedtableelement" ): - return visitor.visitTypedtableelement(self) - else: - return visitor.visitChildren(self) - - - - - def typedtableelement(self): - - localctx = PostgreSQLParser.TypedtableelementContext(self, self._ctx, self.state) - self.enterRule(localctx, 186, self.RULE_typedtableelement) - try: - self.state = 2835 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,89,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2833 - self.columnOptions() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2834 - self.tableconstraint() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColumnDefContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def colquallist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColquallistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_columnDef - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColumnDef" ): - listener.enterColumnDef(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColumnDef" ): - listener.exitColumnDef(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnDef" ): - return visitor.visitColumnDef(self) - else: - return visitor.visitChildren(self) - - - - - def columnDef(self): - - localctx = PostgreSQLParser.ColumnDefContext(self, self._ctx, self.state) - self.enterRule(localctx, 188, self.RULE_columnDef) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2837 - self.colid() - self.state = 2838 - self.typename() - self.state = 2839 - self.create_generic_options() - self.state = 2840 - self.colquallist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColumnOptionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def colquallist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColquallistContext,0) - - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def OPTIONS(self): - return self.getToken(PostgreSQLParser.OPTIONS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_columnOptions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColumnOptions" ): - listener.enterColumnOptions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColumnOptions" ): - listener.exitColumnOptions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnOptions" ): - return visitor.visitColumnOptions(self) - else: - return visitor.visitChildren(self) - - - - - def columnOptions(self): - - localctx = PostgreSQLParser.ColumnOptionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 190, self.RULE_columnOptions) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2842 - self.colid() - self.state = 2845 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==105: - self.state = 2843 - self.match(PostgreSQLParser.WITH) - self.state = 2844 - self.match(PostgreSQLParser.OPTIONS) - - - self.state = 2847 - self.colquallist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColquallistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colconstraint(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ColconstraintContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ColconstraintContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_colquallist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColquallist" ): - listener.enterColquallist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColquallist" ): - listener.exitColquallist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColquallist" ): - return visitor.visitColquallist(self) - else: - return visitor.visitChildren(self) - - - - - def colquallist(self): - - localctx = PostgreSQLParser.ColquallistContext(self, self._ctx, self.state) - self.enterRule(localctx, 192, self.RULE_colquallist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2852 - self._errHandler.sync(self) - _la = self._input.LA(1) - while ((((_la - 42)) & ~0x3f) == 0 and ((1 << (_la - 42)) & 72084085530433547) != 0) or _la==438: - self.state = 2849 - self.colconstraint() - self.state = 2854 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColconstraintContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def colconstraintelem(self): - return self.getTypedRuleContext(PostgreSQLParser.ColconstraintelemContext,0) - - - def constraintattr(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattrContext,0) - - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_colconstraint - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColconstraint" ): - listener.enterColconstraint(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColconstraint" ): - listener.exitColconstraint(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColconstraint" ): - return visitor.visitColconstraint(self) - else: - return visitor.visitChildren(self) - - - - - def colconstraint(self): - - localctx = PostgreSQLParser.ColconstraintContext(self, self._ctx, self.state) - self.enterRule(localctx, 194, self.RULE_colconstraint) - try: - self.state = 2863 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,92,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 2855 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2856 - self.name() - self.state = 2857 - self.colconstraintelem() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 2859 - self.colconstraintelem() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 2860 - self.constraintattr() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 2861 - self.match(PostgreSQLParser.COLLATE) - self.state = 2862 - self.any_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColconstraintelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def UNIQUE(self): - return self.getToken(PostgreSQLParser.UNIQUE, 0) - - def opt_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_definitionContext,0) - - - def optconstablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OptconstablespaceContext,0) - - - def PRIMARY(self): - return self.getToken(PostgreSQLParser.PRIMARY, 0) - - def KEY(self): - return self.getToken(PostgreSQLParser.KEY, 0) - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def opt_no_inherit(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_no_inheritContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def b_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.B_exprContext,0) - - - def GENERATED(self): - return self.getToken(PostgreSQLParser.GENERATED, 0) - - def generated_when(self): - return self.getTypedRuleContext(PostgreSQLParser.Generated_whenContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def IDENTITY_P(self): - return self.getToken(PostgreSQLParser.IDENTITY_P, 0) - - def optparenthesizedseqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptparenthesizedseqoptlistContext,0) - - - def STORED(self): - return self.getToken(PostgreSQLParser.STORED, 0) - - def REFERENCES(self): - return self.getToken(PostgreSQLParser.REFERENCES, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def key_match(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_matchContext,0) - - - def key_actions(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_actionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_colconstraintelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColconstraintelem" ): - listener.enterColconstraintelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColconstraintelem" ): - listener.exitColconstraintelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColconstraintelem" ): - return visitor.visitColconstraintelem(self) - else: - return visitor.visitChildren(self) - - - - - def colconstraintelem(self): - - localctx = PostgreSQLParser.ColconstraintelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 196, self.RULE_colconstraintelem) - try: - self.state = 2903 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [77]: - self.enterOuterAlt(localctx, 1) - self.state = 2865 - self.match(PostgreSQLParser.NOT) - self.state = 2866 - self.match(PostgreSQLParser.NULL_P) - pass - elif token in [78]: - self.enterOuterAlt(localctx, 2) - self.state = 2867 - self.match(PostgreSQLParser.NULL_P) - pass - elif token in [98]: - self.enterOuterAlt(localctx, 3) - self.state = 2868 - self.match(PostgreSQLParser.UNIQUE) - self.state = 2869 - self.opt_definition() - self.state = 2870 - self.optconstablespace() - pass - elif token in [85]: - self.enterOuterAlt(localctx, 4) - self.state = 2872 - self.match(PostgreSQLParser.PRIMARY) - self.state = 2873 - self.match(PostgreSQLParser.KEY) - self.state = 2874 - self.opt_definition() - self.state = 2875 - self.optconstablespace() - pass - elif token in [42]: - self.enterOuterAlt(localctx, 5) - self.state = 2877 - self.match(PostgreSQLParser.CHECK) - self.state = 2878 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2879 - self.a_expr() - self.state = 2880 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2881 - self.opt_no_inherit() - pass - elif token in [53]: - self.enterOuterAlt(localctx, 6) - self.state = 2883 - self.match(PostgreSQLParser.DEFAULT) - self.state = 2884 - self.b_expr(0) - pass - elif token in [438]: - self.enterOuterAlt(localctx, 7) - self.state = 2885 - self.match(PostgreSQLParser.GENERATED) - self.state = 2886 - self.generated_when() - self.state = 2887 - self.match(PostgreSQLParser.AS) - self.state = 2895 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [219]: - self.state = 2888 - self.match(PostgreSQLParser.IDENTITY_P) - self.state = 2889 - self.optparenthesizedseqoptlist() - pass - elif token in [2]: - self.state = 2890 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2891 - self.a_expr() - self.state = 2892 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2893 - self.match(PostgreSQLParser.STORED) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [86]: - self.enterOuterAlt(localctx, 8) - self.state = 2897 - self.match(PostgreSQLParser.REFERENCES) - self.state = 2898 - self.qualified_name() - self.state = 2899 - self.opt_column_list() - self.state = 2900 - self.key_match() - self.state = 2901 - self.key_actions() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generated_whenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALWAYS(self): - return self.getToken(PostgreSQLParser.ALWAYS, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generated_when - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGenerated_when" ): - listener.enterGenerated_when(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGenerated_when" ): - listener.exitGenerated_when(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGenerated_when" ): - return visitor.visitGenerated_when(self) - else: - return visitor.visitChildren(self) - - - - - def generated_when(self): - - localctx = PostgreSQLParser.Generated_whenContext(self, self._ctx, self.state) - self.enterRule(localctx, 198, self.RULE_generated_when) - try: - self.state = 2908 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [139]: - self.enterOuterAlt(localctx, 1) - self.state = 2905 - self.match(PostgreSQLParser.ALWAYS) - pass - elif token in [147]: - self.enterOuterAlt(localctx, 2) - self.state = 2906 - self.match(PostgreSQLParser.BY) - self.state = 2907 - self.match(PostgreSQLParser.DEFAULT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstraintattrContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFERRABLE(self): - return self.getToken(PostgreSQLParser.DEFERRABLE, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def INITIALLY(self): - return self.getToken(PostgreSQLParser.INITIALLY, 0) - - def DEFERRED(self): - return self.getToken(PostgreSQLParser.DEFERRED, 0) - - def IMMEDIATE(self): - return self.getToken(PostgreSQLParser.IMMEDIATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraintattr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraintattr" ): - listener.enterConstraintattr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraintattr" ): - listener.exitConstraintattr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraintattr" ): - return visitor.visitConstraintattr(self) - else: - return visitor.visitChildren(self) - - - - - def constraintattr(self): - - localctx = PostgreSQLParser.ConstraintattrContext(self, self._ctx, self.state) - self.enterRule(localctx, 200, self.RULE_constraintattr) - self._la = 0 # Token type - try: - self.state = 2915 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [54]: - self.enterOuterAlt(localctx, 1) - self.state = 2910 - self.match(PostgreSQLParser.DEFERRABLE) - pass - elif token in [77]: - self.enterOuterAlt(localctx, 2) - self.state = 2911 - self.match(PostgreSQLParser.NOT) - self.state = 2912 - self.match(PostgreSQLParser.DEFERRABLE) - pass - elif token in [69]: - self.enterOuterAlt(localctx, 3) - self.state = 2913 - self.match(PostgreSQLParser.INITIALLY) - self.state = 2914 - _la = self._input.LA(1) - if not(_la==180 or _la==221): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TablelikeclauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LIKE(self): - return self.getToken(PostgreSQLParser.LIKE, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def tablelikeoptionlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TablelikeoptionlistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablelikeclause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablelikeclause" ): - listener.enterTablelikeclause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablelikeclause" ): - listener.exitTablelikeclause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablelikeclause" ): - return visitor.visitTablelikeclause(self) - else: - return visitor.visitChildren(self) - - - - - def tablelikeclause(self): - - localctx = PostgreSQLParser.TablelikeclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 202, self.RULE_tablelikeclause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 2917 - self.match(PostgreSQLParser.LIKE) - self.state = 2918 - self.qualified_name() - self.state = 2919 - self.tablelikeoptionlist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TablelikeoptionlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tablelikeoption(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TablelikeoptionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TablelikeoptionContext,i) - - - def INCLUDING(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.INCLUDING) - else: - return self.getToken(PostgreSQLParser.INCLUDING, i) - - def EXCLUDING(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.EXCLUDING) - else: - return self.getToken(PostgreSQLParser.EXCLUDING, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablelikeoptionlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablelikeoptionlist" ): - listener.enterTablelikeoptionlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablelikeoptionlist" ): - listener.exitTablelikeoptionlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablelikeoptionlist" ): - return visitor.visitTablelikeoptionlist(self) - else: - return visitor.visitChildren(self) - - - - - def tablelikeoptionlist(self): - - localctx = PostgreSQLParser.TablelikeoptionlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 204, self.RULE_tablelikeoptionlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2925 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==200 or _la==224: - self.state = 2921 - _la = self._input.LA(1) - if not(_la==200 or _la==224): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 2922 - self.tablelikeoption() - self.state = 2927 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TablelikeoptionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMENTS(self): - return self.getToken(PostgreSQLParser.COMMENTS, 0) - - def CONSTRAINTS(self): - return self.getToken(PostgreSQLParser.CONSTRAINTS, 0) - - def DEFAULTS(self): - return self.getToken(PostgreSQLParser.DEFAULTS, 0) - - def IDENTITY_P(self): - return self.getToken(PostgreSQLParser.IDENTITY_P, 0) - - def GENERATED(self): - return self.getToken(PostgreSQLParser.GENERATED, 0) - - def INDEXES(self): - return self.getToken(PostgreSQLParser.INDEXES, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def STORAGE(self): - return self.getToken(PostgreSQLParser.STORAGE, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablelikeoption - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablelikeoption" ): - listener.enterTablelikeoption(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablelikeoption" ): - listener.exitTablelikeoption(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablelikeoption" ): - return visitor.visitTablelikeoption(self) - else: - return visitor.visitChildren(self) - - - - - def tablelikeoption(self): - - localctx = PostgreSQLParser.TablelikeoptionContext(self, self._ctx, self.state) - self.enterRule(localctx, 206, self.RULE_tablelikeoption) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 2928 - _la = self._input.LA(1) - if not(_la==30 or ((((_la - 160)) & ~0x3f) == 0 and ((1 << (_la - 160)) & 576460752303947809) != 0) or _la==227 or _la==335 or _la==338 or _la==438): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TableconstraintContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def constraintelem(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintelemContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tableconstraint - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTableconstraint" ): - listener.enterTableconstraint(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTableconstraint" ): - listener.exitTableconstraint(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTableconstraint" ): - return visitor.visitTableconstraint(self) - else: - return visitor.visitChildren(self) - - - - - def tableconstraint(self): - - localctx = PostgreSQLParser.TableconstraintContext(self, self._ctx, self.state) - self.enterRule(localctx, 208, self.RULE_tableconstraint) - try: - self.state = 2935 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [45]: - self.enterOuterAlt(localctx, 1) - self.state = 2930 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 2931 - self.name() - self.state = 2932 - self.constraintelem() - pass - elif token in [42, 63, 85, 98, 199]: - self.enterOuterAlt(localctx, 2) - self.state = 2934 - self.constraintelem() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstraintelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def constraintattributespec(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattributespecContext,0) - - - def UNIQUE(self): - return self.getToken(PostgreSQLParser.UNIQUE, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def opt_c_include(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_c_includeContext,0) - - - def opt_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_definitionContext,0) - - - def optconstablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OptconstablespaceContext,0) - - - def existingindex(self): - return self.getTypedRuleContext(PostgreSQLParser.ExistingindexContext,0) - - - def PRIMARY(self): - return self.getToken(PostgreSQLParser.PRIMARY, 0) - - def KEY(self): - return self.getToken(PostgreSQLParser.KEY, 0) - - def EXCLUDE(self): - return self.getToken(PostgreSQLParser.EXCLUDE, 0) - - def access_method_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Access_method_clauseContext,0) - - - def exclusionconstraintlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ExclusionconstraintlistContext,0) - - - def exclusionwhereclause(self): - return self.getTypedRuleContext(PostgreSQLParser.ExclusionwhereclauseContext,0) - - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def REFERENCES(self): - return self.getToken(PostgreSQLParser.REFERENCES, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def key_match(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_matchContext,0) - - - def key_actions(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_actionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraintelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraintelem" ): - listener.enterConstraintelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraintelem" ): - listener.exitConstraintelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraintelem" ): - return visitor.visitConstraintelem(self) - else: - return visitor.visitChildren(self) - - - - - def constraintelem(self): - - localctx = PostgreSQLParser.ConstraintelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 210, self.RULE_constraintelem) - try: - self.state = 2995 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [42]: - self.enterOuterAlt(localctx, 1) - self.state = 2937 - self.match(PostgreSQLParser.CHECK) - self.state = 2938 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2939 - self.a_expr() - self.state = 2940 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2941 - self.constraintattributespec() - pass - elif token in [98]: - self.enterOuterAlt(localctx, 2) - self.state = 2943 - self.match(PostgreSQLParser.UNIQUE) - self.state = 2955 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 2944 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2945 - self.columnlist() - self.state = 2946 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2947 - self.opt_c_include() - self.state = 2948 - self.opt_definition() - self.state = 2949 - self.optconstablespace() - self.state = 2950 - self.constraintattributespec() - pass - elif token in [100]: - self.state = 2952 - self.existingindex() - self.state = 2953 - self.constraintattributespec() - pass - else: - raise NoViableAltException(self) - - pass - elif token in [85]: - self.enterOuterAlt(localctx, 3) - self.state = 2957 - self.match(PostgreSQLParser.PRIMARY) - self.state = 2958 - self.match(PostgreSQLParser.KEY) - self.state = 2970 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 2959 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2960 - self.columnlist() - self.state = 2961 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2962 - self.opt_c_include() - self.state = 2963 - self.opt_definition() - self.state = 2964 - self.optconstablespace() - self.state = 2965 - self.constraintattributespec() - pass - elif token in [100]: - self.state = 2967 - self.existingindex() - self.state = 2968 - self.constraintattributespec() - pass - else: - raise NoViableAltException(self) - - pass - elif token in [199]: - self.enterOuterAlt(localctx, 4) - self.state = 2972 - self.match(PostgreSQLParser.EXCLUDE) - self.state = 2973 - self.access_method_clause() - self.state = 2974 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2975 - self.exclusionconstraintlist() - self.state = 2976 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2977 - self.opt_c_include() - self.state = 2978 - self.opt_definition() - self.state = 2979 - self.optconstablespace() - self.state = 2980 - self.exclusionwhereclause() - self.state = 2981 - self.constraintattributespec() - pass - elif token in [63]: - self.enterOuterAlt(localctx, 5) - self.state = 2983 - self.match(PostgreSQLParser.FOREIGN) - self.state = 2984 - self.match(PostgreSQLParser.KEY) - self.state = 2985 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 2986 - self.columnlist() - self.state = 2987 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 2988 - self.match(PostgreSQLParser.REFERENCES) - self.state = 2989 - self.qualified_name() - self.state = 2990 - self.opt_column_list() - self.state = 2991 - self.key_match() - self.state = 2992 - self.key_actions() - self.state = 2993 - self.constraintattributespec() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_no_inheritContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def INHERIT(self): - return self.getToken(PostgreSQLParser.INHERIT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_no_inherit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_no_inherit" ): - listener.enterOpt_no_inherit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_no_inherit" ): - listener.exitOpt_no_inherit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_no_inherit" ): - return visitor.visitOpt_no_inherit(self) - else: - return visitor.visitChildren(self) - - - - - def opt_no_inherit(self): - - localctx = PostgreSQLParser.Opt_no_inheritContext(self, self._ctx, self.state) - self.enterRule(localctx, 212, self.RULE_opt_no_inherit) - try: - self.state = 3000 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262]: - self.enterOuterAlt(localctx, 1) - self.state = 2997 - self.match(PostgreSQLParser.NO) - self.state = 2998 - self.match(PostgreSQLParser.INHERIT) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 42, 43, 45, 46, 53, 54, 57, 61, 65, 69, 71, 77, 78, 85, 86, 88, 92, 98, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 438, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_column_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_column_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_column_list" ): - listener.enterOpt_column_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_column_list" ): - listener.exitOpt_column_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_column_list" ): - return visitor.visitOpt_column_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_column_list(self): - - localctx = PostgreSQLParser.Opt_column_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 214, self.RULE_opt_column_list) - try: - self.state = 3007 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,103,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3002 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3003 - self.columnlist() - self.state = 3004 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColumnlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def columnElem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ColumnElemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ColumnElemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_columnlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColumnlist" ): - listener.enterColumnlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColumnlist" ): - listener.exitColumnlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnlist" ): - return visitor.visitColumnlist(self) - else: - return visitor.visitChildren(self) - - - - - def columnlist(self): - - localctx = PostgreSQLParser.ColumnlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 216, self.RULE_columnlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3009 - self.columnElem() - self.state = 3014 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3010 - self.match(PostgreSQLParser.COMMA) - self.state = 3011 - self.columnElem() - self.state = 3016 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColumnElemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_columnElem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColumnElem" ): - listener.enterColumnElem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColumnElem" ): - listener.exitColumnElem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnElem" ): - return visitor.visitColumnElem(self) - else: - return visitor.visitChildren(self) - - - - - def columnElem(self): - - localctx = PostgreSQLParser.ColumnElemContext(self, self._ctx, self.state) - self.enterRule(localctx, 218, self.RULE_columnElem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3017 - self.colid() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_c_includeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INCLUDE(self): - return self.getToken(PostgreSQLParser.INCLUDE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_c_include - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_c_include" ): - listener.enterOpt_c_include(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_c_include" ): - listener.exitOpt_c_include(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_c_include" ): - return visitor.visitOpt_c_include(self) - else: - return visitor.visitChildren(self) - - - - - def opt_c_include(self): - - localctx = PostgreSQLParser.Opt_c_includeContext(self, self._ctx, self.state) - self.enterRule(localctx, 220, self.RULE_opt_c_include) - try: - self.state = 3025 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [441]: - self.enterOuterAlt(localctx, 1) - self.state = 3019 - self.match(PostgreSQLParser.INCLUDE) - self.state = 3020 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3021 - self.columnlist() - self.state = 3022 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 54, 57, 61, 65, 69, 71, 77, 88, 92, 100, 103, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 262, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Key_matchContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def MATCH(self): - return self.getToken(PostgreSQLParser.MATCH, 0) - - def FULL(self): - return self.getToken(PostgreSQLParser.FULL, 0) - - def PARTIAL(self): - return self.getToken(PostgreSQLParser.PARTIAL, 0) - - def SIMPLE(self): - return self.getToken(PostgreSQLParser.SIMPLE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_key_match - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterKey_match" ): - listener.enterKey_match(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitKey_match" ): - listener.exitKey_match(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKey_match" ): - return visitor.visitKey_match(self) - else: - return visitor.visitChildren(self) - - - - - def key_match(self): - - localctx = PostgreSQLParser.Key_matchContext(self, self._ctx, self.state) - self.enterRule(localctx, 222, self.RULE_key_match) - self._la = 0 # Token type - try: - self.state = 3030 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [249]: - self.enterOuterAlt(localctx, 1) - self.state = 3027 - self.match(PostgreSQLParser.MATCH) - self.state = 3028 - _la = self._input.LA(1) - if not(_la==113 or _la==277 or _la==329): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 42, 43, 45, 46, 53, 54, 57, 61, 65, 69, 71, 77, 78, 80, 85, 86, 88, 92, 98, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 262, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 438, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExclusionconstraintlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def exclusionconstraintelem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ExclusionconstraintelemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ExclusionconstraintelemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_exclusionconstraintlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExclusionconstraintlist" ): - listener.enterExclusionconstraintlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExclusionconstraintlist" ): - listener.exitExclusionconstraintlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExclusionconstraintlist" ): - return visitor.visitExclusionconstraintlist(self) - else: - return visitor.visitChildren(self) - - - - - def exclusionconstraintlist(self): - - localctx = PostgreSQLParser.ExclusionconstraintlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 224, self.RULE_exclusionconstraintlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3032 - self.exclusionconstraintelem() - self.state = 3037 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3033 - self.match(PostgreSQLParser.COMMA) - self.state = 3034 - self.exclusionconstraintelem() - self.state = 3039 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExclusionconstraintelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def index_elem(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_elemContext,0) - - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_exclusionconstraintelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExclusionconstraintelem" ): - listener.enterExclusionconstraintelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExclusionconstraintelem" ): - listener.exitExclusionconstraintelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExclusionconstraintelem" ): - return visitor.visitExclusionconstraintelem(self) - else: - return visitor.visitChildren(self) - - - - - def exclusionconstraintelem(self): - - localctx = PostgreSQLParser.ExclusionconstraintelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 226, self.RULE_exclusionconstraintelem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3040 - self.index_elem() - self.state = 3041 - self.match(PostgreSQLParser.WITH) - self.state = 3048 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,108,self._ctx) - if la_ == 1: - self.state = 3042 - self.any_operator() - pass - - elif la_ == 2: - self.state = 3043 - self.match(PostgreSQLParser.OPERATOR) - self.state = 3044 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3045 - self.any_operator() - self.state = 3046 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExclusionwhereclauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHERE(self): - return self.getToken(PostgreSQLParser.WHERE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_exclusionwhereclause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExclusionwhereclause" ): - listener.enterExclusionwhereclause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExclusionwhereclause" ): - listener.exitExclusionwhereclause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExclusionwhereclause" ): - return visitor.visitExclusionwhereclause(self) - else: - return visitor.visitChildren(self) - - - - - def exclusionwhereclause(self): - - localctx = PostgreSQLParser.ExclusionwhereclauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 228, self.RULE_exclusionwhereclause) - try: - self.state = 3056 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [103]: - self.enterOuterAlt(localctx, 1) - self.state = 3050 - self.match(PostgreSQLParser.WHERE) - self.state = 3051 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3052 - self.a_expr() - self.state = 3053 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 54, 57, 61, 65, 69, 71, 77, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 262, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Key_actionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def key_update(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_updateContext,0) - - - def key_delete(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_deleteContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_key_actions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterKey_actions" ): - listener.enterKey_actions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitKey_actions" ): - listener.exitKey_actions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKey_actions" ): - return visitor.visitKey_actions(self) - else: - return visitor.visitChildren(self) - - - - - def key_actions(self): - - localctx = PostgreSQLParser.Key_actionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 230, self.RULE_key_actions) - try: - self.state = 3067 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,110,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3058 - self.key_update() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3059 - self.key_delete() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3060 - self.key_update() - self.state = 3061 - self.key_delete() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3063 - self.key_delete() - self.state = 3064 - self.key_update() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Key_updateContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def key_action(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_actionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_key_update - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterKey_update" ): - listener.enterKey_update(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitKey_update" ): - listener.exitKey_update(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKey_update" ): - return visitor.visitKey_update(self) - else: - return visitor.visitChildren(self) - - - - - def key_update(self): - - localctx = PostgreSQLParser.Key_updateContext(self, self._ctx, self.state) - self.enterRule(localctx, 232, self.RULE_key_update) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3069 - self.match(PostgreSQLParser.ON) - self.state = 3070 - self.match(PostgreSQLParser.UPDATE) - self.state = 3071 - self.key_action() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Key_deleteContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def key_action(self): - return self.getTypedRuleContext(PostgreSQLParser.Key_actionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_key_delete - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterKey_delete" ): - listener.enterKey_delete(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitKey_delete" ): - listener.exitKey_delete(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKey_delete" ): - return visitor.visitKey_delete(self) - else: - return visitor.visitChildren(self) - - - - - def key_delete(self): - - localctx = PostgreSQLParser.Key_deleteContext(self, self._ctx, self.state) - self.enterRule(localctx, 234, self.RULE_key_delete) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3073 - self.match(PostgreSQLParser.ON) - self.state = 3074 - self.match(PostgreSQLParser.DELETE_P) - self.state = 3075 - self.key_action() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Key_actionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def ACTION(self): - return self.getToken(PostgreSQLParser.ACTION, 0) - - def RESTRICT(self): - return self.getToken(PostgreSQLParser.RESTRICT, 0) - - def CASCADE(self): - return self.getToken(PostgreSQLParser.CASCADE, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_key_action - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterKey_action" ): - listener.enterKey_action(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitKey_action" ): - listener.exitKey_action(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitKey_action" ): - return visitor.visitKey_action(self) - else: - return visitor.visitChildren(self) - - - - - def key_action(self): - - localctx = PostgreSQLParser.Key_actionContext(self, self._ctx, self.state) - self.enterRule(localctx, 236, self.RULE_key_action) - self._la = 0 # Token type - try: - self.state = 3083 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262]: - self.enterOuterAlt(localctx, 1) - self.state = 3077 - self.match(PostgreSQLParser.NO) - self.state = 3078 - self.match(PostgreSQLParser.ACTION) - pass - elif token in [308]: - self.enterOuterAlt(localctx, 2) - self.state = 3079 - self.match(PostgreSQLParser.RESTRICT) - pass - elif token in [150]: - self.enterOuterAlt(localctx, 3) - self.state = 3080 - self.match(PostgreSQLParser.CASCADE) - pass - elif token in [326]: - self.enterOuterAlt(localctx, 4) - self.state = 3081 - self.match(PostgreSQLParser.SET) - self.state = 3082 - _la = self._input.LA(1) - if not(_la==53 or _la==78): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptinheritContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INHERITS(self): - return self.getToken(PostgreSQLParser.INHERITS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def qualified_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_name_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optinherit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptinherit" ): - listener.enterOptinherit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptinherit" ): - listener.exitOptinherit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptinherit" ): - return visitor.visitOptinherit(self) - else: - return visitor.visitChildren(self) - - - - - def optinherit(self): - - localctx = PostgreSQLParser.OptinheritContext(self, self._ctx, self.state) - self.enterRule(localctx, 238, self.RULE_optinherit) - try: - self.state = 3091 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [229]: - self.enterOuterAlt(localctx, 1) - self.state = 3085 - self.match(PostgreSQLParser.INHERITS) - self.state = 3086 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3087 - self.qualified_name_list() - self.state = 3088 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 80, 88, 92, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 278, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 324, 326, 328, 333, 344, 351, 359, 362, 363, 372, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptpartitionspecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def partitionspec(self): - return self.getTypedRuleContext(PostgreSQLParser.PartitionspecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optpartitionspec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptpartitionspec" ): - listener.enterOptpartitionspec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptpartitionspec" ): - listener.exitOptpartitionspec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptpartitionspec" ): - return visitor.visitOptpartitionspec(self) - else: - return visitor.visitChildren(self) - - - - - def optpartitionspec(self): - - localctx = PostgreSQLParser.OptpartitionspecContext(self, self._ctx, self.state) - self.enterRule(localctx, 240, self.RULE_optpartitionspec) - try: - self.state = 3095 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [278]: - self.enterOuterAlt(localctx, 1) - self.state = 3093 - self.partitionspec() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 80, 88, 92, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 344, 351, 359, 362, 363, 372, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PartitionspecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def part_params(self): - return self.getTypedRuleContext(PostgreSQLParser.Part_paramsContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_partitionspec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPartitionspec" ): - listener.enterPartitionspec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPartitionspec" ): - listener.exitPartitionspec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPartitionspec" ): - return visitor.visitPartitionspec(self) - else: - return visitor.visitChildren(self) - - - - - def partitionspec(self): - - localctx = PostgreSQLParser.PartitionspecContext(self, self._ctx, self.state) - self.enterRule(localctx, 242, self.RULE_partitionspec) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3097 - self.match(PostgreSQLParser.PARTITION) - self.state = 3098 - self.match(PostgreSQLParser.BY) - self.state = 3099 - self.colid() - self.state = 3100 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3101 - self.part_params() - self.state = 3102 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Part_paramsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def part_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Part_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Part_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_part_params - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPart_params" ): - listener.enterPart_params(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPart_params" ): - listener.exitPart_params(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPart_params" ): - return visitor.visitPart_params(self) - else: - return visitor.visitChildren(self) - - - - - def part_params(self): - - localctx = PostgreSQLParser.Part_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 244, self.RULE_part_params) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3104 - self.part_elem() - self.state = 3109 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3105 - self.match(PostgreSQLParser.COMMA) - self.state = 3106 - self.part_elem() - self.state = 3111 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Part_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def opt_collate(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_collateContext,0) - - - def opt_class(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_classContext,0) - - - def func_expr_windowless(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_windowlessContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_part_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPart_elem" ): - listener.enterPart_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPart_elem" ): - listener.exitPart_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPart_elem" ): - return visitor.visitPart_elem(self) - else: - return visitor.visitChildren(self) - - - - - def part_elem(self): - - localctx = PostgreSQLParser.Part_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 246, self.RULE_part_elem) - try: - self.state = 3126 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,115,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3112 - self.colid() - self.state = 3113 - self.opt_collate() - self.state = 3114 - self.opt_class() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3116 - self.func_expr_windowless() - self.state = 3117 - self.opt_collate() - self.state = 3118 - self.opt_class() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3120 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3121 - self.a_expr() - self.state = 3122 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 3123 - self.opt_collate() - self.state = 3124 - self.opt_class() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_access_method_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_access_method_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_access_method_clause" ): - listener.enterTable_access_method_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_access_method_clause" ): - listener.exitTable_access_method_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_access_method_clause" ): - return visitor.visitTable_access_method_clause(self) - else: - return visitor.visitChildren(self) - - - - - def table_access_method_clause(self): - - localctx = PostgreSQLParser.Table_access_method_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 248, self.RULE_table_access_method_clause) - try: - self.state = 3131 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 3128 - self.match(PostgreSQLParser.USING) - self.state = 3129 - self.name() - pass - elif token in [-1, 2, 7, 31, 32, 36, 46, 57, 61, 65, 71, 80, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 344, 351, 359, 362, 363, 372, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptwithContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ReloptionsContext,0) - - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def OIDS(self): - return self.getToken(PostgreSQLParser.OIDS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optwith - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptwith" ): - listener.enterOptwith(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptwith" ): - listener.exitOptwith(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptwith" ): - return visitor.visitOptwith(self) - else: - return visitor.visitChildren(self) - - - - - def optwith(self): - - localctx = PostgreSQLParser.OptwithContext(self, self._ctx, self.state) - self.enterRule(localctx, 250, self.RULE_optwith) - try: - self.state = 3138 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,117,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3133 - self.match(PostgreSQLParser.WITH) - self.state = 3134 - self.reloptions() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3135 - self.match(PostgreSQLParser.WITHOUT) - self.state = 3136 - self.match(PostgreSQLParser.OIDS) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OncommitoptionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def COMMIT(self): - return self.getToken(PostgreSQLParser.COMMIT, 0) - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def PRESERVE(self): - return self.getToken(PostgreSQLParser.PRESERVE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_oncommitoption - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOncommitoption" ): - listener.enterOncommitoption(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOncommitoption" ): - listener.exitOncommitoption(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOncommitoption" ): - return visitor.visitOncommitoption(self) - else: - return visitor.visitChildren(self) - - - - - def oncommitoption(self): - - localctx = PostgreSQLParser.OncommitoptionContext(self, self._ctx, self.state) - self.enterRule(localctx, 252, self.RULE_oncommitoption) - try: - self.state = 3150 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [80]: - self.enterOuterAlt(localctx, 1) - self.state = 3140 - self.match(PostgreSQLParser.ON) - self.state = 3141 - self.match(PostgreSQLParser.COMMIT) - self.state = 3147 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [191]: - self.state = 3142 - self.match(PostgreSQLParser.DROP) - pass - elif token in [182]: - self.state = 3143 - self.match(PostgreSQLParser.DELETE_P) - self.state = 3144 - self.match(PostgreSQLParser.ROWS) - pass - elif token in [285]: - self.state = 3145 - self.match(PostgreSQLParser.PRESERVE) - self.state = 3146 - self.match(PostgreSQLParser.ROWS) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [-1, 2, 7, 31, 32, 36, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 344, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttablespaceContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttablespace - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttablespace" ): - listener.enterOpttablespace(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttablespace" ): - listener.exitOpttablespace(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttablespace" ): - return visitor.visitOpttablespace(self) - else: - return visitor.visitChildren(self) - - - - - def opttablespace(self): - - localctx = PostgreSQLParser.OpttablespaceContext(self, self._ctx, self.state) - self.enterRule(localctx, 254, self.RULE_opttablespace) - try: - self.state = 3155 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [344]: - self.enterOuterAlt(localctx, 1) - self.state = 3152 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 3153 - self.name() - pass - elif token in [-1, 2, 7, 31, 32, 36, 46, 57, 61, 65, 71, 88, 92, 103, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptconstablespaceContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optconstablespace - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptconstablespace" ): - listener.enterOptconstablespace(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptconstablespace" ): - listener.exitOptconstablespace(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptconstablespace" ): - return visitor.visitOptconstablespace(self) - else: - return visitor.visitChildren(self) - - - - - def optconstablespace(self): - - localctx = PostgreSQLParser.OptconstablespaceContext(self, self._ctx, self.state) - self.enterRule(localctx, 256, self.RULE_optconstablespace) - try: - self.state = 3162 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 3157 - self.match(PostgreSQLParser.USING) - self.state = 3158 - self.match(PostgreSQLParser.INDEX) - self.state = 3159 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 3160 - self.name() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 42, 43, 45, 46, 53, 54, 57, 61, 65, 69, 71, 77, 78, 85, 86, 88, 92, 98, 103, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 262, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 438, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExistingindexContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_existingindex - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExistingindex" ): - listener.enterExistingindex(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExistingindex" ): - listener.exitExistingindex(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExistingindex" ): - return visitor.visitExistingindex(self) - else: - return visitor.visitChildren(self) - - - - - def existingindex(self): - - localctx = PostgreSQLParser.ExistingindexContext(self, self._ctx, self.state) - self.enterRule(localctx, 258, self.RULE_existingindex) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3164 - self.match(PostgreSQLParser.USING) - self.state = 3165 - self.match(PostgreSQLParser.INDEX) - self.state = 3166 - self.name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatestatsstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def opt_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_name_listContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def from_list(self): - return self.getTypedRuleContext(PostgreSQLParser.From_listContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createstatsstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatestatsstmt" ): - listener.enterCreatestatsstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatestatsstmt" ): - listener.exitCreatestatsstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatestatsstmt" ): - return visitor.visitCreatestatsstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createstatsstmt(self): - - localctx = PostgreSQLParser.CreatestatsstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 260, self.RULE_createstatsstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3168 - self.match(PostgreSQLParser.CREATE) - self.state = 3169 - self.match(PostgreSQLParser.STATISTICS) - self.state = 3173 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,122,self._ctx) - if la_ == 1: - self.state = 3170 - self.match(PostgreSQLParser.IF_P) - self.state = 3171 - self.match(PostgreSQLParser.NOT) - self.state = 3172 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3175 - self.any_name() - self.state = 3176 - self.opt_name_list() - self.state = 3177 - self.match(PostgreSQLParser.ON) - self.state = 3178 - self.expr_list() - self.state = 3179 - self.match(PostgreSQLParser.FROM) - self.state = 3180 - self.from_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterstatsstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def STATISTICS(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.STATISTICS) - else: - return self.getToken(PostgreSQLParser.STATISTICS, i) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterstatsstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterstatsstmt" ): - listener.enterAlterstatsstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterstatsstmt" ): - listener.exitAlterstatsstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterstatsstmt" ): - return visitor.visitAlterstatsstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterstatsstmt(self): - - localctx = PostgreSQLParser.AlterstatsstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 262, self.RULE_alterstatsstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3182 - self.match(PostgreSQLParser.ALTER) - self.state = 3183 - self.match(PostgreSQLParser.STATISTICS) - self.state = 3186 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,123,self._ctx) - if la_ == 1: - self.state = 3184 - self.match(PostgreSQLParser.IF_P) - self.state = 3185 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3188 - self.any_name() - self.state = 3189 - self.match(PostgreSQLParser.SET) - self.state = 3190 - self.match(PostgreSQLParser.STATISTICS) - self.state = 3191 - self.signediconst() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateasstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opttemp(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def create_as_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_as_targetContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def opt_with_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_dataContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createasstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateasstmt" ): - listener.enterCreateasstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateasstmt" ): - listener.exitCreateasstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateasstmt" ): - return visitor.visitCreateasstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createasstmt(self): - - localctx = PostgreSQLParser.CreateasstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 264, self.RULE_createasstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3193 - self.match(PostgreSQLParser.CREATE) - self.state = 3194 - self.opttemp() - self.state = 3195 - self.match(PostgreSQLParser.TABLE) - self.state = 3199 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,124,self._ctx) - if la_ == 1: - self.state = 3196 - self.match(PostgreSQLParser.IF_P) - self.state = 3197 - self.match(PostgreSQLParser.NOT) - self.state = 3198 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3201 - self.create_as_target() - self.state = 3202 - self.match(PostgreSQLParser.AS) - self.state = 3203 - self.selectstmt() - self.state = 3204 - self.opt_with_data() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Create_as_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def table_access_method_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_access_method_clauseContext,0) - - - def optwith(self): - return self.getTypedRuleContext(PostgreSQLParser.OptwithContext,0) - - - def oncommitoption(self): - return self.getTypedRuleContext(PostgreSQLParser.OncommitoptionContext,0) - - - def opttablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablespaceContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_create_as_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreate_as_target" ): - listener.enterCreate_as_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreate_as_target" ): - listener.exitCreate_as_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreate_as_target" ): - return visitor.visitCreate_as_target(self) - else: - return visitor.visitChildren(self) - - - - - def create_as_target(self): - - localctx = PostgreSQLParser.Create_as_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 266, self.RULE_create_as_target) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3206 - self.qualified_name() - self.state = 3207 - self.opt_column_list() - self.state = 3208 - self.table_access_method_clause() - self.state = 3209 - self.optwith() - self.state = 3210 - self.oncommitoption() - self.state = 3211 - self.opttablespace() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_with_dataContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_with_data - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_with_data" ): - listener.enterOpt_with_data(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_with_data" ): - listener.exitOpt_with_data(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_with_data" ): - return visitor.visitOpt_with_data(self) - else: - return visitor.visitChildren(self) - - - - - def opt_with_data(self): - - localctx = PostgreSQLParser.Opt_with_dataContext(self, self._ctx, self.state) - self.enterRule(localctx, 268, self.RULE_opt_with_data) - try: - self.state = 3220 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,126,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3213 - self.match(PostgreSQLParser.WITH) - self.state = 3217 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [174]: - self.state = 3214 - self.match(PostgreSQLParser.DATA_P) - pass - elif token in [262]: - self.state = 3215 - self.match(PostgreSQLParser.NO) - self.state = 3216 - self.match(PostgreSQLParser.DATA_P) - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatematviewstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def optnolog(self): - return self.getTypedRuleContext(PostgreSQLParser.OptnologContext,0) - - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def create_mv_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_mv_targetContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def opt_with_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_dataContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_creatematviewstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatematviewstmt" ): - listener.enterCreatematviewstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatematviewstmt" ): - listener.exitCreatematviewstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatematviewstmt" ): - return visitor.visitCreatematviewstmt(self) - else: - return visitor.visitChildren(self) - - - - - def creatematviewstmt(self): - - localctx = PostgreSQLParser.CreatematviewstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 270, self.RULE_creatematviewstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3222 - self.match(PostgreSQLParser.CREATE) - self.state = 3223 - self.optnolog() - self.state = 3224 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 3225 - self.match(PostgreSQLParser.VIEW) - self.state = 3229 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,127,self._ctx) - if la_ == 1: - self.state = 3226 - self.match(PostgreSQLParser.IF_P) - self.state = 3227 - self.match(PostgreSQLParser.NOT) - self.state = 3228 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3231 - self.create_mv_target() - self.state = 3232 - self.match(PostgreSQLParser.AS) - self.state = 3233 - self.selectstmt() - self.state = 3234 - self.opt_with_data() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Create_mv_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def table_access_method_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_access_method_clauseContext,0) - - - def opt_reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_reloptionsContext,0) - - - def opttablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablespaceContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_create_mv_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreate_mv_target" ): - listener.enterCreate_mv_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreate_mv_target" ): - listener.exitCreate_mv_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreate_mv_target" ): - return visitor.visitCreate_mv_target(self) - else: - return visitor.visitChildren(self) - - - - - def create_mv_target(self): - - localctx = PostgreSQLParser.Create_mv_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 272, self.RULE_create_mv_target) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3236 - self.qualified_name() - self.state = 3237 - self.opt_column_list() - self.state = 3238 - self.table_access_method_clause() - self.state = 3239 - self.opt_reloptions() - self.state = 3240 - self.opttablespace() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptnologContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def UNLOGGED(self): - return self.getToken(PostgreSQLParser.UNLOGGED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optnolog - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptnolog" ): - listener.enterOptnolog(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptnolog" ): - listener.exitOptnolog(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptnolog" ): - return visitor.visitOptnolog(self) - else: - return visitor.visitChildren(self) - - - - - def optnolog(self): - - localctx = PostgreSQLParser.OptnologContext(self, self._ctx, self.state) - self.enterRule(localctx, 274, self.RULE_optnolog) - try: - self.state = 3244 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [360]: - self.enterOuterAlt(localctx, 1) - self.state = 3242 - self.match(PostgreSQLParser.UNLOGGED) - pass - elif token in [251]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RefreshmatviewstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REFRESH(self): - return self.getToken(PostgreSQLParser.REFRESH, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def opt_concurrently(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_concurrentlyContext,0) - - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_with_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_dataContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_refreshmatviewstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRefreshmatviewstmt" ): - listener.enterRefreshmatviewstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRefreshmatviewstmt" ): - listener.exitRefreshmatviewstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRefreshmatviewstmt" ): - return visitor.visitRefreshmatviewstmt(self) - else: - return visitor.visitChildren(self) - - - - - def refreshmatviewstmt(self): - - localctx = PostgreSQLParser.RefreshmatviewstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 276, self.RULE_refreshmatviewstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3246 - self.match(PostgreSQLParser.REFRESH) - self.state = 3247 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 3248 - self.match(PostgreSQLParser.VIEW) - self.state = 3249 - self.opt_concurrently() - self.state = 3250 - self.qualified_name() - self.state = 3251 - self.opt_with_data() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateseqstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opttemp(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempContext,0) - - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def optseqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OptseqoptlistContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createseqstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateseqstmt" ): - listener.enterCreateseqstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateseqstmt" ): - listener.exitCreateseqstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateseqstmt" ): - return visitor.visitCreateseqstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createseqstmt(self): - - localctx = PostgreSQLParser.CreateseqstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 278, self.RULE_createseqstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3253 - self.match(PostgreSQLParser.CREATE) - self.state = 3254 - self.opttemp() - self.state = 3255 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 3259 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,129,self._ctx) - if la_ == 1: - self.state = 3256 - self.match(PostgreSQLParser.IF_P) - self.state = 3257 - self.match(PostgreSQLParser.NOT) - self.state = 3258 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3261 - self.qualified_name() - self.state = 3262 - self.optseqoptlist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterseqstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def seqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.SeqoptlistContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterseqstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterseqstmt" ): - listener.enterAlterseqstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterseqstmt" ): - listener.exitAlterseqstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterseqstmt" ): - return visitor.visitAlterseqstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterseqstmt(self): - - localctx = PostgreSQLParser.AlterseqstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 280, self.RULE_alterseqstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3264 - self.match(PostgreSQLParser.ALTER) - self.state = 3265 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 3268 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,130,self._ctx) - if la_ == 1: - self.state = 3266 - self.match(PostgreSQLParser.IF_P) - self.state = 3267 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3270 - self.qualified_name() - self.state = 3271 - self.seqoptlist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptseqoptlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def seqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.SeqoptlistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optseqoptlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptseqoptlist" ): - listener.enterOptseqoptlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptseqoptlist" ): - listener.exitOptseqoptlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptseqoptlist" ): - return visitor.visitOptseqoptlist(self) - else: - return visitor.visitChildren(self) - - - - - def optseqoptlist(self): - - localctx = PostgreSQLParser.OptseqoptlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 282, self.RULE_optseqoptlist) - try: - self.state = 3275 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,131,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3273 - self.seqoptlist() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptparenthesizedseqoptlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def seqoptlist(self): - return self.getTypedRuleContext(PostgreSQLParser.SeqoptlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optparenthesizedseqoptlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptparenthesizedseqoptlist" ): - listener.enterOptparenthesizedseqoptlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptparenthesizedseqoptlist" ): - listener.exitOptparenthesizedseqoptlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptparenthesizedseqoptlist" ): - return visitor.visitOptparenthesizedseqoptlist(self) - else: - return visitor.visitChildren(self) - - - - - def optparenthesizedseqoptlist(self): - - localctx = PostgreSQLParser.OptparenthesizedseqoptlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 284, self.RULE_optparenthesizedseqoptlist) - try: - self.state = 3282 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,132,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3277 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3278 - self.seqoptlist() - self.state = 3279 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SeqoptlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def seqoptelem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SeqoptelemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SeqoptelemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_seqoptlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSeqoptlist" ): - listener.enterSeqoptlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSeqoptlist" ): - listener.exitSeqoptlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSeqoptlist" ): - return visitor.visitSeqoptlist(self) - else: - return visitor.visitChildren(self) - - - - - def seqoptlist(self): - - localctx = PostgreSQLParser.SeqoptlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 286, self.RULE_seqoptlist) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3285 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 3284 - self.seqoptelem() - - else: - raise NoViableAltException(self) - self.state = 3287 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,133,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SeqoptelemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def simpletypename(self): - return self.getTypedRuleContext(PostgreSQLParser.SimpletypenameContext,0) - - - def CACHE(self): - return self.getToken(PostgreSQLParser.CACHE, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def CYCLE(self): - return self.getToken(PostgreSQLParser.CYCLE, 0) - - def INCREMENT(self): - return self.getToken(PostgreSQLParser.INCREMENT, 0) - - def opt_by(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_byContext,0) - - - def MAXVALUE(self): - return self.getToken(PostgreSQLParser.MAXVALUE, 0) - - def MINVALUE(self): - return self.getToken(PostgreSQLParser.MINVALUE, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def OWNED(self): - return self.getToken(PostgreSQLParser.OWNED, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def NAME_P(self): - return self.getToken(PostgreSQLParser.NAME_P, 0) - - def START(self): - return self.getToken(PostgreSQLParser.START, 0) - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def RESTART(self): - return self.getToken(PostgreSQLParser.RESTART, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_seqoptelem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSeqoptelem" ): - listener.enterSeqoptelem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSeqoptelem" ): - listener.exitSeqoptelem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSeqoptelem" ): - return visitor.visitSeqoptelem(self) - else: - return visitor.visitChildren(self) - - - - - def seqoptelem(self): - - localctx = PostgreSQLParser.SeqoptelemContext(self, self._ctx, self.state) - self.enterRule(localctx, 288, self.RULE_seqoptelem) - self._la = 0 # Token type - try: - self.state = 3319 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.enterOuterAlt(localctx, 1) - self.state = 3289 - self.match(PostgreSQLParser.AS) - self.state = 3290 - self.simpletypename() - pass - elif token in [148]: - self.enterOuterAlt(localctx, 2) - self.state = 3291 - self.match(PostgreSQLParser.CACHE) - self.state = 3292 - self.numericonly() - pass - elif token in [173]: - self.enterOuterAlt(localctx, 3) - self.state = 3293 - self.match(PostgreSQLParser.CYCLE) - pass - elif token in [225]: - self.enterOuterAlt(localctx, 4) - self.state = 3294 - self.match(PostgreSQLParser.INCREMENT) - self.state = 3295 - self.opt_by() - self.state = 3296 - self.numericonly() - pass - elif token in [252]: - self.enterOuterAlt(localctx, 5) - self.state = 3298 - self.match(PostgreSQLParser.MAXVALUE) - self.state = 3299 - self.numericonly() - pass - elif token in [255]: - self.enterOuterAlt(localctx, 6) - self.state = 3300 - self.match(PostgreSQLParser.MINVALUE) - self.state = 3301 - self.numericonly() - pass - elif token in [262]: - self.enterOuterAlt(localctx, 7) - self.state = 3302 - self.match(PostgreSQLParser.NO) - self.state = 3303 - _la = self._input.LA(1) - if not(_la==173 or _la==252 or _la==255): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [274]: - self.enterOuterAlt(localctx, 8) - self.state = 3304 - self.match(PostgreSQLParser.OWNED) - self.state = 3305 - self.match(PostgreSQLParser.BY) - self.state = 3306 - self.any_name() - pass - elif token in [321]: - self.enterOuterAlt(localctx, 9) - self.state = 3307 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 3308 - self.match(PostgreSQLParser.NAME_P) - self.state = 3309 - self.any_name() - pass - elif token in [333]: - self.enterOuterAlt(localctx, 10) - self.state = 3310 - self.match(PostgreSQLParser.START) - self.state = 3311 - self.opt_with() - self.state = 3312 - self.numericonly() - pass - elif token in [307]: - self.enterOuterAlt(localctx, 11) - self.state = 3314 - self.match(PostgreSQLParser.RESTART) - self.state = 3315 - self.opt_with() - self.state = 3317 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==12 or _la==13 or _la==658 or _la==660: - self.state = 3316 - self.numericonly() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_byContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_by - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_by" ): - listener.enterOpt_by(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_by" ): - listener.exitOpt_by(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_by" ): - return visitor.visitOpt_by(self) - else: - return visitor.visitChildren(self) - - - - - def opt_by(self): - - localctx = PostgreSQLParser.Opt_byContext(self, self._ctx, self.state) - self.enterRule(localctx, 290, self.RULE_opt_by) - try: - self.state = 3323 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [147]: - self.enterOuterAlt(localctx, 1) - self.state = 3321 - self.match(PostgreSQLParser.BY) - pass - elif token in [12, 13, 658, 660]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NumericonlyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def fconst(self): - return self.getTypedRuleContext(PostgreSQLParser.FconstContext,0) - - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_numericonly - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNumericonly" ): - listener.enterNumericonly(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNumericonly" ): - listener.exitNumericonly(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNumericonly" ): - return visitor.visitNumericonly(self) - else: - return visitor.visitChildren(self) - - - - - def numericonly(self): - - localctx = PostgreSQLParser.NumericonlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 292, self.RULE_numericonly) - try: - self.state = 3331 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,137,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3325 - self.fconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3326 - self.match(PostgreSQLParser.PLUS) - self.state = 3327 - self.fconst() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3328 - self.match(PostgreSQLParser.MINUS) - self.state = 3329 - self.fconst() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3330 - self.signediconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Numericonly_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def numericonly(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NumericonlyContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_numericonly_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNumericonly_list" ): - listener.enterNumericonly_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNumericonly_list" ): - listener.exitNumericonly_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNumericonly_list" ): - return visitor.visitNumericonly_list(self) - else: - return visitor.visitChildren(self) - - - - - def numericonly_list(self): - - localctx = PostgreSQLParser.Numericonly_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 294, self.RULE_numericonly_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3333 - self.numericonly() - self.state = 3338 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3334 - self.match(PostgreSQLParser.COMMA) - self.state = 3335 - self.numericonly() - self.state = 3340 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateplangstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_or_replace(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_or_replaceContext,0) - - - def opt_trusted(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_trustedContext,0) - - - def opt_procedural(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_proceduralContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def HANDLER(self): - return self.getToken(PostgreSQLParser.HANDLER, 0) - - def handler_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Handler_nameContext,0) - - - def opt_inline_handler(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_inline_handlerContext,0) - - - def opt_validator(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_validatorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createplangstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateplangstmt" ): - listener.enterCreateplangstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateplangstmt" ): - listener.exitCreateplangstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateplangstmt" ): - return visitor.visitCreateplangstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createplangstmt(self): - - localctx = PostgreSQLParser.CreateplangstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 296, self.RULE_createplangstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3341 - self.match(PostgreSQLParser.CREATE) - self.state = 3342 - self.opt_or_replace() - self.state = 3343 - self.opt_trusted() - self.state = 3344 - self.opt_procedural() - self.state = 3345 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 3346 - self.name() - self.state = 3352 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==215: - self.state = 3347 - self.match(PostgreSQLParser.HANDLER) - self.state = 3348 - self.handler_name() - self.state = 3349 - self.opt_inline_handler() - self.state = 3350 - self.opt_validator() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_trustedContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRUSTED(self): - return self.getToken(PostgreSQLParser.TRUSTED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_trusted - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_trusted" ): - listener.enterOpt_trusted(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_trusted" ): - listener.exitOpt_trusted(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_trusted" ): - return visitor.visitOpt_trusted(self) - else: - return visitor.visitChildren(self) - - - - - def opt_trusted(self): - - localctx = PostgreSQLParser.Opt_trustedContext(self, self._ctx, self.state) - self.enterRule(localctx, 298, self.RULE_opt_trusted) - try: - self.state = 3356 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [352]: - self.enterOuterAlt(localctx, 1) - self.state = 3354 - self.match(PostgreSQLParser.TRUSTED) - pass - elif token in [238, 288]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Handler_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def attrs(self): - return self.getTypedRuleContext(PostgreSQLParser.AttrsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_handler_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHandler_name" ): - listener.enterHandler_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHandler_name" ): - listener.exitHandler_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHandler_name" ): - return visitor.visitHandler_name(self) - else: - return visitor.visitChildren(self) - - - - - def handler_name(self): - - localctx = PostgreSQLParser.Handler_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 300, self.RULE_handler_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3358 - self.name() - self.state = 3360 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==11: - self.state = 3359 - self.attrs() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_inline_handlerContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INLINE_P(self): - return self.getToken(PostgreSQLParser.INLINE_P, 0) - - def handler_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Handler_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_inline_handler - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_inline_handler" ): - listener.enterOpt_inline_handler(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_inline_handler" ): - listener.exitOpt_inline_handler(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_inline_handler" ): - return visitor.visitOpt_inline_handler(self) - else: - return visitor.visitChildren(self) - - - - - def opt_inline_handler(self): - - localctx = PostgreSQLParser.Opt_inline_handlerContext(self, self._ctx, self.state) - self.enterRule(localctx, 302, self.RULE_opt_inline_handler) - try: - self.state = 3365 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [230]: - self.enterOuterAlt(localctx, 1) - self.state = 3362 - self.match(PostgreSQLParser.INLINE_P) - self.state = 3363 - self.handler_name() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 262, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 366, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Validator_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VALIDATOR(self): - return self.getToken(PostgreSQLParser.VALIDATOR, 0) - - def handler_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Handler_nameContext,0) - - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_validator_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterValidator_clause" ): - listener.enterValidator_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitValidator_clause" ): - listener.exitValidator_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitValidator_clause" ): - return visitor.visitValidator_clause(self) - else: - return visitor.visitChildren(self) - - - - - def validator_clause(self): - - localctx = PostgreSQLParser.Validator_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 304, self.RULE_validator_clause) - try: - self.state = 3371 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [366]: - self.enterOuterAlt(localctx, 1) - self.state = 3367 - self.match(PostgreSQLParser.VALIDATOR) - self.state = 3368 - self.handler_name() - pass - elif token in [262]: - self.enterOuterAlt(localctx, 2) - self.state = 3369 - self.match(PostgreSQLParser.NO) - self.state = 3370 - self.match(PostgreSQLParser.VALIDATOR) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_validatorContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def validator_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Validator_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_validator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_validator" ): - listener.enterOpt_validator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_validator" ): - listener.exitOpt_validator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_validator" ): - return visitor.visitOpt_validator(self) - else: - return visitor.visitChildren(self) - - - - - def opt_validator(self): - - localctx = PostgreSQLParser.Opt_validatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 306, self.RULE_opt_validator) - try: - self.state = 3375 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262, 366]: - self.enterOuterAlt(localctx, 1) - self.state = 3373 - self.validator_clause() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_proceduralContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PROCEDURAL(self): - return self.getToken(PostgreSQLParser.PROCEDURAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_procedural - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_procedural" ): - listener.enterOpt_procedural(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_procedural" ): - listener.exitOpt_procedural(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_procedural" ): - return visitor.visitOpt_procedural(self) - else: - return visitor.visitChildren(self) - - - - - def opt_procedural(self): - - localctx = PostgreSQLParser.Opt_proceduralContext(self, self._ctx, self.state) - self.enterRule(localctx, 308, self.RULE_opt_procedural) - try: - self.state = 3379 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [288]: - self.enterOuterAlt(localctx, 1) - self.state = 3377 - self.match(PostgreSQLParser.PROCEDURAL) - pass - elif token in [238]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatetablespacestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opttablespaceowner(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablespaceownerContext,0) - - - def LOCATION(self): - return self.getToken(PostgreSQLParser.LOCATION, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def opt_reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_reloptionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createtablespacestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatetablespacestmt" ): - listener.enterCreatetablespacestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatetablespacestmt" ): - listener.exitCreatetablespacestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatetablespacestmt" ): - return visitor.visitCreatetablespacestmt(self) - else: - return visitor.visitChildren(self) - - - - - def createtablespacestmt(self): - - localctx = PostgreSQLParser.CreatetablespacestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 310, self.RULE_createtablespacestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3381 - self.match(PostgreSQLParser.CREATE) - self.state = 3382 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 3383 - self.name() - self.state = 3384 - self.opttablespaceowner() - self.state = 3385 - self.match(PostgreSQLParser.LOCATION) - self.state = 3386 - self.sconst() - self.state = 3387 - self.opt_reloptions() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttablespaceownerContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OWNER(self): - return self.getToken(PostgreSQLParser.OWNER, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttablespaceowner - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttablespaceowner" ): - listener.enterOpttablespaceowner(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttablespaceowner" ): - listener.exitOpttablespaceowner(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttablespaceowner" ): - return visitor.visitOpttablespaceowner(self) - else: - return visitor.visitChildren(self) - - - - - def opttablespaceowner(self): - - localctx = PostgreSQLParser.OpttablespaceownerContext(self, self._ctx, self.state) - self.enterRule(localctx, 312, self.RULE_opttablespaceowner) - try: - self.state = 3392 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [275]: - self.enterOuterAlt(localctx, 1) - self.state = 3389 - self.match(PostgreSQLParser.OWNER) - self.state = 3390 - self.rolespec() - pass - elif token in [246]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DroptablespacestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_droptablespacestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDroptablespacestmt" ): - listener.enterDroptablespacestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDroptablespacestmt" ): - listener.exitDroptablespacestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDroptablespacestmt" ): - return visitor.visitDroptablespacestmt(self) - else: - return visitor.visitChildren(self) - - - - - def droptablespacestmt(self): - - localctx = PostgreSQLParser.DroptablespacestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 314, self.RULE_droptablespacestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3394 - self.match(PostgreSQLParser.DROP) - self.state = 3395 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 3398 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,147,self._ctx) - if la_ == 1: - self.state = 3396 - self.match(PostgreSQLParser.IF_P) - self.state = 3397 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3400 - self.name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateextensionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def create_extension_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_extension_opt_listContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createextensionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateextensionstmt" ): - listener.enterCreateextensionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateextensionstmt" ): - listener.exitCreateextensionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateextensionstmt" ): - return visitor.visitCreateextensionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createextensionstmt(self): - - localctx = PostgreSQLParser.CreateextensionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 316, self.RULE_createextensionstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3402 - self.match(PostgreSQLParser.CREATE) - self.state = 3403 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3407 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,148,self._ctx) - if la_ == 1: - self.state = 3404 - self.match(PostgreSQLParser.IF_P) - self.state = 3405 - self.match(PostgreSQLParser.NOT) - self.state = 3406 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 3409 - self.name() - self.state = 3410 - self.opt_with() - self.state = 3411 - self.create_extension_opt_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Create_extension_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def create_extension_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Create_extension_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Create_extension_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_create_extension_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreate_extension_opt_list" ): - listener.enterCreate_extension_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreate_extension_opt_list" ): - listener.exitCreate_extension_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreate_extension_opt_list" ): - return visitor.visitCreate_extension_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def create_extension_opt_list(self): - - localctx = PostgreSQLParser.Create_extension_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 318, self.RULE_create_extension_opt_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3416 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==64 or _la==150 or _la==316 or _la==368: - self.state = 3413 - self.create_extension_opt_item() - self.state = 3418 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Create_extension_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def VERSION_P(self): - return self.getToken(PostgreSQLParser.VERSION_P, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def CASCADE(self): - return self.getToken(PostgreSQLParser.CASCADE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_create_extension_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreate_extension_opt_item" ): - listener.enterCreate_extension_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreate_extension_opt_item" ): - listener.exitCreate_extension_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreate_extension_opt_item" ): - return visitor.visitCreate_extension_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def create_extension_opt_item(self): - - localctx = PostgreSQLParser.Create_extension_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 320, self.RULE_create_extension_opt_item) - try: - self.state = 3426 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [316]: - self.enterOuterAlt(localctx, 1) - self.state = 3419 - self.match(PostgreSQLParser.SCHEMA) - self.state = 3420 - self.name() - pass - elif token in [368]: - self.enterOuterAlt(localctx, 2) - self.state = 3421 - self.match(PostgreSQLParser.VERSION_P) - self.state = 3422 - self.nonreservedword_or_sconst() - pass - elif token in [64]: - self.enterOuterAlt(localctx, 3) - self.state = 3423 - self.match(PostgreSQLParser.FROM) - self.state = 3424 - self.nonreservedword_or_sconst() - pass - elif token in [150]: - self.enterOuterAlt(localctx, 4) - self.state = 3425 - self.match(PostgreSQLParser.CASCADE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterextensionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def alter_extension_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_extension_opt_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterextensionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterextensionstmt" ): - listener.enterAlterextensionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterextensionstmt" ): - listener.exitAlterextensionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterextensionstmt" ): - return visitor.visitAlterextensionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterextensionstmt(self): - - localctx = PostgreSQLParser.AlterextensionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 322, self.RULE_alterextensionstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3428 - self.match(PostgreSQLParser.ALTER) - self.state = 3429 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3430 - self.name() - self.state = 3431 - self.match(PostgreSQLParser.UPDATE) - self.state = 3432 - self.alter_extension_opt_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_extension_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alter_extension_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alter_extension_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alter_extension_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_extension_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_extension_opt_list" ): - listener.enterAlter_extension_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_extension_opt_list" ): - listener.exitAlter_extension_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_extension_opt_list" ): - return visitor.visitAlter_extension_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def alter_extension_opt_list(self): - - localctx = PostgreSQLParser.Alter_extension_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 324, self.RULE_alter_extension_opt_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3437 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==94: - self.state = 3434 - self.alter_extension_opt_item() - self.state = 3439 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_extension_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_extension_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_extension_opt_item" ): - listener.enterAlter_extension_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_extension_opt_item" ): - listener.exitAlter_extension_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_extension_opt_item" ): - return visitor.visitAlter_extension_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def alter_extension_opt_item(self): - - localctx = PostgreSQLParser.Alter_extension_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 326, self.RULE_alter_extension_opt_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3440 - self.match(PostgreSQLParser.TO) - self.state = 3441 - self.nonreservedword_or_sconst() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterextensioncontentsstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def add_drop(self): - return self.getTypedRuleContext(PostgreSQLParser.Add_dropContext,0) - - - def object_type_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_nameContext,0) - - - def object_type_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_any_nameContext,0) - - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterextensioncontentsstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterextensioncontentsstmt" ): - listener.enterAlterextensioncontentsstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterextensioncontentsstmt" ): - listener.exitAlterextensioncontentsstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterextensioncontentsstmt" ): - return visitor.visitAlterextensioncontentsstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterextensioncontentsstmt(self): - - localctx = PostgreSQLParser.AlterextensioncontentsstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 328, self.RULE_alterextensioncontentsstmt) - try: - self.state = 3547 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,152,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3443 - self.match(PostgreSQLParser.ALTER) - self.state = 3444 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3445 - self.name() - self.state = 3446 - self.add_drop() - self.state = 3447 - self.object_type_name() - self.state = 3448 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3450 - self.match(PostgreSQLParser.ALTER) - self.state = 3451 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3452 - self.name() - self.state = 3453 - self.add_drop() - self.state = 3454 - self.object_type_any_name() - self.state = 3455 - self.any_name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3457 - self.match(PostgreSQLParser.ALTER) - self.state = 3458 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3459 - self.name() - self.state = 3460 - self.add_drop() - self.state = 3461 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 3462 - self.aggregate_with_argtypes() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3464 - self.match(PostgreSQLParser.ALTER) - self.state = 3465 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3466 - self.name() - self.state = 3467 - self.add_drop() - self.state = 3468 - self.match(PostgreSQLParser.CAST) - self.state = 3469 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3470 - self.typename() - self.state = 3471 - self.match(PostgreSQLParser.AS) - self.state = 3472 - self.typename() - self.state = 3473 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 3475 - self.match(PostgreSQLParser.ALTER) - self.state = 3476 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3477 - self.name() - self.state = 3478 - self.add_drop() - self.state = 3479 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 3480 - self.typename() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 3482 - self.match(PostgreSQLParser.ALTER) - self.state = 3483 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3484 - self.name() - self.state = 3485 - self.add_drop() - self.state = 3486 - self.match(PostgreSQLParser.FUNCTION) - self.state = 3487 - self.function_with_argtypes() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 3489 - self.match(PostgreSQLParser.ALTER) - self.state = 3490 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3491 - self.name() - self.state = 3492 - self.add_drop() - self.state = 3493 - self.match(PostgreSQLParser.OPERATOR) - self.state = 3494 - self.operator_with_argtypes() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 3496 - self.match(PostgreSQLParser.ALTER) - self.state = 3497 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3498 - self.name() - self.state = 3499 - self.add_drop() - self.state = 3500 - self.match(PostgreSQLParser.OPERATOR) - self.state = 3501 - self.match(PostgreSQLParser.CLASS) - self.state = 3502 - self.any_name() - self.state = 3503 - self.match(PostgreSQLParser.USING) - self.state = 3504 - self.name() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 3506 - self.match(PostgreSQLParser.ALTER) - self.state = 3507 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3508 - self.name() - self.state = 3509 - self.add_drop() - self.state = 3510 - self.match(PostgreSQLParser.OPERATOR) - self.state = 3511 - self.match(PostgreSQLParser.FAMILY) - self.state = 3512 - self.any_name() - self.state = 3513 - self.match(PostgreSQLParser.USING) - self.state = 3514 - self.name() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 3516 - self.match(PostgreSQLParser.ALTER) - self.state = 3517 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3518 - self.name() - self.state = 3519 - self.add_drop() - self.state = 3520 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 3521 - self.function_with_argtypes() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 3523 - self.match(PostgreSQLParser.ALTER) - self.state = 3524 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3525 - self.name() - self.state = 3526 - self.add_drop() - self.state = 3527 - self.match(PostgreSQLParser.ROUTINE) - self.state = 3528 - self.function_with_argtypes() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 3530 - self.match(PostgreSQLParser.ALTER) - self.state = 3531 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3532 - self.name() - self.state = 3533 - self.add_drop() - self.state = 3534 - self.match(PostgreSQLParser.TRANSFORM) - self.state = 3535 - self.match(PostgreSQLParser.FOR) - self.state = 3536 - self.typename() - self.state = 3537 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 3538 - self.name() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 3540 - self.match(PostgreSQLParser.ALTER) - self.state = 3541 - self.match(PostgreSQLParser.EXTENSION) - self.state = 3542 - self.name() - self.state = 3543 - self.add_drop() - self.state = 3544 - self.match(PostgreSQLParser.TYPE_P) - self.state = 3545 - self.typename() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatefdwstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_fdw_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_fdw_optionsContext,0) - - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createfdwstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatefdwstmt" ): - listener.enterCreatefdwstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatefdwstmt" ): - listener.exitCreatefdwstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatefdwstmt" ): - return visitor.visitCreatefdwstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createfdwstmt(self): - - localctx = PostgreSQLParser.CreatefdwstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 330, self.RULE_createfdwstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3549 - self.match(PostgreSQLParser.CREATE) - self.state = 3550 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3551 - self.match(PostgreSQLParser.DATA_P) - self.state = 3552 - self.match(PostgreSQLParser.WRAPPER) - self.state = 3553 - self.name() - self.state = 3554 - self.opt_fdw_options() - self.state = 3555 - self.create_generic_options() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Fdw_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def HANDLER(self): - return self.getToken(PostgreSQLParser.HANDLER, 0) - - def handler_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Handler_nameContext,0) - - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def VALIDATOR(self): - return self.getToken(PostgreSQLParser.VALIDATOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_fdw_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFdw_option" ): - listener.enterFdw_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFdw_option" ): - listener.exitFdw_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFdw_option" ): - return visitor.visitFdw_option(self) - else: - return visitor.visitChildren(self) - - - - - def fdw_option(self): - - localctx = PostgreSQLParser.Fdw_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 332, self.RULE_fdw_option) - try: - self.state = 3565 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,153,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3557 - self.match(PostgreSQLParser.HANDLER) - self.state = 3558 - self.handler_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3559 - self.match(PostgreSQLParser.NO) - self.state = 3560 - self.match(PostgreSQLParser.HANDLER) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3561 - self.match(PostgreSQLParser.VALIDATOR) - self.state = 3562 - self.handler_name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3563 - self.match(PostgreSQLParser.NO) - self.state = 3564 - self.match(PostgreSQLParser.VALIDATOR) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Fdw_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def fdw_option(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Fdw_optionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Fdw_optionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_fdw_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFdw_options" ): - listener.enterFdw_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFdw_options" ): - listener.exitFdw_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFdw_options" ): - return visitor.visitFdw_options(self) - else: - return visitor.visitChildren(self) - - - - - def fdw_options(self): - - localctx = PostgreSQLParser.Fdw_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 334, self.RULE_fdw_options) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3568 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 3567 - self.fdw_option() - self.state = 3570 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==215 or _la==262 or _la==366): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_fdw_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def fdw_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Fdw_optionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_fdw_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_fdw_options" ): - listener.enterOpt_fdw_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_fdw_options" ): - listener.exitOpt_fdw_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_fdw_options" ): - return visitor.visitOpt_fdw_options(self) - else: - return visitor.visitChildren(self) - - - - - def opt_fdw_options(self): - - localctx = PostgreSQLParser.Opt_fdw_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 336, self.RULE_opt_fdw_options) - try: - self.state = 3574 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [215, 262, 366]: - self.enterOuterAlt(localctx, 1) - self.state = 3572 - self.fdw_options() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 273, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterfdwstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_fdw_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_fdw_optionsContext,0) - - - def alter_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_optionsContext,0) - - - def fdw_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Fdw_optionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterfdwstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterfdwstmt" ): - listener.enterAlterfdwstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterfdwstmt" ): - listener.exitAlterfdwstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterfdwstmt" ): - return visitor.visitAlterfdwstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterfdwstmt(self): - - localctx = PostgreSQLParser.AlterfdwstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 338, self.RULE_alterfdwstmt) - try: - self.state = 3591 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,156,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3576 - self.match(PostgreSQLParser.ALTER) - self.state = 3577 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3578 - self.match(PostgreSQLParser.DATA_P) - self.state = 3579 - self.match(PostgreSQLParser.WRAPPER) - self.state = 3580 - self.name() - self.state = 3581 - self.opt_fdw_options() - self.state = 3582 - self.alter_generic_options() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3584 - self.match(PostgreSQLParser.ALTER) - self.state = 3585 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3586 - self.match(PostgreSQLParser.DATA_P) - self.state = 3587 - self.match(PostgreSQLParser.WRAPPER) - self.state = 3588 - self.name() - self.state = 3589 - self.fdw_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Create_generic_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPTIONS(self): - return self.getToken(PostgreSQLParser.OPTIONS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def generic_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_create_generic_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreate_generic_options" ): - listener.enterCreate_generic_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreate_generic_options" ): - listener.exitCreate_generic_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreate_generic_options" ): - return visitor.visitCreate_generic_options(self) - else: - return visitor.visitChildren(self) - - - - - def create_generic_options(self): - - localctx = PostgreSQLParser.Create_generic_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 340, self.RULE_create_generic_options) - try: - self.state = 3599 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [273]: - self.enterOuterAlt(localctx, 1) - self.state = 3593 - self.match(PostgreSQLParser.OPTIONS) - self.state = 3594 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3595 - self.generic_option_list() - self.state = 3596 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 42, 43, 45, 46, 53, 54, 57, 61, 65, 69, 71, 77, 78, 85, 86, 88, 92, 98, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 438, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generic_option_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Generic_option_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_option_list" ): - listener.enterGeneric_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_option_list" ): - listener.exitGeneric_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_option_list" ): - return visitor.visitGeneric_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def generic_option_list(self): - - localctx = PostgreSQLParser.Generic_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 342, self.RULE_generic_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3601 - self.generic_option_elem() - self.state = 3606 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3602 - self.match(PostgreSQLParser.COMMA) - self.state = 3603 - self.generic_option_elem() - self.state = 3608 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_generic_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPTIONS(self): - return self.getToken(PostgreSQLParser.OPTIONS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def alter_generic_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_generic_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_generic_options" ): - listener.enterAlter_generic_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_generic_options" ): - listener.exitAlter_generic_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_generic_options" ): - return visitor.visitAlter_generic_options(self) - else: - return visitor.visitChildren(self) - - - - - def alter_generic_options(self): - - localctx = PostgreSQLParser.Alter_generic_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 344, self.RULE_alter_generic_options) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3609 - self.match(PostgreSQLParser.OPTIONS) - self.state = 3610 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3611 - self.alter_generic_option_list() - self.state = 3612 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_generic_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alter_generic_option_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alter_generic_option_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_option_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_generic_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_generic_option_list" ): - listener.enterAlter_generic_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_generic_option_list" ): - listener.exitAlter_generic_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_generic_option_list" ): - return visitor.visitAlter_generic_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def alter_generic_option_list(self): - - localctx = PostgreSQLParser.Alter_generic_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 346, self.RULE_alter_generic_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3614 - self.alter_generic_option_elem() - self.state = 3619 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 3615 - self.match(PostgreSQLParser.COMMA) - self.state = 3616 - self.alter_generic_option_elem() - self.state = 3621 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alter_generic_option_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generic_option_elem(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_elemContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def generic_option_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alter_generic_option_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlter_generic_option_elem" ): - listener.enterAlter_generic_option_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlter_generic_option_elem" ): - listener.exitAlter_generic_option_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlter_generic_option_elem" ): - return visitor.visitAlter_generic_option_elem(self) - else: - return visitor.visitChildren(self) - - - - - def alter_generic_option_elem(self): - - localctx = PostgreSQLParser.Alter_generic_option_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 348, self.RULE_alter_generic_option_elem) - try: - self.state = 3629 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,160,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3622 - self.generic_option_elem() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3623 - self.match(PostgreSQLParser.SET) - self.state = 3624 - self.generic_option_elem() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3625 - self.match(PostgreSQLParser.ADD_P) - self.state = 3626 - self.generic_option_elem() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3627 - self.match(PostgreSQLParser.DROP) - self.state = 3628 - self.generic_option_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_option_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generic_option_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_nameContext,0) - - - def generic_option_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_option_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_option_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_option_elem" ): - listener.enterGeneric_option_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_option_elem" ): - listener.exitGeneric_option_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_option_elem" ): - return visitor.visitGeneric_option_elem(self) - else: - return visitor.visitChildren(self) - - - - - def generic_option_elem(self): - - localctx = PostgreSQLParser.Generic_option_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 350, self.RULE_generic_option_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3631 - self.generic_option_name() - self.state = 3632 - self.generic_option_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_option_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_option_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_option_name" ): - listener.enterGeneric_option_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_option_name" ): - listener.exitGeneric_option_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_option_name" ): - return visitor.visitGeneric_option_name(self) - else: - return visitor.visitChildren(self) - - - - - def generic_option_name(self): - - localctx = PostgreSQLParser.Generic_option_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 352, self.RULE_generic_option_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3634 - self.collabel() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Generic_option_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generic_option_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGeneric_option_arg" ): - listener.enterGeneric_option_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGeneric_option_arg" ): - listener.exitGeneric_option_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGeneric_option_arg" ): - return visitor.visitGeneric_option_arg(self) - else: - return visitor.visitChildren(self) - - - - - def generic_option_arg(self): - - localctx = PostgreSQLParser.Generic_option_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 354, self.RULE_generic_option_arg) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3636 - self.sconst() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateforeignserverstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def opt_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_typeContext,0) - - - def opt_foreign_server_version(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_foreign_server_versionContext,0) - - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createforeignserverstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateforeignserverstmt" ): - listener.enterCreateforeignserverstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateforeignserverstmt" ): - listener.exitCreateforeignserverstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateforeignserverstmt" ): - return visitor.visitCreateforeignserverstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createforeignserverstmt(self): - - localctx = PostgreSQLParser.CreateforeignserverstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 356, self.RULE_createforeignserverstmt) - try: - self.state = 3663 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,161,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3638 - self.match(PostgreSQLParser.CREATE) - self.state = 3639 - self.match(PostgreSQLParser.SERVER) - self.state = 3640 - self.name() - self.state = 3641 - self.opt_type() - self.state = 3642 - self.opt_foreign_server_version() - self.state = 3643 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3644 - self.match(PostgreSQLParser.DATA_P) - self.state = 3645 - self.match(PostgreSQLParser.WRAPPER) - self.state = 3646 - self.name() - self.state = 3647 - self.create_generic_options() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3649 - self.match(PostgreSQLParser.CREATE) - self.state = 3650 - self.match(PostgreSQLParser.SERVER) - self.state = 3651 - self.match(PostgreSQLParser.IF_P) - self.state = 3652 - self.match(PostgreSQLParser.NOT) - self.state = 3653 - self.match(PostgreSQLParser.EXISTS) - self.state = 3654 - self.name() - self.state = 3655 - self.opt_type() - self.state = 3656 - self.opt_foreign_server_version() - self.state = 3657 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3658 - self.match(PostgreSQLParser.DATA_P) - self.state = 3659 - self.match(PostgreSQLParser.WRAPPER) - self.state = 3660 - self.name() - self.state = 3661 - self.create_generic_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_type" ): - listener.enterOpt_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_type" ): - listener.exitOpt_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_type" ): - return visitor.visitOpt_type(self) - else: - return visitor.visitChildren(self) - - - - - def opt_type(self): - - localctx = PostgreSQLParser.Opt_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 358, self.RULE_opt_type) - try: - self.state = 3668 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [353]: - self.enterOuterAlt(localctx, 1) - self.state = 3665 - self.match(PostgreSQLParser.TYPE_P) - self.state = 3666 - self.sconst() - pass - elif token in [63, 368]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Foreign_server_versionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VERSION_P(self): - return self.getToken(PostgreSQLParser.VERSION_P, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_foreign_server_version - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForeign_server_version" ): - listener.enterForeign_server_version(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForeign_server_version" ): - listener.exitForeign_server_version(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForeign_server_version" ): - return visitor.visitForeign_server_version(self) - else: - return visitor.visitChildren(self) - - - - - def foreign_server_version(self): - - localctx = PostgreSQLParser.Foreign_server_versionContext(self, self._ctx, self.state) - self.enterRule(localctx, 360, self.RULE_foreign_server_version) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3670 - self.match(PostgreSQLParser.VERSION_P) - self.state = 3673 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.state = 3671 - self.sconst() - pass - elif token in [78]: - self.state = 3672 - self.match(PostgreSQLParser.NULL_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_foreign_server_versionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def foreign_server_version(self): - return self.getTypedRuleContext(PostgreSQLParser.Foreign_server_versionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_foreign_server_version - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_foreign_server_version" ): - listener.enterOpt_foreign_server_version(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_foreign_server_version" ): - listener.exitOpt_foreign_server_version(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_foreign_server_version" ): - return visitor.visitOpt_foreign_server_version(self) - else: - return visitor.visitChildren(self) - - - - - def opt_foreign_server_version(self): - - localctx = PostgreSQLParser.Opt_foreign_server_versionContext(self, self._ctx, self.state) - self.enterRule(localctx, 362, self.RULE_opt_foreign_server_version) - try: - self.state = 3677 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [368]: - self.enterOuterAlt(localctx, 1) - self.state = 3675 - self.foreign_server_version() - pass - elif token in [63]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterforeignserverstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def alter_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_optionsContext,0) - - - def foreign_server_version(self): - return self.getTypedRuleContext(PostgreSQLParser.Foreign_server_versionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterforeignserverstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterforeignserverstmt" ): - listener.enterAlterforeignserverstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterforeignserverstmt" ): - listener.exitAlterforeignserverstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterforeignserverstmt" ): - return visitor.visitAlterforeignserverstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterforeignserverstmt(self): - - localctx = PostgreSQLParser.AlterforeignserverstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 364, self.RULE_alterforeignserverstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3679 - self.match(PostgreSQLParser.ALTER) - self.state = 3680 - self.match(PostgreSQLParser.SERVER) - self.state = 3681 - self.name() - self.state = 3687 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [273]: - self.state = 3682 - self.alter_generic_options() - pass - elif token in [368]: - self.state = 3683 - self.foreign_server_version() - self.state = 3685 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==273: - self.state = 3684 - self.alter_generic_options() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateforeigntablestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def qualified_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Qualified_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,i) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opttableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttableelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def optinherit(self): - return self.getTypedRuleContext(PostgreSQLParser.OptinheritContext,0) - - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def opttypedtableelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttypedtableelementlistContext,0) - - - def partitionboundspec(self): - return self.getTypedRuleContext(PostgreSQLParser.PartitionboundspecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createforeigntablestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateforeigntablestmt" ): - listener.enterCreateforeigntablestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateforeigntablestmt" ): - listener.exitCreateforeigntablestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateforeigntablestmt" ): - return visitor.visitCreateforeigntablestmt(self) - else: - return visitor.visitChildren(self) - - - - - def createforeigntablestmt(self): - - localctx = PostgreSQLParser.CreateforeigntablestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 366, self.RULE_createforeigntablestmt) - try: - self.state = 3745 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,167,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3689 - self.match(PostgreSQLParser.CREATE) - self.state = 3690 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3691 - self.match(PostgreSQLParser.TABLE) - self.state = 3692 - self.qualified_name() - self.state = 3693 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3694 - self.opttableelementlist() - self.state = 3695 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 3696 - self.optinherit() - self.state = 3697 - self.match(PostgreSQLParser.SERVER) - self.state = 3698 - self.name() - self.state = 3699 - self.create_generic_options() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3701 - self.match(PostgreSQLParser.CREATE) - self.state = 3702 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3703 - self.match(PostgreSQLParser.TABLE) - self.state = 3704 - self.match(PostgreSQLParser.IF_P) - self.state = 3705 - self.match(PostgreSQLParser.NOT) - self.state = 3706 - self.match(PostgreSQLParser.EXISTS) - self.state = 3707 - self.qualified_name() - self.state = 3708 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3709 - self.opttableelementlist() - self.state = 3710 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 3711 - self.optinherit() - self.state = 3712 - self.match(PostgreSQLParser.SERVER) - self.state = 3713 - self.name() - self.state = 3714 - self.create_generic_options() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3716 - self.match(PostgreSQLParser.CREATE) - self.state = 3717 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3718 - self.match(PostgreSQLParser.TABLE) - self.state = 3719 - self.qualified_name() - self.state = 3720 - self.match(PostgreSQLParser.PARTITION) - self.state = 3721 - self.match(PostgreSQLParser.OF) - self.state = 3722 - self.qualified_name() - self.state = 3723 - self.opttypedtableelementlist() - self.state = 3724 - self.partitionboundspec() - self.state = 3725 - self.match(PostgreSQLParser.SERVER) - self.state = 3726 - self.name() - self.state = 3727 - self.create_generic_options() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3729 - self.match(PostgreSQLParser.CREATE) - self.state = 3730 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3731 - self.match(PostgreSQLParser.TABLE) - self.state = 3732 - self.match(PostgreSQLParser.IF_P) - self.state = 3733 - self.match(PostgreSQLParser.NOT) - self.state = 3734 - self.match(PostgreSQLParser.EXISTS) - self.state = 3735 - self.qualified_name() - self.state = 3736 - self.match(PostgreSQLParser.PARTITION) - self.state = 3737 - self.match(PostgreSQLParser.OF) - self.state = 3738 - self.qualified_name() - self.state = 3739 - self.opttypedtableelementlist() - self.state = 3740 - self.partitionboundspec() - self.state = 3741 - self.match(PostgreSQLParser.SERVER) - self.state = 3742 - self.name() - self.state = 3743 - self.create_generic_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ImportforeignschemastmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IMPORT_P(self): - return self.getToken(PostgreSQLParser.IMPORT_P, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def import_qualification(self): - return self.getTypedRuleContext(PostgreSQLParser.Import_qualificationContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_importforeignschemastmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImportforeignschemastmt" ): - listener.enterImportforeignschemastmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImportforeignschemastmt" ): - listener.exitImportforeignschemastmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitImportforeignschemastmt" ): - return visitor.visitImportforeignschemastmt(self) - else: - return visitor.visitChildren(self) - - - - - def importforeignschemastmt(self): - - localctx = PostgreSQLParser.ImportforeignschemastmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 368, self.RULE_importforeignschemastmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3747 - self.match(PostgreSQLParser.IMPORT_P) - self.state = 3748 - self.match(PostgreSQLParser.FOREIGN) - self.state = 3749 - self.match(PostgreSQLParser.SCHEMA) - self.state = 3750 - self.name() - self.state = 3751 - self.import_qualification() - self.state = 3752 - self.match(PostgreSQLParser.FROM) - self.state = 3753 - self.match(PostgreSQLParser.SERVER) - self.state = 3754 - self.name() - self.state = 3755 - self.match(PostgreSQLParser.INTO) - self.state = 3756 - self.name() - self.state = 3757 - self.create_generic_options() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Import_qualification_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LIMIT(self): - return self.getToken(PostgreSQLParser.LIMIT, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def EXCEPT(self): - return self.getToken(PostgreSQLParser.EXCEPT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_import_qualification_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImport_qualification_type" ): - listener.enterImport_qualification_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImport_qualification_type" ): - listener.exitImport_qualification_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitImport_qualification_type" ): - return visitor.visitImport_qualification_type(self) - else: - return visitor.visitChildren(self) - - - - - def import_qualification_type(self): - - localctx = PostgreSQLParser.Import_qualification_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 370, self.RULE_import_qualification_type) - try: - self.state = 3762 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [74]: - self.enterOuterAlt(localctx, 1) - self.state = 3759 - self.match(PostgreSQLParser.LIMIT) - self.state = 3760 - self.match(PostgreSQLParser.TO) - pass - elif token in [59]: - self.enterOuterAlt(localctx, 2) - self.state = 3761 - self.match(PostgreSQLParser.EXCEPT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Import_qualificationContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def import_qualification_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Import_qualification_typeContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def relation_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_import_qualification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImport_qualification" ): - listener.enterImport_qualification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImport_qualification" ): - listener.exitImport_qualification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitImport_qualification" ): - return visitor.visitImport_qualification(self) - else: - return visitor.visitChildren(self) - - - - - def import_qualification(self): - - localctx = PostgreSQLParser.Import_qualificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 372, self.RULE_import_qualification) - try: - self.state = 3770 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [59, 74]: - self.enterOuterAlt(localctx, 1) - self.state = 3764 - self.import_qualification_type() - self.state = 3765 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3766 - self.relation_expr_list() - self.state = 3767 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [64]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateusermappingstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def MAPPING(self): - return self.getToken(PostgreSQLParser.MAPPING, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def auth_ident(self): - return self.getTypedRuleContext(PostgreSQLParser.Auth_identContext,0) - - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def create_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_generic_optionsContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createusermappingstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateusermappingstmt" ): - listener.enterCreateusermappingstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateusermappingstmt" ): - listener.exitCreateusermappingstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateusermappingstmt" ): - return visitor.visitCreateusermappingstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createusermappingstmt(self): - - localctx = PostgreSQLParser.CreateusermappingstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 374, self.RULE_createusermappingstmt) - try: - self.state = 3793 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,170,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3772 - self.match(PostgreSQLParser.CREATE) - self.state = 3773 - self.match(PostgreSQLParser.USER) - self.state = 3774 - self.match(PostgreSQLParser.MAPPING) - self.state = 3775 - self.match(PostgreSQLParser.FOR) - self.state = 3776 - self.auth_ident() - self.state = 3777 - self.match(PostgreSQLParser.SERVER) - self.state = 3778 - self.name() - self.state = 3779 - self.create_generic_options() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3781 - self.match(PostgreSQLParser.CREATE) - self.state = 3782 - self.match(PostgreSQLParser.USER) - self.state = 3783 - self.match(PostgreSQLParser.MAPPING) - self.state = 3784 - self.match(PostgreSQLParser.IF_P) - self.state = 3785 - self.match(PostgreSQLParser.NOT) - self.state = 3786 - self.match(PostgreSQLParser.EXISTS) - self.state = 3787 - self.match(PostgreSQLParser.FOR) - self.state = 3788 - self.auth_ident() - self.state = 3789 - self.match(PostgreSQLParser.SERVER) - self.state = 3790 - self.name() - self.state = 3791 - self.create_generic_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Auth_identContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_auth_ident - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAuth_ident" ): - listener.enterAuth_ident(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAuth_ident" ): - listener.exitAuth_ident(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAuth_ident" ): - return visitor.visitAuth_ident(self) - else: - return visitor.visitChildren(self) - - - - - def auth_ident(self): - - localctx = PostgreSQLParser.Auth_identContext(self, self._ctx, self.state) - self.enterRule(localctx, 376, self.RULE_auth_ident) - try: - self.state = 3797 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 52, 53, 57, 61, 89, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 3795 - self.rolespec() - pass - elif token in [99]: - self.enterOuterAlt(localctx, 2) - self.state = 3796 - self.match(PostgreSQLParser.USER) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropusermappingstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def MAPPING(self): - return self.getToken(PostgreSQLParser.MAPPING, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def auth_ident(self): - return self.getTypedRuleContext(PostgreSQLParser.Auth_identContext,0) - - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropusermappingstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropusermappingstmt" ): - listener.enterDropusermappingstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropusermappingstmt" ): - listener.exitDropusermappingstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropusermappingstmt" ): - return visitor.visitDropusermappingstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropusermappingstmt(self): - - localctx = PostgreSQLParser.DropusermappingstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 378, self.RULE_dropusermappingstmt) - try: - self.state = 3817 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,172,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3799 - self.match(PostgreSQLParser.DROP) - self.state = 3800 - self.match(PostgreSQLParser.USER) - self.state = 3801 - self.match(PostgreSQLParser.MAPPING) - self.state = 3802 - self.match(PostgreSQLParser.FOR) - self.state = 3803 - self.auth_ident() - self.state = 3804 - self.match(PostgreSQLParser.SERVER) - self.state = 3805 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3807 - self.match(PostgreSQLParser.DROP) - self.state = 3808 - self.match(PostgreSQLParser.USER) - self.state = 3809 - self.match(PostgreSQLParser.MAPPING) - self.state = 3810 - self.match(PostgreSQLParser.IF_P) - self.state = 3811 - self.match(PostgreSQLParser.EXISTS) - self.state = 3812 - self.match(PostgreSQLParser.FOR) - self.state = 3813 - self.auth_ident() - self.state = 3814 - self.match(PostgreSQLParser.SERVER) - self.state = 3815 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterusermappingstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def MAPPING(self): - return self.getToken(PostgreSQLParser.MAPPING, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def auth_ident(self): - return self.getTypedRuleContext(PostgreSQLParser.Auth_identContext,0) - - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def alter_generic_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_generic_optionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterusermappingstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterusermappingstmt" ): - listener.enterAlterusermappingstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterusermappingstmt" ): - listener.exitAlterusermappingstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterusermappingstmt" ): - return visitor.visitAlterusermappingstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterusermappingstmt(self): - - localctx = PostgreSQLParser.AlterusermappingstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 380, self.RULE_alterusermappingstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3819 - self.match(PostgreSQLParser.ALTER) - self.state = 3820 - self.match(PostgreSQLParser.USER) - self.state = 3821 - self.match(PostgreSQLParser.MAPPING) - self.state = 3822 - self.match(PostgreSQLParser.FOR) - self.state = 3823 - self.auth_ident() - self.state = 3824 - self.match(PostgreSQLParser.SERVER) - self.state = 3825 - self.name() - self.state = 3826 - self.alter_generic_options() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatepolicystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def POLICY(self): - return self.getToken(PostgreSQLParser.POLICY, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def rowsecuritydefaultpermissive(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecuritydefaultpermissiveContext,0) - - - def rowsecuritydefaultforcmd(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecuritydefaultforcmdContext,0) - - - def rowsecuritydefaulttorole(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecuritydefaulttoroleContext,0) - - - def rowsecurityoptionalexpr(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecurityoptionalexprContext,0) - - - def rowsecurityoptionalwithcheck(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecurityoptionalwithcheckContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createpolicystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatepolicystmt" ): - listener.enterCreatepolicystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatepolicystmt" ): - listener.exitCreatepolicystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatepolicystmt" ): - return visitor.visitCreatepolicystmt(self) - else: - return visitor.visitChildren(self) - - - - - def createpolicystmt(self): - - localctx = PostgreSQLParser.CreatepolicystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 382, self.RULE_createpolicystmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3828 - self.match(PostgreSQLParser.CREATE) - self.state = 3829 - self.match(PostgreSQLParser.POLICY) - self.state = 3830 - self.name() - self.state = 3831 - self.match(PostgreSQLParser.ON) - self.state = 3832 - self.qualified_name() - self.state = 3833 - self.rowsecuritydefaultpermissive() - self.state = 3834 - self.rowsecuritydefaultforcmd() - self.state = 3835 - self.rowsecuritydefaulttorole() - self.state = 3836 - self.rowsecurityoptionalexpr() - self.state = 3837 - self.rowsecurityoptionalwithcheck() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterpolicystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def POLICY(self): - return self.getToken(PostgreSQLParser.POLICY, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def rowsecurityoptionaltorole(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecurityoptionaltoroleContext,0) - - - def rowsecurityoptionalexpr(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecurityoptionalexprContext,0) - - - def rowsecurityoptionalwithcheck(self): - return self.getTypedRuleContext(PostgreSQLParser.RowsecurityoptionalwithcheckContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterpolicystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterpolicystmt" ): - listener.enterAlterpolicystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterpolicystmt" ): - listener.exitAlterpolicystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterpolicystmt" ): - return visitor.visitAlterpolicystmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterpolicystmt(self): - - localctx = PostgreSQLParser.AlterpolicystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 384, self.RULE_alterpolicystmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3839 - self.match(PostgreSQLParser.ALTER) - self.state = 3840 - self.match(PostgreSQLParser.POLICY) - self.state = 3841 - self.name() - self.state = 3842 - self.match(PostgreSQLParser.ON) - self.state = 3843 - self.qualified_name() - self.state = 3844 - self.rowsecurityoptionaltorole() - self.state = 3845 - self.rowsecurityoptionalexpr() - self.state = 3846 - self.rowsecurityoptionalwithcheck() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecurityoptionalexprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecurityoptionalexpr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecurityoptionalexpr" ): - listener.enterRowsecurityoptionalexpr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecurityoptionalexpr" ): - listener.exitRowsecurityoptionalexpr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecurityoptionalexpr" ): - return visitor.visitRowsecurityoptionalexpr(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecurityoptionalexpr(self): - - localctx = PostgreSQLParser.RowsecurityoptionalexprContext(self, self._ctx, self.state) - self.enterRule(localctx, 386, self.RULE_rowsecurityoptionalexpr) - try: - self.state = 3854 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 3848 - self.match(PostgreSQLParser.USING) - self.state = 3849 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3850 - self.a_expr() - self.state = 3851 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecurityoptionalwithcheckContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecurityoptionalwithcheck - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecurityoptionalwithcheck" ): - listener.enterRowsecurityoptionalwithcheck(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecurityoptionalwithcheck" ): - listener.exitRowsecurityoptionalwithcheck(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecurityoptionalwithcheck" ): - return visitor.visitRowsecurityoptionalwithcheck(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecurityoptionalwithcheck(self): - - localctx = PostgreSQLParser.RowsecurityoptionalwithcheckContext(self, self._ctx, self.state) - self.enterRule(localctx, 388, self.RULE_rowsecurityoptionalwithcheck) - try: - self.state = 3863 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,174,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3856 - self.match(PostgreSQLParser.WITH) - self.state = 3857 - self.match(PostgreSQLParser.CHECK) - self.state = 3858 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3859 - self.a_expr() - self.state = 3860 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecuritydefaulttoroleContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecuritydefaulttorole - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecuritydefaulttorole" ): - listener.enterRowsecuritydefaulttorole(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecuritydefaulttorole" ): - listener.exitRowsecuritydefaulttorole(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecuritydefaulttorole" ): - return visitor.visitRowsecuritydefaulttorole(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecuritydefaulttorole(self): - - localctx = PostgreSQLParser.RowsecuritydefaulttoroleContext(self, self._ctx, self.state) - self.enterRule(localctx, 390, self.RULE_rowsecuritydefaulttorole) - try: - self.state = 3868 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [94]: - self.enterOuterAlt(localctx, 1) - self.state = 3865 - self.match(PostgreSQLParser.TO) - self.state = 3866 - self.role_list() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecurityoptionaltoroleContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecurityoptionaltorole - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecurityoptionaltorole" ): - listener.enterRowsecurityoptionaltorole(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecurityoptionaltorole" ): - listener.exitRowsecurityoptionaltorole(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecurityoptionaltorole" ): - return visitor.visitRowsecurityoptionaltorole(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecurityoptionaltorole(self): - - localctx = PostgreSQLParser.RowsecurityoptionaltoroleContext(self, self._ctx, self.state) - self.enterRule(localctx, 392, self.RULE_rowsecurityoptionaltorole) - try: - self.state = 3873 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [94]: - self.enterOuterAlt(localctx, 1) - self.state = 3870 - self.match(PostgreSQLParser.TO) - self.state = 3871 - self.role_list() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecuritydefaultpermissiveContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecuritydefaultpermissive - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecuritydefaultpermissive" ): - listener.enterRowsecuritydefaultpermissive(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecuritydefaultpermissive" ): - listener.exitRowsecuritydefaultpermissive(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecuritydefaultpermissive" ): - return visitor.visitRowsecuritydefaultpermissive(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecuritydefaultpermissive(self): - - localctx = PostgreSQLParser.RowsecuritydefaultpermissiveContext(self, self._ctx, self.state) - self.enterRule(localctx, 394, self.RULE_rowsecuritydefaultpermissive) - try: - self.state = 3878 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.enterOuterAlt(localctx, 1) - self.state = 3875 - self.match(PostgreSQLParser.AS) - self.state = 3876 - self.identifier() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 62, 65, 71, 88, 92, 94, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowsecuritydefaultforcmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def row_security_cmd(self): - return self.getTypedRuleContext(PostgreSQLParser.Row_security_cmdContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsecuritydefaultforcmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsecuritydefaultforcmd" ): - listener.enterRowsecuritydefaultforcmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsecuritydefaultforcmd" ): - listener.exitRowsecuritydefaultforcmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsecuritydefaultforcmd" ): - return visitor.visitRowsecuritydefaultforcmd(self) - else: - return visitor.visitChildren(self) - - - - - def rowsecuritydefaultforcmd(self): - - localctx = PostgreSQLParser.RowsecuritydefaultforcmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 396, self.RULE_rowsecuritydefaultforcmd) - try: - self.state = 3883 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - self.state = 3880 - self.match(PostgreSQLParser.FOR) - self.state = 3881 - self.row_security_cmd() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 94, 100, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Row_security_cmdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def SELECT(self): - return self.getToken(PostgreSQLParser.SELECT, 0) - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_row_security_cmd - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRow_security_cmd" ): - listener.enterRow_security_cmd(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRow_security_cmd" ): - listener.exitRow_security_cmd(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRow_security_cmd" ): - return visitor.visitRow_security_cmd(self) - else: - return visitor.visitChildren(self) - - - - - def row_security_cmd(self): - - localctx = PostgreSQLParser.Row_security_cmdContext(self, self._ctx, self.state) - self.enterRule(localctx, 398, self.RULE_row_security_cmd) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3885 - _la = self._input.LA(1) - if not(_la==30 or _la==88 or _la==182 or _la==232 or _la==362): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateamstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def ACCESS(self): - return self.getToken(PostgreSQLParser.ACCESS, 0) - - def METHOD(self): - return self.getToken(PostgreSQLParser.METHOD, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def am_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Am_typeContext,0) - - - def HANDLER(self): - return self.getToken(PostgreSQLParser.HANDLER, 0) - - def handler_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Handler_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createamstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateamstmt" ): - listener.enterCreateamstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateamstmt" ): - listener.exitCreateamstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateamstmt" ): - return visitor.visitCreateamstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createamstmt(self): - - localctx = PostgreSQLParser.CreateamstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 400, self.RULE_createamstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3887 - self.match(PostgreSQLParser.CREATE) - self.state = 3888 - self.match(PostgreSQLParser.ACCESS) - self.state = 3889 - self.match(PostgreSQLParser.METHOD) - self.state = 3890 - self.name() - self.state = 3891 - self.match(PostgreSQLParser.TYPE_P) - self.state = 3892 - self.am_type() - self.state = 3893 - self.match(PostgreSQLParser.HANDLER) - self.state = 3894 - self.handler_name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Am_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_am_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAm_type" ): - listener.enterAm_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAm_type" ): - listener.exitAm_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAm_type" ): - return visitor.visitAm_type(self) - else: - return visitor.visitChildren(self) - - - - - def am_type(self): - - localctx = PostgreSQLParser.Am_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 402, self.RULE_am_type) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3896 - _la = self._input.LA(1) - if not(_la==92 or _la==226): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatetrigstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def triggeractiontime(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggeractiontimeContext,0) - - - def triggerevents(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggereventsContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def triggerreferencing(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerreferencingContext,0) - - - def triggerforspec(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerforspecContext,0) - - - def triggerwhen(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerwhenContext,0) - - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def function_or_procedure(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_or_procedureContext,0) - - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def triggerfuncargs(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerfuncargsContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def AFTER(self): - return self.getToken(PostgreSQLParser.AFTER, 0) - - def optconstrfromtable(self): - return self.getTypedRuleContext(PostgreSQLParser.OptconstrfromtableContext,0) - - - def constraintattributespec(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattributespecContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def EACH(self): - return self.getToken(PostgreSQLParser.EACH, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createtrigstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatetrigstmt" ): - listener.enterCreatetrigstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatetrigstmt" ): - listener.exitCreatetrigstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatetrigstmt" ): - return visitor.visitCreatetrigstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createtrigstmt(self): - - localctx = PostgreSQLParser.CreatetrigstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 404, self.RULE_createtrigstmt) - try: - self.state = 3936 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,179,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3898 - self.match(PostgreSQLParser.CREATE) - self.state = 3899 - self.match(PostgreSQLParser.TRIGGER) - self.state = 3900 - self.name() - self.state = 3901 - self.triggeractiontime() - self.state = 3902 - self.triggerevents() - self.state = 3903 - self.match(PostgreSQLParser.ON) - self.state = 3904 - self.qualified_name() - self.state = 3905 - self.triggerreferencing() - self.state = 3906 - self.triggerforspec() - self.state = 3907 - self.triggerwhen() - self.state = 3908 - self.match(PostgreSQLParser.EXECUTE) - self.state = 3909 - self.function_or_procedure() - self.state = 3910 - self.func_name() - self.state = 3911 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3912 - self.triggerfuncargs() - self.state = 3913 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3915 - self.match(PostgreSQLParser.CREATE) - self.state = 3916 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 3917 - self.match(PostgreSQLParser.TRIGGER) - self.state = 3918 - self.name() - self.state = 3919 - self.match(PostgreSQLParser.AFTER) - self.state = 3920 - self.triggerevents() - self.state = 3921 - self.match(PostgreSQLParser.ON) - self.state = 3922 - self.qualified_name() - self.state = 3923 - self.optconstrfromtable() - self.state = 3924 - self.constraintattributespec() - self.state = 3925 - self.match(PostgreSQLParser.FOR) - self.state = 3926 - self.match(PostgreSQLParser.EACH) - self.state = 3927 - self.match(PostgreSQLParser.ROW) - self.state = 3928 - self.triggerwhen() - self.state = 3929 - self.match(PostgreSQLParser.EXECUTE) - self.state = 3930 - self.function_or_procedure() - self.state = 3931 - self.func_name() - self.state = 3932 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3933 - self.triggerfuncargs() - self.state = 3934 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggeractiontimeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BEFORE(self): - return self.getToken(PostgreSQLParser.BEFORE, 0) - - def AFTER(self): - return self.getToken(PostgreSQLParser.AFTER, 0) - - def INSTEAD(self): - return self.getToken(PostgreSQLParser.INSTEAD, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggeractiontime - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggeractiontime" ): - listener.enterTriggeractiontime(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggeractiontime" ): - listener.exitTriggeractiontime(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggeractiontime" ): - return visitor.visitTriggeractiontime(self) - else: - return visitor.visitChildren(self) - - - - - def triggeractiontime(self): - - localctx = PostgreSQLParser.TriggeractiontimeContext(self, self._ctx, self.state) - self.enterRule(localctx, 406, self.RULE_triggeractiontime) - try: - self.state = 3942 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [145]: - self.enterOuterAlt(localctx, 1) - self.state = 3938 - self.match(PostgreSQLParser.BEFORE) - pass - elif token in [135]: - self.enterOuterAlt(localctx, 2) - self.state = 3939 - self.match(PostgreSQLParser.AFTER) - pass - elif token in [233]: - self.enterOuterAlt(localctx, 3) - self.state = 3940 - self.match(PostgreSQLParser.INSTEAD) - self.state = 3941 - self.match(PostgreSQLParser.OF) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggereventsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def triggeroneevent(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TriggeroneeventContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TriggeroneeventContext,i) - - - def OR(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OR) - else: - return self.getToken(PostgreSQLParser.OR, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerevents - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerevents" ): - listener.enterTriggerevents(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerevents" ): - listener.exitTriggerevents(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerevents" ): - return visitor.visitTriggerevents(self) - else: - return visitor.visitChildren(self) - - - - - def triggerevents(self): - - localctx = PostgreSQLParser.TriggereventsContext(self, self._ctx, self.state) - self.enterRule(localctx, 408, self.RULE_triggerevents) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3944 - self.triggeroneevent() - self.state = 3949 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==82: - self.state = 3945 - self.match(PostgreSQLParser.OR) - self.state = 3946 - self.triggeroneevent() - self.state = 3951 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggeroneeventContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def TRUNCATE(self): - return self.getToken(PostgreSQLParser.TRUNCATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggeroneevent - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggeroneevent" ): - listener.enterTriggeroneevent(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggeroneevent" ): - listener.exitTriggeroneevent(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggeroneevent" ): - return visitor.visitTriggeroneevent(self) - else: - return visitor.visitChildren(self) - - - - - def triggeroneevent(self): - - localctx = PostgreSQLParser.TriggeroneeventContext(self, self._ctx, self.state) - self.enterRule(localctx, 410, self.RULE_triggeroneevent) - try: - self.state = 3959 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,182,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 3952 - self.match(PostgreSQLParser.INSERT) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 3953 - self.match(PostgreSQLParser.DELETE_P) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 3954 - self.match(PostgreSQLParser.UPDATE) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 3955 - self.match(PostgreSQLParser.UPDATE) - self.state = 3956 - self.match(PostgreSQLParser.OF) - self.state = 3957 - self.columnlist() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 3958 - self.match(PostgreSQLParser.TRUNCATE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerreferencingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REFERENCING(self): - return self.getToken(PostgreSQLParser.REFERENCING, 0) - - def triggertransitions(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggertransitionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerreferencing - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerreferencing" ): - listener.enterTriggerreferencing(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerreferencing" ): - listener.exitTriggerreferencing(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerreferencing" ): - return visitor.visitTriggerreferencing(self) - else: - return visitor.visitChildren(self) - - - - - def triggerreferencing(self): - - localctx = PostgreSQLParser.TriggerreferencingContext(self, self._ctx, self.state) - self.enterRule(localctx, 412, self.RULE_triggerreferencing) - try: - self.state = 3964 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [447]: - self.enterOuterAlt(localctx, 1) - self.state = 3961 - self.match(PostgreSQLParser.REFERENCING) - self.state = 3962 - self.triggertransitions() - pass - elif token in [62, 102, 202]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggertransitionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def triggertransition(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TriggertransitionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TriggertransitionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggertransitions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggertransitions" ): - listener.enterTriggertransitions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggertransitions" ): - listener.exitTriggertransitions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggertransitions" ): - return visitor.visitTriggertransitions(self) - else: - return visitor.visitChildren(self) - - - - - def triggertransitions(self): - - localctx = PostgreSQLParser.TriggertransitionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 414, self.RULE_triggertransitions) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3967 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 3966 - self.triggertransition() - self.state = 3969 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==448 or _la==449): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggertransitionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def transitionoldornew(self): - return self.getTypedRuleContext(PostgreSQLParser.TransitionoldornewContext,0) - - - def transitionrowortable(self): - return self.getTypedRuleContext(PostgreSQLParser.TransitionrowortableContext,0) - - - def opt_as(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_asContext,0) - - - def transitionrelname(self): - return self.getTypedRuleContext(PostgreSQLParser.TransitionrelnameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggertransition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggertransition" ): - listener.enterTriggertransition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggertransition" ): - listener.exitTriggertransition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggertransition" ): - return visitor.visitTriggertransition(self) - else: - return visitor.visitChildren(self) - - - - - def triggertransition(self): - - localctx = PostgreSQLParser.TriggertransitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 416, self.RULE_triggertransition) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3971 - self.transitionoldornew() - self.state = 3972 - self.transitionrowortable() - self.state = 3973 - self.opt_as() - self.state = 3974 - self.transitionrelname() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TransitionoldornewContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NEW(self): - return self.getToken(PostgreSQLParser.NEW, 0) - - def OLD(self): - return self.getToken(PostgreSQLParser.OLD, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transitionoldornew - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransitionoldornew" ): - listener.enterTransitionoldornew(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransitionoldornew" ): - listener.exitTransitionoldornew(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransitionoldornew" ): - return visitor.visitTransitionoldornew(self) - else: - return visitor.visitChildren(self) - - - - - def transitionoldornew(self): - - localctx = PostgreSQLParser.TransitionoldornewContext(self, self._ctx, self.state) - self.enterRule(localctx, 418, self.RULE_transitionoldornew) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3976 - _la = self._input.LA(1) - if not(_la==448 or _la==449): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TransitionrowortableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transitionrowortable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransitionrowortable" ): - listener.enterTransitionrowortable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransitionrowortable" ): - listener.exitTransitionrowortable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransitionrowortable" ): - return visitor.visitTransitionrowortable(self) - else: - return visitor.visitChildren(self) - - - - - def transitionrowortable(self): - - localctx = PostgreSQLParser.TransitionrowortableContext(self, self._ctx, self.state) - self.enterRule(localctx, 420, self.RULE_transitionrowortable) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3978 - _la = self._input.LA(1) - if not(_la==92 or _la==407): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TransitionrelnameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transitionrelname - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransitionrelname" ): - listener.enterTransitionrelname(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransitionrelname" ): - listener.exitTransitionrelname(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransitionrelname" ): - return visitor.visitTransitionrelname(self) - else: - return visitor.visitChildren(self) - - - - - def transitionrelname(self): - - localctx = PostgreSQLParser.TransitionrelnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 422, self.RULE_transitionrelname) - try: - self.enterOuterAlt(localctx, 1) - self.state = 3980 - self.colid() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerforspecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def triggerforopteach(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerforopteachContext,0) - - - def triggerfortype(self): - return self.getTypedRuleContext(PostgreSQLParser.TriggerfortypeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerforspec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerforspec" ): - listener.enterTriggerforspec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerforspec" ): - listener.exitTriggerforspec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerforspec" ): - return visitor.visitTriggerforspec(self) - else: - return visitor.visitChildren(self) - - - - - def triggerforspec(self): - - localctx = PostgreSQLParser.TriggerforspecContext(self, self._ctx, self.state) - self.enterRule(localctx, 424, self.RULE_triggerforspec) - try: - self.state = 3987 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - self.state = 3982 - self.match(PostgreSQLParser.FOR) - self.state = 3983 - self.triggerforopteach() - self.state = 3984 - self.triggerfortype() - pass - elif token in [102, 202]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerforopteachContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EACH(self): - return self.getToken(PostgreSQLParser.EACH, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerforopteach - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerforopteach" ): - listener.enterTriggerforopteach(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerforopteach" ): - listener.exitTriggerforopteach(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerforopteach" ): - return visitor.visitTriggerforopteach(self) - else: - return visitor.visitChildren(self) - - - - - def triggerforopteach(self): - - localctx = PostgreSQLParser.TriggerforopteachContext(self, self._ctx, self.state) - self.enterRule(localctx, 426, self.RULE_triggerforopteach) - try: - self.state = 3991 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [192]: - self.enterOuterAlt(localctx, 1) - self.state = 3989 - self.match(PostgreSQLParser.EACH) - pass - elif token in [334, 407]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerfortypeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def STATEMENT(self): - return self.getToken(PostgreSQLParser.STATEMENT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerfortype - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerfortype" ): - listener.enterTriggerfortype(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerfortype" ): - listener.exitTriggerfortype(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerfortype" ): - return visitor.visitTriggerfortype(self) - else: - return visitor.visitChildren(self) - - - - - def triggerfortype(self): - - localctx = PostgreSQLParser.TriggerfortypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 428, self.RULE_triggerfortype) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 3993 - _la = self._input.LA(1) - if not(_la==334 or _la==407): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerwhenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerwhen - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerwhen" ): - listener.enterTriggerwhen(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerwhen" ): - listener.exitTriggerwhen(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerwhen" ): - return visitor.visitTriggerwhen(self) - else: - return visitor.visitChildren(self) - - - - - def triggerwhen(self): - - localctx = PostgreSQLParser.TriggerwhenContext(self, self._ctx, self.state) - self.enterRule(localctx, 430, self.RULE_triggerwhen) - try: - self.state = 4001 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [102]: - self.enterOuterAlt(localctx, 1) - self.state = 3995 - self.match(PostgreSQLParser.WHEN) - self.state = 3996 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 3997 - self.a_expr() - self.state = 3998 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [202]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Function_or_procedureContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_function_or_procedure - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunction_or_procedure" ): - listener.enterFunction_or_procedure(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunction_or_procedure" ): - listener.exitFunction_or_procedure(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunction_or_procedure" ): - return visitor.visitFunction_or_procedure(self) - else: - return visitor.visitChildren(self) - - - - - def function_or_procedure(self): - - localctx = PostgreSQLParser.Function_or_procedureContext(self, self._ctx, self.state) - self.enterRule(localctx, 432, self.RULE_function_or_procedure) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4003 - _la = self._input.LA(1) - if not(_la==211 or _la==289): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerfuncargsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def triggerfuncarg(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TriggerfuncargContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TriggerfuncargContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerfuncargs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerfuncargs" ): - listener.enterTriggerfuncargs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerfuncargs" ): - listener.exitTriggerfuncargs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerfuncargs" ): - return visitor.visitTriggerfuncargs(self) - else: - return visitor.visitChildren(self) - - - - - def triggerfuncargs(self): - - localctx = PostgreSQLParser.TriggerfuncargsContext(self, self._ctx, self.state) - self.enterRule(localctx, 434, self.RULE_triggerfuncargs) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4007 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 658, 660, 661, 662, 671]: - self.state = 4005 - self.triggerfuncarg() - pass - elif token in [3, 6]: - pass - else: - raise NoViableAltException(self) - - self.state = 4013 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4009 - self.match(PostgreSQLParser.COMMA) - self.state = 4010 - self.triggerfuncarg() - self.state = 4015 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TriggerfuncargContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def fconst(self): - return self.getTypedRuleContext(PostgreSQLParser.FconstContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_triggerfuncarg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTriggerfuncarg" ): - listener.enterTriggerfuncarg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTriggerfuncarg" ): - listener.exitTriggerfuncarg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTriggerfuncarg" ): - return visitor.visitTriggerfuncarg(self) - else: - return visitor.visitChildren(self) - - - - - def triggerfuncarg(self): - - localctx = PostgreSQLParser.TriggerfuncargContext(self, self._ctx, self.state) - self.enterRule(localctx, 436, self.RULE_triggerfuncarg) - try: - self.state = 4020 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [658]: - self.enterOuterAlt(localctx, 1) - self.state = 4016 - self.iconst() - pass - elif token in [660]: - self.enterOuterAlt(localctx, 2) - self.state = 4017 - self.fconst() - pass - elif token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 3) - self.state = 4018 - self.sconst() - pass - elif token in [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 4) - self.state = 4019 - self.collabel() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OptconstrfromtableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_optconstrfromtable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOptconstrfromtable" ): - listener.enterOptconstrfromtable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOptconstrfromtable" ): - listener.exitOptconstrfromtable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOptconstrfromtable" ): - return visitor.visitOptconstrfromtable(self) - else: - return visitor.visitChildren(self) - - - - - def optconstrfromtable(self): - - localctx = PostgreSQLParser.OptconstrfromtableContext(self, self._ctx, self.state) - self.enterRule(localctx, 438, self.RULE_optconstrfromtable) - try: - self.state = 4025 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [64]: - self.enterOuterAlt(localctx, 1) - self.state = 4022 - self.match(PostgreSQLParser.FROM) - self.state = 4023 - self.qualified_name() - pass - elif token in [54, 62, 69, 77, 262]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstraintattributespecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def constraintattributeElem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ConstraintattributeElemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattributeElemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraintattributespec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraintattributespec" ): - listener.enterConstraintattributespec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraintattributespec" ): - listener.exitConstraintattributespec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraintattributespec" ): - return visitor.visitConstraintattributespec(self) - else: - return visitor.visitChildren(self) - - - - - def constraintattributespec(self): - - localctx = PostgreSQLParser.ConstraintattributespecContext(self, self._ctx, self.state) - self.enterRule(localctx, 440, self.RULE_constraintattributespec) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4030 - self._errHandler.sync(self) - _la = self._input.LA(1) - while ((((_la - 54)) & ~0x3f) == 0 and ((1 << (_la - 54)) & 8421377) != 0) or _la==262: - self.state = 4027 - self.constraintattributeElem() - self.state = 4032 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstraintattributeElemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def DEFERRABLE(self): - return self.getToken(PostgreSQLParser.DEFERRABLE, 0) - - def INITIALLY(self): - return self.getToken(PostgreSQLParser.INITIALLY, 0) - - def IMMEDIATE(self): - return self.getToken(PostgreSQLParser.IMMEDIATE, 0) - - def DEFERRED(self): - return self.getToken(PostgreSQLParser.DEFERRED, 0) - - def VALID(self): - return self.getToken(PostgreSQLParser.VALID, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def INHERIT(self): - return self.getToken(PostgreSQLParser.INHERIT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constraintattributeElem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstraintattributeElem" ): - listener.enterConstraintattributeElem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstraintattributeElem" ): - listener.exitConstraintattributeElem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstraintattributeElem" ): - return visitor.visitConstraintattributeElem(self) - else: - return visitor.visitChildren(self) - - - - - def constraintattributeElem(self): - - localctx = PostgreSQLParser.ConstraintattributeElemContext(self, self._ctx, self.state) - self.enterRule(localctx, 442, self.RULE_constraintattributeElem) - try: - self.state = 4044 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,193,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4033 - self.match(PostgreSQLParser.NOT) - self.state = 4034 - self.match(PostgreSQLParser.DEFERRABLE) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4035 - self.match(PostgreSQLParser.DEFERRABLE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4036 - self.match(PostgreSQLParser.INITIALLY) - self.state = 4037 - self.match(PostgreSQLParser.IMMEDIATE) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4038 - self.match(PostgreSQLParser.INITIALLY) - self.state = 4039 - self.match(PostgreSQLParser.DEFERRED) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4040 - self.match(PostgreSQLParser.NOT) - self.state = 4041 - self.match(PostgreSQLParser.VALID) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4042 - self.match(PostgreSQLParser.NO) - self.state = 4043 - self.match(PostgreSQLParser.INHERIT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateeventtrigstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def function_or_procedure(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_or_procedureContext,0) - - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def event_trigger_when_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Event_trigger_when_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createeventtrigstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateeventtrigstmt" ): - listener.enterCreateeventtrigstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateeventtrigstmt" ): - listener.exitCreateeventtrigstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateeventtrigstmt" ): - return visitor.visitCreateeventtrigstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createeventtrigstmt(self): - - localctx = PostgreSQLParser.CreateeventtrigstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 444, self.RULE_createeventtrigstmt) - try: - self.state = 4072 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,194,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4046 - self.match(PostgreSQLParser.CREATE) - self.state = 4047 - self.match(PostgreSQLParser.EVENT) - self.state = 4048 - self.match(PostgreSQLParser.TRIGGER) - self.state = 4049 - self.name() - self.state = 4050 - self.match(PostgreSQLParser.ON) - self.state = 4051 - self.collabel() - self.state = 4052 - self.match(PostgreSQLParser.EXECUTE) - self.state = 4053 - self.function_or_procedure() - self.state = 4054 - self.func_name() - self.state = 4055 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4056 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4058 - self.match(PostgreSQLParser.CREATE) - self.state = 4059 - self.match(PostgreSQLParser.EVENT) - self.state = 4060 - self.match(PostgreSQLParser.TRIGGER) - self.state = 4061 - self.name() - self.state = 4062 - self.match(PostgreSQLParser.ON) - self.state = 4063 - self.collabel() - self.state = 4064 - self.match(PostgreSQLParser.WHEN) - self.state = 4065 - self.event_trigger_when_list() - self.state = 4066 - self.match(PostgreSQLParser.EXECUTE) - self.state = 4067 - self.function_or_procedure() - self.state = 4068 - self.func_name() - self.state = 4069 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4070 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_trigger_when_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def event_trigger_when_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Event_trigger_when_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Event_trigger_when_itemContext,i) - - - def AND(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.AND) - else: - return self.getToken(PostgreSQLParser.AND, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_event_trigger_when_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_trigger_when_list" ): - listener.enterEvent_trigger_when_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_trigger_when_list" ): - listener.exitEvent_trigger_when_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_trigger_when_list" ): - return visitor.visitEvent_trigger_when_list(self) - else: - return visitor.visitChildren(self) - - - - - def event_trigger_when_list(self): - - localctx = PostgreSQLParser.Event_trigger_when_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 446, self.RULE_event_trigger_when_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4074 - self.event_trigger_when_item() - self.state = 4079 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==33: - self.state = 4075 - self.match(PostgreSQLParser.AND) - self.state = 4076 - self.event_trigger_when_item() - self.state = 4081 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_trigger_when_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def event_trigger_value_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Event_trigger_value_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_event_trigger_when_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_trigger_when_item" ): - listener.enterEvent_trigger_when_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_trigger_when_item" ): - listener.exitEvent_trigger_when_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_trigger_when_item" ): - return visitor.visitEvent_trigger_when_item(self) - else: - return visitor.visitChildren(self) - - - - - def event_trigger_when_item(self): - - localctx = PostgreSQLParser.Event_trigger_when_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 448, self.RULE_event_trigger_when_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4082 - self.colid() - self.state = 4083 - self.match(PostgreSQLParser.IN_P) - self.state = 4084 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4085 - self.event_trigger_value_list() - self.state = 4086 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Event_trigger_value_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_event_trigger_value_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent_trigger_value_list" ): - listener.enterEvent_trigger_value_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent_trigger_value_list" ): - listener.exitEvent_trigger_value_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent_trigger_value_list" ): - return visitor.visitEvent_trigger_value_list(self) - else: - return visitor.visitChildren(self) - - - - - def event_trigger_value_list(self): - - localctx = PostgreSQLParser.Event_trigger_value_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 450, self.RULE_event_trigger_value_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4088 - self.sconst() - self.state = 4093 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4089 - self.match(PostgreSQLParser.COMMA) - self.state = 4090 - self.sconst() - self.state = 4095 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltereventtrigstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def enable_trigger(self): - return self.getTypedRuleContext(PostgreSQLParser.Enable_triggerContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altereventtrigstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltereventtrigstmt" ): - listener.enterAltereventtrigstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltereventtrigstmt" ): - listener.exitAltereventtrigstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltereventtrigstmt" ): - return visitor.visitAltereventtrigstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altereventtrigstmt(self): - - localctx = PostgreSQLParser.AltereventtrigstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 452, self.RULE_altereventtrigstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4096 - self.match(PostgreSQLParser.ALTER) - self.state = 4097 - self.match(PostgreSQLParser.EVENT) - self.state = 4098 - self.match(PostgreSQLParser.TRIGGER) - self.state = 4099 - self.name() - self.state = 4100 - self.enable_trigger() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Enable_triggerContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ENABLE_P(self): - return self.getToken(PostgreSQLParser.ENABLE_P, 0) - - def REPLICA(self): - return self.getToken(PostgreSQLParser.REPLICA, 0) - - def ALWAYS(self): - return self.getToken(PostgreSQLParser.ALWAYS, 0) - - def DISABLE_P(self): - return self.getToken(PostgreSQLParser.DISABLE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_enable_trigger - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnable_trigger" ): - listener.enterEnable_trigger(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnable_trigger" ): - listener.exitEnable_trigger(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnable_trigger" ): - return visitor.visitEnable_trigger(self) - else: - return visitor.visitChildren(self) - - - - - def enable_trigger(self): - - localctx = PostgreSQLParser.Enable_triggerContext(self, self._ctx, self.state) - self.enterRule(localctx, 454, self.RULE_enable_trigger) - try: - self.state = 4108 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,197,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4102 - self.match(PostgreSQLParser.ENABLE_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4103 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 4104 - self.match(PostgreSQLParser.REPLICA) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4105 - self.match(PostgreSQLParser.ENABLE_P) - self.state = 4106 - self.match(PostgreSQLParser.ALWAYS) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4107 - self.match(PostgreSQLParser.DISABLE_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateassertionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def ASSERTION(self): - return self.getToken(PostgreSQLParser.ASSERTION, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def constraintattributespec(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstraintattributespecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createassertionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateassertionstmt" ): - listener.enterCreateassertionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateassertionstmt" ): - listener.exitCreateassertionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateassertionstmt" ): - return visitor.visitCreateassertionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createassertionstmt(self): - - localctx = PostgreSQLParser.CreateassertionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 456, self.RULE_createassertionstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4110 - self.match(PostgreSQLParser.CREATE) - self.state = 4111 - self.match(PostgreSQLParser.ASSERTION) - self.state = 4112 - self.any_name() - self.state = 4113 - self.match(PostgreSQLParser.CHECK) - self.state = 4114 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4115 - self.a_expr() - self.state = 4116 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 4117 - self.constraintattributespec() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefinestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_or_replace(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_or_replaceContext,0) - - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def aggr_args(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggr_argsContext,0) - - - def definition(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinitionContext,0) - - - def old_aggr_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Old_aggr_definitionContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def any_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Any_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,i) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opttablefuncelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablefuncelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def ENUM_P(self): - return self.getToken(PostgreSQLParser.ENUM_P, 0) - - def opt_enum_val_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_enum_val_listContext,0) - - - def RANGE(self): - return self.getToken(PostgreSQLParser.RANGE, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def PARSER(self): - return self.getToken(PostgreSQLParser.PARSER, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_definestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefinestmt" ): - listener.enterDefinestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefinestmt" ): - listener.exitDefinestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefinestmt" ): - return visitor.visitDefinestmt(self) - else: - return visitor.visitChildren(self) - - - - - def definestmt(self): - - localctx = PostgreSQLParser.DefinestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 458, self.RULE_definestmt) - try: - self.state = 4225 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,198,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4119 - self.match(PostgreSQLParser.CREATE) - self.state = 4120 - self.opt_or_replace() - self.state = 4121 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 4122 - self.func_name() - self.state = 4123 - self.aggr_args() - self.state = 4124 - self.definition() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4126 - self.match(PostgreSQLParser.CREATE) - self.state = 4127 - self.opt_or_replace() - self.state = 4128 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 4129 - self.func_name() - self.state = 4130 - self.old_aggr_definition() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4132 - self.match(PostgreSQLParser.CREATE) - self.state = 4133 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4134 - self.any_operator() - self.state = 4135 - self.definition() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4137 - self.match(PostgreSQLParser.CREATE) - self.state = 4138 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4139 - self.any_name() - self.state = 4140 - self.definition() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4142 - self.match(PostgreSQLParser.CREATE) - self.state = 4143 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4144 - self.any_name() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4145 - self.match(PostgreSQLParser.CREATE) - self.state = 4146 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4147 - self.any_name() - self.state = 4148 - self.match(PostgreSQLParser.AS) - self.state = 4149 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4150 - self.opttablefuncelementlist() - self.state = 4151 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4153 - self.match(PostgreSQLParser.CREATE) - self.state = 4154 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4155 - self.any_name() - self.state = 4156 - self.match(PostgreSQLParser.AS) - self.state = 4157 - self.match(PostgreSQLParser.ENUM_P) - self.state = 4158 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4159 - self.opt_enum_val_list() - self.state = 4160 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4162 - self.match(PostgreSQLParser.CREATE) - self.state = 4163 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4164 - self.any_name() - self.state = 4165 - self.match(PostgreSQLParser.AS) - self.state = 4166 - self.match(PostgreSQLParser.RANGE) - self.state = 4167 - self.definition() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4169 - self.match(PostgreSQLParser.CREATE) - self.state = 4170 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4171 - self.match(PostgreSQLParser.SEARCH) - self.state = 4172 - self.match(PostgreSQLParser.PARSER) - self.state = 4173 - self.any_name() - self.state = 4174 - self.definition() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4176 - self.match(PostgreSQLParser.CREATE) - self.state = 4177 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4178 - self.match(PostgreSQLParser.SEARCH) - self.state = 4179 - self.match(PostgreSQLParser.DICTIONARY) - self.state = 4180 - self.any_name() - self.state = 4181 - self.definition() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 4183 - self.match(PostgreSQLParser.CREATE) - self.state = 4184 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4185 - self.match(PostgreSQLParser.SEARCH) - self.state = 4186 - self.match(PostgreSQLParser.TEMPLATE) - self.state = 4187 - self.any_name() - self.state = 4188 - self.definition() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 4190 - self.match(PostgreSQLParser.CREATE) - self.state = 4191 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4192 - self.match(PostgreSQLParser.SEARCH) - self.state = 4193 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 4194 - self.any_name() - self.state = 4195 - self.definition() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 4197 - self.match(PostgreSQLParser.CREATE) - self.state = 4198 - self.match(PostgreSQLParser.COLLATION) - self.state = 4199 - self.any_name() - self.state = 4200 - self.definition() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 4202 - self.match(PostgreSQLParser.CREATE) - self.state = 4203 - self.match(PostgreSQLParser.COLLATION) - self.state = 4204 - self.match(PostgreSQLParser.IF_P) - self.state = 4205 - self.match(PostgreSQLParser.NOT) - self.state = 4206 - self.match(PostgreSQLParser.EXISTS) - self.state = 4207 - self.any_name() - self.state = 4208 - self.definition() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 4210 - self.match(PostgreSQLParser.CREATE) - self.state = 4211 - self.match(PostgreSQLParser.COLLATION) - self.state = 4212 - self.any_name() - self.state = 4213 - self.match(PostgreSQLParser.FROM) - self.state = 4214 - self.any_name() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 4216 - self.match(PostgreSQLParser.CREATE) - self.state = 4217 - self.match(PostgreSQLParser.COLLATION) - self.state = 4218 - self.match(PostgreSQLParser.IF_P) - self.state = 4219 - self.match(PostgreSQLParser.NOT) - self.state = 4220 - self.match(PostgreSQLParser.EXISTS) - self.state = 4221 - self.any_name() - self.state = 4222 - self.match(PostgreSQLParser.FROM) - self.state = 4223 - self.any_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefinitionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def def_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Def_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_definition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefinition" ): - listener.enterDefinition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefinition" ): - listener.exitDefinition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefinition" ): - return visitor.visitDefinition(self) - else: - return visitor.visitChildren(self) - - - - - def definition(self): - - localctx = PostgreSQLParser.DefinitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 460, self.RULE_definition) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4227 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4228 - self.def_list() - self.state = 4229 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Def_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def def_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Def_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Def_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_def_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDef_list" ): - listener.enterDef_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDef_list" ): - listener.exitDef_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDef_list" ): - return visitor.visitDef_list(self) - else: - return visitor.visitChildren(self) - - - - - def def_list(self): - - localctx = PostgreSQLParser.Def_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 462, self.RULE_def_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4231 - self.def_elem() - self.state = 4236 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4232 - self.match(PostgreSQLParser.COMMA) - self.state = 4233 - self.def_elem() - self.state = 4238 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Def_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def def_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Def_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_def_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDef_elem" ): - listener.enterDef_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDef_elem" ): - listener.exitDef_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDef_elem" ): - return visitor.visitDef_elem(self) - else: - return visitor.visitChildren(self) - - - - - def def_elem(self): - - localctx = PostgreSQLParser.Def_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 464, self.RULE_def_elem) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4239 - self.collabel() - self.state = 4242 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==10: - self.state = 4240 - self.match(PostgreSQLParser.EQUAL) - self.state = 4241 - self.def_arg() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Def_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_typeContext,0) - - - def reserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Reserved_keywordContext,0) - - - def qual_all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_all_opContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NONE(self): - return self.getToken(PostgreSQLParser.NONE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_def_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDef_arg" ): - listener.enterDef_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDef_arg" ): - listener.exitDef_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDef_arg" ): - return visitor.visitDef_arg(self) - else: - return visitor.visitChildren(self) - - - - - def def_arg(self): - - localctx = PostgreSQLParser.Def_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 466, self.RULE_def_arg) - try: - self.state = 4250 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,201,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4244 - self.func_type() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4245 - self.reserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4246 - self.qual_all_op() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4247 - self.numericonly() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4248 - self.sconst() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4249 - self.match(PostgreSQLParser.NONE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Old_aggr_definitionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def old_aggr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Old_aggr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_old_aggr_definition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOld_aggr_definition" ): - listener.enterOld_aggr_definition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOld_aggr_definition" ): - listener.exitOld_aggr_definition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOld_aggr_definition" ): - return visitor.visitOld_aggr_definition(self) - else: - return visitor.visitChildren(self) - - - - - def old_aggr_definition(self): - - localctx = PostgreSQLParser.Old_aggr_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 468, self.RULE_old_aggr_definition) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4252 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4253 - self.old_aggr_list() - self.state = 4254 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Old_aggr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def old_aggr_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Old_aggr_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Old_aggr_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_old_aggr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOld_aggr_list" ): - listener.enterOld_aggr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOld_aggr_list" ): - listener.exitOld_aggr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOld_aggr_list" ): - return visitor.visitOld_aggr_list(self) - else: - return visitor.visitChildren(self) - - - - - def old_aggr_list(self): - - localctx = PostgreSQLParser.Old_aggr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 470, self.RULE_old_aggr_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4256 - self.old_aggr_elem() - self.state = 4261 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4257 - self.match(PostgreSQLParser.COMMA) - self.state = 4258 - self.old_aggr_elem() - self.state = 4263 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Old_aggr_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def def_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Def_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_old_aggr_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOld_aggr_elem" ): - listener.enterOld_aggr_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOld_aggr_elem" ): - listener.exitOld_aggr_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOld_aggr_elem" ): - return visitor.visitOld_aggr_elem(self) - else: - return visitor.visitChildren(self) - - - - - def old_aggr_elem(self): - - localctx = PostgreSQLParser.Old_aggr_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 472, self.RULE_old_aggr_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4264 - self.identifier() - self.state = 4265 - self.match(PostgreSQLParser.EQUAL) - self.state = 4266 - self.def_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_enum_val_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def enum_val_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Enum_val_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_enum_val_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_enum_val_list" ): - listener.enterOpt_enum_val_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_enum_val_list" ): - listener.exitOpt_enum_val_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_enum_val_list" ): - return visitor.visitOpt_enum_val_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_enum_val_list(self): - - localctx = PostgreSQLParser.Opt_enum_val_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 474, self.RULE_opt_enum_val_list) - try: - self.state = 4270 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 4268 - self.enum_val_list() - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Enum_val_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_enum_val_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEnum_val_list" ): - listener.enterEnum_val_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEnum_val_list" ): - listener.exitEnum_val_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEnum_val_list" ): - return visitor.visitEnum_val_list(self) - else: - return visitor.visitChildren(self) - - - - - def enum_val_list(self): - - localctx = PostgreSQLParser.Enum_val_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 476, self.RULE_enum_val_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4272 - self.sconst() - self.state = 4277 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4273 - self.match(PostgreSQLParser.COMMA) - self.state = 4274 - self.sconst() - self.state = 4279 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterenumstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def opt_if_not_exists(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_if_not_existsContext,0) - - - def sconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,i) - - - def BEFORE(self): - return self.getToken(PostgreSQLParser.BEFORE, 0) - - def AFTER(self): - return self.getToken(PostgreSQLParser.AFTER, 0) - - def RENAME(self): - return self.getToken(PostgreSQLParser.RENAME, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterenumstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterenumstmt" ): - listener.enterAlterenumstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterenumstmt" ): - listener.exitAlterenumstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterenumstmt" ): - return visitor.visitAlterenumstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterenumstmt(self): - - localctx = PostgreSQLParser.AlterenumstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 478, self.RULE_alterenumstmt) - try: - self.state = 4317 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,205,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4280 - self.match(PostgreSQLParser.ALTER) - self.state = 4281 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4282 - self.any_name() - self.state = 4283 - self.match(PostgreSQLParser.ADD_P) - self.state = 4284 - self.match(PostgreSQLParser.VALUE_P) - self.state = 4285 - self.opt_if_not_exists() - self.state = 4286 - self.sconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4288 - self.match(PostgreSQLParser.ALTER) - self.state = 4289 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4290 - self.any_name() - self.state = 4291 - self.match(PostgreSQLParser.ADD_P) - self.state = 4292 - self.match(PostgreSQLParser.VALUE_P) - self.state = 4293 - self.opt_if_not_exists() - self.state = 4294 - self.sconst() - self.state = 4295 - self.match(PostgreSQLParser.BEFORE) - self.state = 4296 - self.sconst() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4298 - self.match(PostgreSQLParser.ALTER) - self.state = 4299 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4300 - self.any_name() - self.state = 4301 - self.match(PostgreSQLParser.ADD_P) - self.state = 4302 - self.match(PostgreSQLParser.VALUE_P) - self.state = 4303 - self.opt_if_not_exists() - self.state = 4304 - self.sconst() - self.state = 4305 - self.match(PostgreSQLParser.AFTER) - self.state = 4306 - self.sconst() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4308 - self.match(PostgreSQLParser.ALTER) - self.state = 4309 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4310 - self.any_name() - self.state = 4311 - self.match(PostgreSQLParser.RENAME) - self.state = 4312 - self.match(PostgreSQLParser.VALUE_P) - self.state = 4313 - self.sconst() - self.state = 4314 - self.match(PostgreSQLParser.TO) - self.state = 4315 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_if_not_existsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_if_not_exists - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_if_not_exists" ): - listener.enterOpt_if_not_exists(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_if_not_exists" ): - listener.exitOpt_if_not_exists(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_if_not_exists" ): - return visitor.visitOpt_if_not_exists(self) - else: - return visitor.visitChildren(self) - - - - - def opt_if_not_exists(self): - - localctx = PostgreSQLParser.Opt_if_not_existsContext(self, self._ctx, self.state) - self.enterRule(localctx, 480, self.RULE_opt_if_not_exists) - try: - self.state = 4323 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [220]: - self.enterOuterAlt(localctx, 1) - self.state = 4319 - self.match(PostgreSQLParser.IF_P) - self.state = 4320 - self.match(PostgreSQLParser.NOT) - self.state = 4321 - self.match(PostgreSQLParser.EXISTS) - pass - elif token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateopclassstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def opt_default(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_defaultContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_opfamily(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_opfamilyContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def opclass_item_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opclass_item_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createopclassstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateopclassstmt" ): - listener.enterCreateopclassstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateopclassstmt" ): - listener.exitCreateopclassstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateopclassstmt" ): - return visitor.visitCreateopclassstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createopclassstmt(self): - - localctx = PostgreSQLParser.CreateopclassstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 482, self.RULE_createopclassstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4325 - self.match(PostgreSQLParser.CREATE) - self.state = 4326 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4327 - self.match(PostgreSQLParser.CLASS) - self.state = 4328 - self.any_name() - self.state = 4329 - self.opt_default() - self.state = 4330 - self.match(PostgreSQLParser.FOR) - self.state = 4331 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4332 - self.typename() - self.state = 4333 - self.match(PostgreSQLParser.USING) - self.state = 4334 - self.name() - self.state = 4335 - self.opt_opfamily() - self.state = 4336 - self.match(PostgreSQLParser.AS) - self.state = 4337 - self.opclass_item_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opclass_item_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opclass_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Opclass_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Opclass_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opclass_item_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpclass_item_list" ): - listener.enterOpclass_item_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpclass_item_list" ): - listener.exitOpclass_item_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpclass_item_list" ): - return visitor.visitOpclass_item_list(self) - else: - return visitor.visitChildren(self) - - - - - def opclass_item_list(self): - - localctx = PostgreSQLParser.Opclass_item_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 484, self.RULE_opclass_item_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4339 - self.opclass_item() - self.state = 4344 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4340 - self.match(PostgreSQLParser.COMMA) - self.state = 4341 - self.opclass_item() - self.state = 4346 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opclass_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def opclass_purpose(self): - return self.getTypedRuleContext(PostgreSQLParser.Opclass_purposeContext,0) - - - def opt_recheck(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_recheckContext,0) - - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def STORAGE(self): - return self.getToken(PostgreSQLParser.STORAGE, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opclass_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpclass_item" ): - listener.enterOpclass_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpclass_item" ): - listener.exitOpclass_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpclass_item" ): - return visitor.visitOpclass_item(self) - else: - return visitor.visitChildren(self) - - - - - def opclass_item(self): - - localctx = PostgreSQLParser.Opclass_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 486, self.RULE_opclass_item) - try: - self.state = 4372 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,208,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4347 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4348 - self.iconst() - self.state = 4349 - self.any_operator() - self.state = 4350 - self.opclass_purpose() - self.state = 4351 - self.opt_recheck() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4353 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4354 - self.iconst() - self.state = 4355 - self.operator_with_argtypes() - self.state = 4356 - self.opclass_purpose() - self.state = 4357 - self.opt_recheck() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4359 - self.match(PostgreSQLParser.FUNCTION) - self.state = 4360 - self.iconst() - self.state = 4361 - self.function_with_argtypes() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4363 - self.match(PostgreSQLParser.FUNCTION) - self.state = 4364 - self.iconst() - self.state = 4365 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4366 - self.type_list() - self.state = 4367 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 4368 - self.function_with_argtypes() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4370 - self.match(PostgreSQLParser.STORAGE) - self.state = 4371 - self.typename() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_defaultContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_default - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_default" ): - listener.enterOpt_default(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_default" ): - listener.exitOpt_default(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_default" ): - return visitor.visitOpt_default(self) - else: - return visitor.visitChildren(self) - - - - - def opt_default(self): - - localctx = PostgreSQLParser.Opt_defaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 488, self.RULE_opt_default) - try: - self.state = 4376 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [53]: - self.enterOuterAlt(localctx, 1) - self.state = 4374 - self.match(PostgreSQLParser.DEFAULT) - pass - elif token in [62, 168]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_opfamilyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_opfamily - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_opfamily" ): - listener.enterOpt_opfamily(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_opfamily" ): - listener.exitOpt_opfamily(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_opfamily" ): - return visitor.visitOpt_opfamily(self) - else: - return visitor.visitChildren(self) - - - - - def opt_opfamily(self): - - localctx = PostgreSQLParser.Opt_opfamilyContext(self, self._ctx, self.state) - self.enterRule(localctx, 490, self.RULE_opt_opfamily) - try: - self.state = 4381 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [206]: - self.enterOuterAlt(localctx, 1) - self.state = 4378 - self.match(PostgreSQLParser.FAMILY) - self.state = 4379 - self.any_name() - pass - elif token in [36]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opclass_purposeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def ORDER(self): - return self.getToken(PostgreSQLParser.ORDER, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opclass_purpose - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpclass_purpose" ): - listener.enterOpclass_purpose(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpclass_purpose" ): - listener.exitOpclass_purpose(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpclass_purpose" ): - return visitor.visitOpclass_purpose(self) - else: - return visitor.visitChildren(self) - - - - - def opclass_purpose(self): - - localctx = PostgreSQLParser.Opclass_purposeContext(self, self._ctx, self.state) - self.enterRule(localctx, 492, self.RULE_opclass_purpose) - try: - self.state = 4390 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,211,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4383 - self.match(PostgreSQLParser.FOR) - self.state = 4384 - self.match(PostgreSQLParser.SEARCH) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4385 - self.match(PostgreSQLParser.FOR) - self.state = 4386 - self.match(PostgreSQLParser.ORDER) - self.state = 4387 - self.match(PostgreSQLParser.BY) - self.state = 4388 - self.any_name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_recheckContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RECHECK(self): - return self.getToken(PostgreSQLParser.RECHECK, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_recheck - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_recheck" ): - listener.enterOpt_recheck(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_recheck" ): - listener.exitOpt_recheck(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_recheck" ): - return visitor.visitOpt_recheck(self) - else: - return visitor.visitChildren(self) - - - - - def opt_recheck(self): - - localctx = PostgreSQLParser.Opt_recheckContext(self, self._ctx, self.state) - self.enterRule(localctx, 494, self.RULE_opt_recheck) - try: - self.state = 4394 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [295]: - self.enterOuterAlt(localctx, 1) - self.state = 4392 - self.match(PostgreSQLParser.RECHECK) - pass - elif token in [-1, 2, 6, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateopfamilystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createopfamilystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateopfamilystmt" ): - listener.enterCreateopfamilystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateopfamilystmt" ): - listener.exitCreateopfamilystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateopfamilystmt" ): - return visitor.visitCreateopfamilystmt(self) - else: - return visitor.visitChildren(self) - - - - - def createopfamilystmt(self): - - localctx = PostgreSQLParser.CreateopfamilystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 496, self.RULE_createopfamilystmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4396 - self.match(PostgreSQLParser.CREATE) - self.state = 4397 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4398 - self.match(PostgreSQLParser.FAMILY) - self.state = 4399 - self.any_name() - self.state = 4400 - self.match(PostgreSQLParser.USING) - self.state = 4401 - self.name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlteropfamilystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def opclass_item_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opclass_item_listContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def opclass_drop_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opclass_drop_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alteropfamilystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlteropfamilystmt" ): - listener.enterAlteropfamilystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlteropfamilystmt" ): - listener.exitAlteropfamilystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlteropfamilystmt" ): - return visitor.visitAlteropfamilystmt(self) - else: - return visitor.visitChildren(self) - - - - - def alteropfamilystmt(self): - - localctx = PostgreSQLParser.AlteropfamilystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 498, self.RULE_alteropfamilystmt) - try: - self.state = 4421 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,213,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4403 - self.match(PostgreSQLParser.ALTER) - self.state = 4404 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4405 - self.match(PostgreSQLParser.FAMILY) - self.state = 4406 - self.any_name() - self.state = 4407 - self.match(PostgreSQLParser.USING) - self.state = 4408 - self.name() - self.state = 4409 - self.match(PostgreSQLParser.ADD_P) - self.state = 4410 - self.opclass_item_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4412 - self.match(PostgreSQLParser.ALTER) - self.state = 4413 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4414 - self.match(PostgreSQLParser.FAMILY) - self.state = 4415 - self.any_name() - self.state = 4416 - self.match(PostgreSQLParser.USING) - self.state = 4417 - self.name() - self.state = 4418 - self.match(PostgreSQLParser.DROP) - self.state = 4419 - self.opclass_drop_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opclass_drop_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opclass_drop(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Opclass_dropContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Opclass_dropContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opclass_drop_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpclass_drop_list" ): - listener.enterOpclass_drop_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpclass_drop_list" ): - listener.exitOpclass_drop_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpclass_drop_list" ): - return visitor.visitOpclass_drop_list(self) - else: - return visitor.visitChildren(self) - - - - - def opclass_drop_list(self): - - localctx = PostgreSQLParser.Opclass_drop_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 500, self.RULE_opclass_drop_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4423 - self.opclass_drop() - self.state = 4428 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4424 - self.match(PostgreSQLParser.COMMA) - self.state = 4425 - self.opclass_drop() - self.state = 4430 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opclass_dropContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opclass_drop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpclass_drop" ): - listener.enterOpclass_drop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpclass_drop" ): - listener.exitOpclass_drop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpclass_drop" ): - return visitor.visitOpclass_drop(self) - else: - return visitor.visitChildren(self) - - - - - def opclass_drop(self): - - localctx = PostgreSQLParser.Opclass_dropContext(self, self._ctx, self.state) - self.enterRule(localctx, 502, self.RULE_opclass_drop) - try: - self.state = 4443 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [271]: - self.enterOuterAlt(localctx, 1) - self.state = 4431 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4432 - self.iconst() - self.state = 4433 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4434 - self.type_list() - self.state = 4435 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [211]: - self.enterOuterAlt(localctx, 2) - self.state = 4437 - self.match(PostgreSQLParser.FUNCTION) - self.state = 4438 - self.iconst() - self.state = 4439 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4440 - self.type_list() - self.state = 4441 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropopclassstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropopclassstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropopclassstmt" ): - listener.enterDropopclassstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropopclassstmt" ): - listener.exitDropopclassstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropopclassstmt" ): - return visitor.visitDropopclassstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropopclassstmt(self): - - localctx = PostgreSQLParser.DropopclassstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 504, self.RULE_dropopclassstmt) - try: - self.state = 4463 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,216,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4445 - self.match(PostgreSQLParser.DROP) - self.state = 4446 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4447 - self.match(PostgreSQLParser.CLASS) - self.state = 4448 - self.any_name() - self.state = 4449 - self.match(PostgreSQLParser.USING) - self.state = 4450 - self.name() - self.state = 4451 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4453 - self.match(PostgreSQLParser.DROP) - self.state = 4454 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4455 - self.match(PostgreSQLParser.CLASS) - self.state = 4456 - self.match(PostgreSQLParser.IF_P) - self.state = 4457 - self.match(PostgreSQLParser.EXISTS) - self.state = 4458 - self.any_name() - self.state = 4459 - self.match(PostgreSQLParser.USING) - self.state = 4460 - self.name() - self.state = 4461 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropopfamilystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropopfamilystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropopfamilystmt" ): - listener.enterDropopfamilystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropopfamilystmt" ): - listener.exitDropopfamilystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropopfamilystmt" ): - return visitor.visitDropopfamilystmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropopfamilystmt(self): - - localctx = PostgreSQLParser.DropopfamilystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 506, self.RULE_dropopfamilystmt) - try: - self.state = 4483 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,217,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4465 - self.match(PostgreSQLParser.DROP) - self.state = 4466 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4467 - self.match(PostgreSQLParser.FAMILY) - self.state = 4468 - self.any_name() - self.state = 4469 - self.match(PostgreSQLParser.USING) - self.state = 4470 - self.name() - self.state = 4471 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4473 - self.match(PostgreSQLParser.DROP) - self.state = 4474 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4475 - self.match(PostgreSQLParser.FAMILY) - self.state = 4476 - self.match(PostgreSQLParser.IF_P) - self.state = 4477 - self.match(PostgreSQLParser.EXISTS) - self.state = 4478 - self.any_name() - self.state = 4479 - self.match(PostgreSQLParser.USING) - self.state = 4480 - self.name() - self.state = 4481 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropownedstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def OWNED(self): - return self.getToken(PostgreSQLParser.OWNED, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropownedstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropownedstmt" ): - listener.enterDropownedstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropownedstmt" ): - listener.exitDropownedstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropownedstmt" ): - return visitor.visitDropownedstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropownedstmt(self): - - localctx = PostgreSQLParser.DropownedstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 508, self.RULE_dropownedstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4485 - self.match(PostgreSQLParser.DROP) - self.state = 4486 - self.match(PostgreSQLParser.OWNED) - self.state = 4487 - self.match(PostgreSQLParser.BY) - self.state = 4488 - self.role_list() - self.state = 4489 - self.opt_drop_behavior() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReassignownedstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REASSIGN(self): - return self.getToken(PostgreSQLParser.REASSIGN, 0) - - def OWNED(self): - return self.getToken(PostgreSQLParser.OWNED, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reassignownedstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReassignownedstmt" ): - listener.enterReassignownedstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReassignownedstmt" ): - listener.exitReassignownedstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReassignownedstmt" ): - return visitor.visitReassignownedstmt(self) - else: - return visitor.visitChildren(self) - - - - - def reassignownedstmt(self): - - localctx = PostgreSQLParser.ReassignownedstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 510, self.RULE_reassignownedstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4491 - self.match(PostgreSQLParser.REASSIGN) - self.state = 4492 - self.match(PostgreSQLParser.OWNED) - self.state = 4493 - self.match(PostgreSQLParser.BY) - self.state = 4494 - self.role_list() - self.state = 4495 - self.match(PostgreSQLParser.TO) - self.state = 4496 - self.rolespec() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def object_type_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_any_nameContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def any_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_name_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def drop_type_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Drop_type_nameContext,0) - - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def object_type_name_on_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_name_on_any_nameContext,0) - - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def type_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_name_listContext,0) - - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def CONCURRENTLY(self): - return self.getToken(PostgreSQLParser.CONCURRENTLY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropstmt" ): - listener.enterDropstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropstmt" ): - listener.exitDropstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropstmt" ): - return visitor.visitDropstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropstmt(self): - - localctx = PostgreSQLParser.DropstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 512, self.RULE_dropstmt) - try: - self.state = 4576 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,218,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4498 - self.match(PostgreSQLParser.DROP) - self.state = 4499 - self.object_type_any_name() - self.state = 4500 - self.match(PostgreSQLParser.IF_P) - self.state = 4501 - self.match(PostgreSQLParser.EXISTS) - self.state = 4502 - self.any_name_list() - self.state = 4503 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4505 - self.match(PostgreSQLParser.DROP) - self.state = 4506 - self.object_type_any_name() - self.state = 4507 - self.any_name_list() - self.state = 4508 - self.opt_drop_behavior() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4510 - self.match(PostgreSQLParser.DROP) - self.state = 4511 - self.drop_type_name() - self.state = 4512 - self.match(PostgreSQLParser.IF_P) - self.state = 4513 - self.match(PostgreSQLParser.EXISTS) - self.state = 4514 - self.name_list() - self.state = 4515 - self.opt_drop_behavior() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4517 - self.match(PostgreSQLParser.DROP) - self.state = 4518 - self.drop_type_name() - self.state = 4519 - self.name_list() - self.state = 4520 - self.opt_drop_behavior() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4522 - self.match(PostgreSQLParser.DROP) - self.state = 4523 - self.object_type_name_on_any_name() - self.state = 4524 - self.name() - self.state = 4525 - self.match(PostgreSQLParser.ON) - self.state = 4526 - self.any_name() - self.state = 4527 - self.opt_drop_behavior() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4529 - self.match(PostgreSQLParser.DROP) - self.state = 4530 - self.object_type_name_on_any_name() - self.state = 4531 - self.match(PostgreSQLParser.IF_P) - self.state = 4532 - self.match(PostgreSQLParser.EXISTS) - self.state = 4533 - self.name() - self.state = 4534 - self.match(PostgreSQLParser.ON) - self.state = 4535 - self.any_name() - self.state = 4536 - self.opt_drop_behavior() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4538 - self.match(PostgreSQLParser.DROP) - self.state = 4539 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4540 - self.type_name_list() - self.state = 4541 - self.opt_drop_behavior() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4543 - self.match(PostgreSQLParser.DROP) - self.state = 4544 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4545 - self.match(PostgreSQLParser.IF_P) - self.state = 4546 - self.match(PostgreSQLParser.EXISTS) - self.state = 4547 - self.type_name_list() - self.state = 4548 - self.opt_drop_behavior() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4550 - self.match(PostgreSQLParser.DROP) - self.state = 4551 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 4552 - self.type_name_list() - self.state = 4553 - self.opt_drop_behavior() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4555 - self.match(PostgreSQLParser.DROP) - self.state = 4556 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 4557 - self.match(PostgreSQLParser.IF_P) - self.state = 4558 - self.match(PostgreSQLParser.EXISTS) - self.state = 4559 - self.type_name_list() - self.state = 4560 - self.opt_drop_behavior() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 4562 - self.match(PostgreSQLParser.DROP) - self.state = 4563 - self.match(PostgreSQLParser.INDEX) - self.state = 4564 - self.match(PostgreSQLParser.CONCURRENTLY) - self.state = 4565 - self.any_name_list() - self.state = 4566 - self.opt_drop_behavior() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 4568 - self.match(PostgreSQLParser.DROP) - self.state = 4569 - self.match(PostgreSQLParser.INDEX) - self.state = 4570 - self.match(PostgreSQLParser.CONCURRENTLY) - self.state = 4571 - self.match(PostgreSQLParser.IF_P) - self.state = 4572 - self.match(PostgreSQLParser.EXISTS) - self.state = 4573 - self.any_name_list() - self.state = 4574 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Object_type_any_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def PARSER(self): - return self.getToken(PostgreSQLParser.PARSER, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_object_type_any_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterObject_type_any_name" ): - listener.enterObject_type_any_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitObject_type_any_name" ): - listener.exitObject_type_any_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitObject_type_any_name" ): - return visitor.visitObject_type_any_name(self) - else: - return visitor.visitChildren(self) - - - - - def object_type_any_name(self): - - localctx = PostgreSQLParser.Object_type_any_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 514, self.RULE_object_type_any_name) - try: - self.state = 4601 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,219,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4578 - self.match(PostgreSQLParser.TABLE) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4579 - self.match(PostgreSQLParser.SEQUENCE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4580 - self.match(PostgreSQLParser.VIEW) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4581 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 4582 - self.match(PostgreSQLParser.VIEW) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4583 - self.match(PostgreSQLParser.INDEX) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4584 - self.match(PostgreSQLParser.FOREIGN) - self.state = 4585 - self.match(PostgreSQLParser.TABLE) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4586 - self.match(PostgreSQLParser.COLLATION) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4587 - self.match(PostgreSQLParser.CONVERSION_P) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4588 - self.match(PostgreSQLParser.STATISTICS) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4589 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4590 - self.match(PostgreSQLParser.SEARCH) - self.state = 4591 - self.match(PostgreSQLParser.PARSER) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 4592 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4593 - self.match(PostgreSQLParser.SEARCH) - self.state = 4594 - self.match(PostgreSQLParser.DICTIONARY) - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 4595 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4596 - self.match(PostgreSQLParser.SEARCH) - self.state = 4597 - self.match(PostgreSQLParser.TEMPLATE) - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 4598 - self.match(PostgreSQLParser.TEXT_P) - self.state = 4599 - self.match(PostgreSQLParser.SEARCH) - self.state = 4600 - self.match(PostgreSQLParser.CONFIGURATION) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Object_type_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def drop_type_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Drop_type_nameContext,0) - - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_object_type_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterObject_type_name" ): - listener.enterObject_type_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitObject_type_name" ): - listener.exitObject_type_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitObject_type_name" ): - return visitor.visitObject_type_name(self) - else: - return visitor.visitChildren(self) - - - - - def object_type_name(self): - - localctx = PostgreSQLParser.Object_type_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 516, self.RULE_object_type_name) - try: - self.state = 4608 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [63, 131, 198, 204, 238, 288, 316, 324, 452]: - self.enterOuterAlt(localctx, 1) - self.state = 4603 - self.drop_type_name() - pass - elif token in [175]: - self.enterOuterAlt(localctx, 2) - self.state = 4604 - self.match(PostgreSQLParser.DATABASE) - pass - elif token in [311]: - self.enterOuterAlt(localctx, 3) - self.state = 4605 - self.match(PostgreSQLParser.ROLE) - pass - elif token in [451]: - self.enterOuterAlt(localctx, 4) - self.state = 4606 - self.match(PostgreSQLParser.SUBSCRIPTION) - pass - elif token in [344]: - self.enterOuterAlt(localctx, 5) - self.state = 4607 - self.match(PostgreSQLParser.TABLESPACE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Drop_type_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ACCESS(self): - return self.getToken(PostgreSQLParser.ACCESS, 0) - - def METHOD(self): - return self.getToken(PostgreSQLParser.METHOD, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def opt_procedural(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_proceduralContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_drop_type_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDrop_type_name" ): - listener.enterDrop_type_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDrop_type_name" ): - listener.exitDrop_type_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDrop_type_name" ): - return visitor.visitDrop_type_name(self) - else: - return visitor.visitChildren(self) - - - - - def drop_type_name(self): - - localctx = PostgreSQLParser.Drop_type_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 518, self.RULE_drop_type_name) - try: - self.state = 4624 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [131]: - self.enterOuterAlt(localctx, 1) - self.state = 4610 - self.match(PostgreSQLParser.ACCESS) - self.state = 4611 - self.match(PostgreSQLParser.METHOD) - pass - elif token in [198]: - self.enterOuterAlt(localctx, 2) - self.state = 4612 - self.match(PostgreSQLParser.EVENT) - self.state = 4613 - self.match(PostgreSQLParser.TRIGGER) - pass - elif token in [204]: - self.enterOuterAlt(localctx, 3) - self.state = 4614 - self.match(PostgreSQLParser.EXTENSION) - pass - elif token in [63]: - self.enterOuterAlt(localctx, 4) - self.state = 4615 - self.match(PostgreSQLParser.FOREIGN) - self.state = 4616 - self.match(PostgreSQLParser.DATA_P) - self.state = 4617 - self.match(PostgreSQLParser.WRAPPER) - pass - elif token in [238, 288]: - self.enterOuterAlt(localctx, 5) - self.state = 4618 - self.opt_procedural() - self.state = 4619 - self.match(PostgreSQLParser.LANGUAGE) - pass - elif token in [452]: - self.enterOuterAlt(localctx, 6) - self.state = 4621 - self.match(PostgreSQLParser.PUBLICATION) - pass - elif token in [316]: - self.enterOuterAlt(localctx, 7) - self.state = 4622 - self.match(PostgreSQLParser.SCHEMA) - pass - elif token in [324]: - self.enterOuterAlt(localctx, 8) - self.state = 4623 - self.match(PostgreSQLParser.SERVER) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Object_type_name_on_any_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def POLICY(self): - return self.getToken(PostgreSQLParser.POLICY, 0) - - def RULE(self): - return self.getToken(PostgreSQLParser.RULE, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_object_type_name_on_any_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterObject_type_name_on_any_name" ): - listener.enterObject_type_name_on_any_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitObject_type_name_on_any_name" ): - listener.exitObject_type_name_on_any_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitObject_type_name_on_any_name" ): - return visitor.visitObject_type_name_on_any_name(self) - else: - return visitor.visitChildren(self) - - - - - def object_type_name_on_any_name(self): - - localctx = PostgreSQLParser.Object_type_name_on_any_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 520, self.RULE_object_type_name_on_any_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4626 - _la = self._input.LA(1) - if not(_la==314 or _la==350 or _la==445): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Any_name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Any_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_any_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAny_name_list" ): - listener.enterAny_name_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAny_name_list" ): - listener.exitAny_name_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAny_name_list" ): - return visitor.visitAny_name_list(self) - else: - return visitor.visitChildren(self) - - - - - def any_name_list(self): - - localctx = PostgreSQLParser.Any_name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 522, self.RULE_any_name_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4628 - self.any_name() - self.state = 4633 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4629 - self.match(PostgreSQLParser.COMMA) - self.state = 4630 - self.any_name() - self.state = 4635 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Any_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def attrs(self): - return self.getTypedRuleContext(PostgreSQLParser.AttrsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_any_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAny_name" ): - listener.enterAny_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAny_name" ): - listener.exitAny_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAny_name" ): - return visitor.visitAny_name(self) - else: - return visitor.visitChildren(self) - - - - - def any_name(self): - - localctx = PostgreSQLParser.Any_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 524, self.RULE_any_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4636 - self.colid() - self.state = 4638 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==11: - self.state = 4637 - self.attrs() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AttrsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.DOT) - else: - return self.getToken(PostgreSQLParser.DOT, i) - - def attr_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Attr_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Attr_nameContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_attrs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttrs" ): - listener.enterAttrs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttrs" ): - listener.exitAttrs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttrs" ): - return visitor.visitAttrs(self) - else: - return visitor.visitChildren(self) - - - - - def attrs(self): - - localctx = PostgreSQLParser.AttrsContext(self, self._ctx, self.state) - self.enterRule(localctx, 526, self.RULE_attrs) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4642 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 4640 - self.match(PostgreSQLParser.DOT) - self.state = 4641 - self.attr_name() - - else: - raise NoViableAltException(self) - self.state = 4644 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,224,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Type_name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_type_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterType_name_list" ): - listener.enterType_name_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitType_name_list" ): - listener.exitType_name_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitType_name_list" ): - return visitor.visitType_name_list(self) - else: - return visitor.visitChildren(self) - - - - - def type_name_list(self): - - localctx = PostgreSQLParser.Type_name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 528, self.RULE_type_name_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4646 - self.typename() - self.state = 4651 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 4647 - self.match(PostgreSQLParser.COMMA) - self.state = 4648 - self.typename() - self.state = 4653 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TruncatestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TRUNCATE(self): - return self.getToken(PostgreSQLParser.TRUNCATE, 0) - - def opt_table(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_tableContext,0) - - - def relation_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_listContext,0) - - - def opt_restart_seqs(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_restart_seqsContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_truncatestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTruncatestmt" ): - listener.enterTruncatestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTruncatestmt" ): - listener.exitTruncatestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTruncatestmt" ): - return visitor.visitTruncatestmt(self) - else: - return visitor.visitChildren(self) - - - - - def truncatestmt(self): - - localctx = PostgreSQLParser.TruncatestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 530, self.RULE_truncatestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 4654 - self.match(PostgreSQLParser.TRUNCATE) - self.state = 4655 - self.opt_table() - self.state = 4656 - self.relation_expr_list() - self.state = 4657 - self.opt_restart_seqs() - self.state = 4658 - self.opt_drop_behavior() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_restart_seqsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONTINUE_P(self): - return self.getToken(PostgreSQLParser.CONTINUE_P, 0) - - def IDENTITY_P(self): - return self.getToken(PostgreSQLParser.IDENTITY_P, 0) - - def RESTART(self): - return self.getToken(PostgreSQLParser.RESTART, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_restart_seqs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_restart_seqs" ): - listener.enterOpt_restart_seqs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_restart_seqs" ): - listener.exitOpt_restart_seqs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_restart_seqs" ): - return visitor.visitOpt_restart_seqs(self) - else: - return visitor.visitChildren(self) - - - - - def opt_restart_seqs(self): - - localctx = PostgreSQLParser.Opt_restart_seqsContext(self, self._ctx, self.state) - self.enterRule(localctx, 532, self.RULE_opt_restart_seqs) - try: - self.state = 4665 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [167]: - self.enterOuterAlt(localctx, 1) - self.state = 4660 - self.match(PostgreSQLParser.CONTINUE_P) - self.state = 4661 - self.match(PostgreSQLParser.IDENTITY_P) - pass - elif token in [307]: - self.enterOuterAlt(localctx, 2) - self.state = 4662 - self.match(PostgreSQLParser.RESTART) - self.state = 4663 - self.match(PostgreSQLParser.IDENTITY_P) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 150, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 308, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CommentstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMENT(self): - return self.getToken(PostgreSQLParser.COMMENT, 0) - - def ON(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.ON) - else: - return self.getToken(PostgreSQLParser.ON, i) - - def object_type_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_any_nameContext,0) - - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def comment_text(self): - return self.getTypedRuleContext(PostgreSQLParser.Comment_textContext,0) - - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def object_type_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_nameContext,0) - - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def object_type_name_on_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_name_on_any_nameContext,0) - - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def LARGE_P(self): - return self.getToken(PostgreSQLParser.LARGE_P, 0) - - def OBJECT_P(self): - return self.getToken(PostgreSQLParser.OBJECT_P, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_commentstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCommentstmt" ): - listener.enterCommentstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCommentstmt" ): - listener.exitCommentstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCommentstmt" ): - return visitor.visitCommentstmt(self) - else: - return visitor.visitChildren(self) - - - - - def commentstmt(self): - - localctx = PostgreSQLParser.CommentstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 534, self.RULE_commentstmt) - try: - self.state = 4814 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,227,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4667 - self.match(PostgreSQLParser.COMMENT) - self.state = 4668 - self.match(PostgreSQLParser.ON) - self.state = 4669 - self.object_type_any_name() - self.state = 4670 - self.any_name() - self.state = 4671 - self.match(PostgreSQLParser.IS) - self.state = 4672 - self.comment_text() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4674 - self.match(PostgreSQLParser.COMMENT) - self.state = 4675 - self.match(PostgreSQLParser.ON) - self.state = 4676 - self.match(PostgreSQLParser.COLUMN) - self.state = 4677 - self.any_name() - self.state = 4678 - self.match(PostgreSQLParser.IS) - self.state = 4679 - self.comment_text() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4681 - self.match(PostgreSQLParser.COMMENT) - self.state = 4682 - self.match(PostgreSQLParser.ON) - self.state = 4683 - self.object_type_name() - self.state = 4684 - self.name() - self.state = 4685 - self.match(PostgreSQLParser.IS) - self.state = 4686 - self.comment_text() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4688 - self.match(PostgreSQLParser.COMMENT) - self.state = 4689 - self.match(PostgreSQLParser.ON) - self.state = 4690 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4691 - self.typename() - self.state = 4692 - self.match(PostgreSQLParser.IS) - self.state = 4693 - self.comment_text() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4695 - self.match(PostgreSQLParser.COMMENT) - self.state = 4696 - self.match(PostgreSQLParser.ON) - self.state = 4697 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 4698 - self.typename() - self.state = 4699 - self.match(PostgreSQLParser.IS) - self.state = 4700 - self.comment_text() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4702 - self.match(PostgreSQLParser.COMMENT) - self.state = 4703 - self.match(PostgreSQLParser.ON) - self.state = 4704 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 4705 - self.aggregate_with_argtypes() - self.state = 4706 - self.match(PostgreSQLParser.IS) - self.state = 4707 - self.comment_text() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4709 - self.match(PostgreSQLParser.COMMENT) - self.state = 4710 - self.match(PostgreSQLParser.ON) - self.state = 4711 - self.match(PostgreSQLParser.FUNCTION) - self.state = 4712 - self.function_with_argtypes() - self.state = 4713 - self.match(PostgreSQLParser.IS) - self.state = 4714 - self.comment_text() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4716 - self.match(PostgreSQLParser.COMMENT) - self.state = 4717 - self.match(PostgreSQLParser.ON) - self.state = 4718 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4719 - self.operator_with_argtypes() - self.state = 4720 - self.match(PostgreSQLParser.IS) - self.state = 4721 - self.comment_text() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4723 - self.match(PostgreSQLParser.COMMENT) - self.state = 4724 - self.match(PostgreSQLParser.ON) - self.state = 4725 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 4726 - self.name() - self.state = 4727 - self.match(PostgreSQLParser.ON) - self.state = 4728 - self.any_name() - self.state = 4729 - self.match(PostgreSQLParser.IS) - self.state = 4730 - self.comment_text() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4732 - self.match(PostgreSQLParser.COMMENT) - self.state = 4733 - self.match(PostgreSQLParser.ON) - self.state = 4734 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 4735 - self.name() - self.state = 4736 - self.match(PostgreSQLParser.ON) - self.state = 4737 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 4738 - self.any_name() - self.state = 4739 - self.match(PostgreSQLParser.IS) - self.state = 4740 - self.comment_text() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 4742 - self.match(PostgreSQLParser.COMMENT) - self.state = 4743 - self.match(PostgreSQLParser.ON) - self.state = 4744 - self.object_type_name_on_any_name() - self.state = 4745 - self.name() - self.state = 4746 - self.match(PostgreSQLParser.ON) - self.state = 4747 - self.any_name() - self.state = 4748 - self.match(PostgreSQLParser.IS) - self.state = 4749 - self.comment_text() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 4751 - self.match(PostgreSQLParser.COMMENT) - self.state = 4752 - self.match(PostgreSQLParser.ON) - self.state = 4753 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 4754 - self.function_with_argtypes() - self.state = 4755 - self.match(PostgreSQLParser.IS) - self.state = 4756 - self.comment_text() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 4758 - self.match(PostgreSQLParser.COMMENT) - self.state = 4759 - self.match(PostgreSQLParser.ON) - self.state = 4760 - self.match(PostgreSQLParser.ROUTINE) - self.state = 4761 - self.function_with_argtypes() - self.state = 4762 - self.match(PostgreSQLParser.IS) - self.state = 4763 - self.comment_text() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 4765 - self.match(PostgreSQLParser.COMMENT) - self.state = 4766 - self.match(PostgreSQLParser.ON) - self.state = 4767 - self.match(PostgreSQLParser.TRANSFORM) - self.state = 4768 - self.match(PostgreSQLParser.FOR) - self.state = 4769 - self.typename() - self.state = 4770 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 4771 - self.name() - self.state = 4772 - self.match(PostgreSQLParser.IS) - self.state = 4773 - self.comment_text() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 4775 - self.match(PostgreSQLParser.COMMENT) - self.state = 4776 - self.match(PostgreSQLParser.ON) - self.state = 4777 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4778 - self.match(PostgreSQLParser.CLASS) - self.state = 4779 - self.any_name() - self.state = 4780 - self.match(PostgreSQLParser.USING) - self.state = 4781 - self.name() - self.state = 4782 - self.match(PostgreSQLParser.IS) - self.state = 4783 - self.comment_text() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 4785 - self.match(PostgreSQLParser.COMMENT) - self.state = 4786 - self.match(PostgreSQLParser.ON) - self.state = 4787 - self.match(PostgreSQLParser.OPERATOR) - self.state = 4788 - self.match(PostgreSQLParser.FAMILY) - self.state = 4789 - self.any_name() - self.state = 4790 - self.match(PostgreSQLParser.USING) - self.state = 4791 - self.name() - self.state = 4792 - self.match(PostgreSQLParser.IS) - self.state = 4793 - self.comment_text() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 4795 - self.match(PostgreSQLParser.COMMENT) - self.state = 4796 - self.match(PostgreSQLParser.ON) - self.state = 4797 - self.match(PostgreSQLParser.LARGE_P) - self.state = 4798 - self.match(PostgreSQLParser.OBJECT_P) - self.state = 4799 - self.numericonly() - self.state = 4800 - self.match(PostgreSQLParser.IS) - self.state = 4801 - self.comment_text() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 4803 - self.match(PostgreSQLParser.COMMENT) - self.state = 4804 - self.match(PostgreSQLParser.ON) - self.state = 4805 - self.match(PostgreSQLParser.CAST) - self.state = 4806 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 4807 - self.typename() - self.state = 4808 - self.match(PostgreSQLParser.AS) - self.state = 4809 - self.typename() - self.state = 4810 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 4811 - self.match(PostgreSQLParser.IS) - self.state = 4812 - self.comment_text() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Comment_textContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_comment_text - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterComment_text" ): - listener.enterComment_text(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitComment_text" ): - listener.exitComment_text(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitComment_text" ): - return visitor.visitComment_text(self) - else: - return visitor.visitChildren(self) - - - - - def comment_text(self): - - localctx = PostgreSQLParser.Comment_textContext(self, self._ctx, self.state) - self.enterRule(localctx, 536, self.RULE_comment_text) - try: - self.state = 4818 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 4816 - self.sconst() - pass - elif token in [78]: - self.enterOuterAlt(localctx, 2) - self.state = 4817 - self.match(PostgreSQLParser.NULL_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SeclabelstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SECURITY(self): - return self.getToken(PostgreSQLParser.SECURITY, 0) - - def LABEL(self): - return self.getToken(PostgreSQLParser.LABEL, 0) - - def opt_provider(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_providerContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def object_type_any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_any_nameContext,0) - - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def security_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Security_labelContext,0) - - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def object_type_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Object_type_nameContext,0) - - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def LARGE_P(self): - return self.getToken(PostgreSQLParser.LARGE_P, 0) - - def OBJECT_P(self): - return self.getToken(PostgreSQLParser.OBJECT_P, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_seclabelstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSeclabelstmt" ): - listener.enterSeclabelstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSeclabelstmt" ): - listener.exitSeclabelstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSeclabelstmt" ): - return visitor.visitSeclabelstmt(self) - else: - return visitor.visitChildren(self) - - - - - def seclabelstmt(self): - - localctx = PostgreSQLParser.SeclabelstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 538, self.RULE_seclabelstmt) - try: - self.state = 4911 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,229,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4820 - self.match(PostgreSQLParser.SECURITY) - self.state = 4821 - self.match(PostgreSQLParser.LABEL) - self.state = 4822 - self.opt_provider() - self.state = 4823 - self.match(PostgreSQLParser.ON) - self.state = 4824 - self.object_type_any_name() - self.state = 4825 - self.any_name() - self.state = 4826 - self.match(PostgreSQLParser.IS) - self.state = 4827 - self.security_label() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4829 - self.match(PostgreSQLParser.SECURITY) - self.state = 4830 - self.match(PostgreSQLParser.LABEL) - self.state = 4831 - self.opt_provider() - self.state = 4832 - self.match(PostgreSQLParser.ON) - self.state = 4833 - self.match(PostgreSQLParser.COLUMN) - self.state = 4834 - self.any_name() - self.state = 4835 - self.match(PostgreSQLParser.IS) - self.state = 4836 - self.security_label() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4838 - self.match(PostgreSQLParser.SECURITY) - self.state = 4839 - self.match(PostgreSQLParser.LABEL) - self.state = 4840 - self.opt_provider() - self.state = 4841 - self.match(PostgreSQLParser.ON) - self.state = 4842 - self.object_type_name() - self.state = 4843 - self.name() - self.state = 4844 - self.match(PostgreSQLParser.IS) - self.state = 4845 - self.security_label() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4847 - self.match(PostgreSQLParser.SECURITY) - self.state = 4848 - self.match(PostgreSQLParser.LABEL) - self.state = 4849 - self.opt_provider() - self.state = 4850 - self.match(PostgreSQLParser.ON) - self.state = 4851 - self.match(PostgreSQLParser.TYPE_P) - self.state = 4852 - self.typename() - self.state = 4853 - self.match(PostgreSQLParser.IS) - self.state = 4854 - self.security_label() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4856 - self.match(PostgreSQLParser.SECURITY) - self.state = 4857 - self.match(PostgreSQLParser.LABEL) - self.state = 4858 - self.opt_provider() - self.state = 4859 - self.match(PostgreSQLParser.ON) - self.state = 4860 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 4861 - self.typename() - self.state = 4862 - self.match(PostgreSQLParser.IS) - self.state = 4863 - self.security_label() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4865 - self.match(PostgreSQLParser.SECURITY) - self.state = 4866 - self.match(PostgreSQLParser.LABEL) - self.state = 4867 - self.opt_provider() - self.state = 4868 - self.match(PostgreSQLParser.ON) - self.state = 4869 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 4870 - self.aggregate_with_argtypes() - self.state = 4871 - self.match(PostgreSQLParser.IS) - self.state = 4872 - self.security_label() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4874 - self.match(PostgreSQLParser.SECURITY) - self.state = 4875 - self.match(PostgreSQLParser.LABEL) - self.state = 4876 - self.opt_provider() - self.state = 4877 - self.match(PostgreSQLParser.ON) - self.state = 4878 - self.match(PostgreSQLParser.FUNCTION) - self.state = 4879 - self.function_with_argtypes() - self.state = 4880 - self.match(PostgreSQLParser.IS) - self.state = 4881 - self.security_label() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4883 - self.match(PostgreSQLParser.SECURITY) - self.state = 4884 - self.match(PostgreSQLParser.LABEL) - self.state = 4885 - self.opt_provider() - self.state = 4886 - self.match(PostgreSQLParser.ON) - self.state = 4887 - self.match(PostgreSQLParser.LARGE_P) - self.state = 4888 - self.match(PostgreSQLParser.OBJECT_P) - self.state = 4889 - self.numericonly() - self.state = 4890 - self.match(PostgreSQLParser.IS) - self.state = 4891 - self.security_label() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4893 - self.match(PostgreSQLParser.SECURITY) - self.state = 4894 - self.match(PostgreSQLParser.LABEL) - self.state = 4895 - self.opt_provider() - self.state = 4896 - self.match(PostgreSQLParser.ON) - self.state = 4897 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 4898 - self.function_with_argtypes() - self.state = 4899 - self.match(PostgreSQLParser.IS) - self.state = 4900 - self.security_label() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4902 - self.match(PostgreSQLParser.SECURITY) - self.state = 4903 - self.match(PostgreSQLParser.LABEL) - self.state = 4904 - self.opt_provider() - self.state = 4905 - self.match(PostgreSQLParser.ON) - self.state = 4906 - self.match(PostgreSQLParser.ROUTINE) - self.state = 4907 - self.function_with_argtypes() - self.state = 4908 - self.match(PostgreSQLParser.IS) - self.state = 4909 - self.security_label() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_providerContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_provider - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_provider" ): - listener.enterOpt_provider(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_provider" ): - listener.exitOpt_provider(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_provider" ): - return visitor.visitOpt_provider(self) - else: - return visitor.visitChildren(self) - - - - - def opt_provider(self): - - localctx = PostgreSQLParser.Opt_providerContext(self, self._ctx, self.state) - self.enterRule(localctx, 540, self.RULE_opt_provider) - try: - self.state = 4916 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - self.state = 4913 - self.match(PostgreSQLParser.FOR) - self.state = 4914 - self.nonreservedword_or_sconst() - pass - elif token in [80]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Security_labelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_security_label - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSecurity_label" ): - listener.enterSecurity_label(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSecurity_label" ): - listener.exitSecurity_label(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSecurity_label" ): - return visitor.visitSecurity_label(self) - else: - return visitor.visitChildren(self) - - - - - def security_label(self): - - localctx = PostgreSQLParser.Security_labelContext(self, self._ctx, self.state) - self.enterRule(localctx, 542, self.RULE_security_label) - try: - self.state = 4920 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 4918 - self.sconst() - pass - elif token in [78]: - self.enterOuterAlt(localctx, 2) - self.state = 4919 - self.match(PostgreSQLParser.NULL_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FetchstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FETCH(self): - return self.getToken(PostgreSQLParser.FETCH, 0) - - def fetch_args(self): - return self.getTypedRuleContext(PostgreSQLParser.Fetch_argsContext,0) - - - def MOVE(self): - return self.getToken(PostgreSQLParser.MOVE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_fetchstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFetchstmt" ): - listener.enterFetchstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFetchstmt" ): - listener.exitFetchstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFetchstmt" ): - return visitor.visitFetchstmt(self) - else: - return visitor.visitChildren(self) - - - - - def fetchstmt(self): - - localctx = PostgreSQLParser.FetchstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 544, self.RULE_fetchstmt) - try: - self.state = 4926 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [61]: - self.enterOuterAlt(localctx, 1) - self.state = 4922 - self.match(PostgreSQLParser.FETCH) - self.state = 4923 - self.fetch_args() - pass - elif token in [258]: - self.enterOuterAlt(localctx, 2) - self.state = 4924 - self.match(PostgreSQLParser.MOVE) - self.state = 4925 - self.fetch_args() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Fetch_argsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def cursor_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_nameContext,0) - - - def from_in(self): - return self.getTypedRuleContext(PostgreSQLParser.From_inContext,0) - - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def opt_from_in(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_from_inContext,0) - - - def PRIOR(self): - return self.getToken(PostgreSQLParser.PRIOR, 0) - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def LAST_P(self): - return self.getToken(PostgreSQLParser.LAST_P, 0) - - def ABSOLUTE_P(self): - return self.getToken(PostgreSQLParser.ABSOLUTE_P, 0) - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def RELATIVE_P(self): - return self.getToken(PostgreSQLParser.RELATIVE_P, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def FORWARD(self): - return self.getToken(PostgreSQLParser.FORWARD, 0) - - def BACKWARD(self): - return self.getToken(PostgreSQLParser.BACKWARD, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_fetch_args - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFetch_args" ): - listener.enterFetch_args(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFetch_args" ): - listener.exitFetch_args(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFetch_args" ): - return visitor.visitFetch_args(self) - else: - return visitor.visitChildren(self) - - - - - def fetch_args(self): - - localctx = PostgreSQLParser.Fetch_argsContext(self, self._ctx, self.state) - self.enterRule(localctx, 546, self.RULE_fetch_args) - try: - self.state = 4994 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,233,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 4928 - self.cursor_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 4929 - self.from_in() - self.state = 4930 - self.cursor_name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 4932 - self.match(PostgreSQLParser.NEXT) - self.state = 4933 - self.opt_from_in() - self.state = 4934 - self.cursor_name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 4936 - self.match(PostgreSQLParser.PRIOR) - self.state = 4937 - self.opt_from_in() - self.state = 4938 - self.cursor_name() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 4940 - self.match(PostgreSQLParser.FIRST_P) - self.state = 4941 - self.opt_from_in() - self.state = 4942 - self.cursor_name() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 4944 - self.match(PostgreSQLParser.LAST_P) - self.state = 4945 - self.opt_from_in() - self.state = 4946 - self.cursor_name() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 4948 - self.match(PostgreSQLParser.ABSOLUTE_P) - self.state = 4949 - self.signediconst() - self.state = 4950 - self.opt_from_in() - self.state = 4951 - self.cursor_name() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 4953 - self.match(PostgreSQLParser.RELATIVE_P) - self.state = 4954 - self.signediconst() - self.state = 4955 - self.opt_from_in() - self.state = 4956 - self.cursor_name() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 4958 - self.signediconst() - self.state = 4959 - self.opt_from_in() - self.state = 4960 - self.cursor_name() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 4962 - self.match(PostgreSQLParser.ALL) - self.state = 4963 - self.opt_from_in() - self.state = 4964 - self.cursor_name() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 4966 - self.match(PostgreSQLParser.FORWARD) - self.state = 4967 - self.opt_from_in() - self.state = 4968 - self.cursor_name() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 4970 - self.match(PostgreSQLParser.FORWARD) - self.state = 4971 - self.signediconst() - self.state = 4972 - self.opt_from_in() - self.state = 4973 - self.cursor_name() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 4975 - self.match(PostgreSQLParser.FORWARD) - self.state = 4976 - self.match(PostgreSQLParser.ALL) - self.state = 4977 - self.opt_from_in() - self.state = 4978 - self.cursor_name() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 4980 - self.match(PostgreSQLParser.BACKWARD) - self.state = 4981 - self.opt_from_in() - self.state = 4982 - self.cursor_name() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 4984 - self.match(PostgreSQLParser.BACKWARD) - self.state = 4985 - self.signediconst() - self.state = 4986 - self.opt_from_in() - self.state = 4987 - self.cursor_name() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 4989 - self.match(PostgreSQLParser.BACKWARD) - self.state = 4990 - self.match(PostgreSQLParser.ALL) - self.state = 4991 - self.opt_from_in() - self.state = 4992 - self.cursor_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class From_inContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_from_in - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrom_in" ): - listener.enterFrom_in(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrom_in" ): - listener.exitFrom_in(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrom_in" ): - return visitor.visitFrom_in(self) - else: - return visitor.visitChildren(self) - - - - - def from_in(self): - - localctx = PostgreSQLParser.From_inContext(self, self._ctx, self.state) - self.enterRule(localctx, 548, self.RULE_from_in) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 4996 - _la = self._input.LA(1) - if not(_la==64 or _la==68): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_from_inContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def from_in(self): - return self.getTypedRuleContext(PostgreSQLParser.From_inContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_from_in - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_from_in" ): - listener.enterOpt_from_in(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_from_in" ): - listener.exitOpt_from_in(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_from_in" ): - return visitor.visitOpt_from_in(self) - else: - return visitor.visitChildren(self) - - - - - def opt_from_in(self): - - localctx = PostgreSQLParser.Opt_from_inContext(self, self._ctx, self.state) - self.enterRule(localctx, 550, self.RULE_opt_from_in) - try: - self.state = 5000 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [64, 68]: - self.enterOuterAlt(localctx, 1) - self.state = 4998 - self.from_in() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class GrantstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def privileges(self): - return self.getTypedRuleContext(PostgreSQLParser.PrivilegesContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def privilege_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Privilege_targetContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def grantee_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Grantee_listContext,0) - - - def opt_grant_grant_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_grant_grant_optionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_grantstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGrantstmt" ): - listener.enterGrantstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGrantstmt" ): - listener.exitGrantstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGrantstmt" ): - return visitor.visitGrantstmt(self) - else: - return visitor.visitChildren(self) - - - - - def grantstmt(self): - - localctx = PostgreSQLParser.GrantstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 552, self.RULE_grantstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5002 - self.match(PostgreSQLParser.GRANT) - self.state = 5003 - self.privileges() - self.state = 5004 - self.match(PostgreSQLParser.ON) - self.state = 5005 - self.privilege_target() - self.state = 5006 - self.match(PostgreSQLParser.TO) - self.state = 5007 - self.grantee_list() - self.state = 5008 - self.opt_grant_grant_option() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RevokestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REVOKE(self): - return self.getToken(PostgreSQLParser.REVOKE, 0) - - def privileges(self): - return self.getTypedRuleContext(PostgreSQLParser.PrivilegesContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def privilege_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Privilege_targetContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def grantee_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Grantee_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_revokestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRevokestmt" ): - listener.enterRevokestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRevokestmt" ): - listener.exitRevokestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRevokestmt" ): - return visitor.visitRevokestmt(self) - else: - return visitor.visitChildren(self) - - - - - def revokestmt(self): - - localctx = PostgreSQLParser.RevokestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 554, self.RULE_revokestmt) - try: - self.state = 5029 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,235,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5010 - self.match(PostgreSQLParser.REVOKE) - self.state = 5011 - self.privileges() - self.state = 5012 - self.match(PostgreSQLParser.ON) - self.state = 5013 - self.privilege_target() - self.state = 5014 - self.match(PostgreSQLParser.FROM) - self.state = 5015 - self.grantee_list() - self.state = 5016 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5018 - self.match(PostgreSQLParser.REVOKE) - self.state = 5019 - self.match(PostgreSQLParser.GRANT) - self.state = 5020 - self.match(PostgreSQLParser.OPTION) - self.state = 5021 - self.match(PostgreSQLParser.FOR) - self.state = 5022 - self.privileges() - self.state = 5023 - self.match(PostgreSQLParser.ON) - self.state = 5024 - self.privilege_target() - self.state = 5025 - self.match(PostgreSQLParser.FROM) - self.state = 5026 - self.grantee_list() - self.state = 5027 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrivilegesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def privilege_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Privilege_listContext,0) - - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def PRIVILEGES(self): - return self.getToken(PostgreSQLParser.PRIVILEGES, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_privileges - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrivileges" ): - listener.enterPrivileges(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrivileges" ): - listener.exitPrivileges(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrivileges" ): - return visitor.visitPrivileges(self) - else: - return visitor.visitChildren(self) - - - - - def privileges(self): - - localctx = PostgreSQLParser.PrivilegesContext(self, self._ctx, self.state) - self.enterRule(localctx, 556, self.RULE_privileges) - try: - self.state = 5046 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,236,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5031 - self.privilege_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5032 - self.match(PostgreSQLParser.ALL) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5033 - self.match(PostgreSQLParser.ALL) - self.state = 5034 - self.match(PostgreSQLParser.PRIVILEGES) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5035 - self.match(PostgreSQLParser.ALL) - self.state = 5036 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5037 - self.columnlist() - self.state = 5038 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 5040 - self.match(PostgreSQLParser.ALL) - self.state = 5041 - self.match(PostgreSQLParser.PRIVILEGES) - self.state = 5042 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5043 - self.columnlist() - self.state = 5044 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Privilege_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def privilege(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.PrivilegeContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.PrivilegeContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_privilege_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrivilege_list" ): - listener.enterPrivilege_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrivilege_list" ): - listener.exitPrivilege_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrivilege_list" ): - return visitor.visitPrivilege_list(self) - else: - return visitor.visitChildren(self) - - - - - def privilege_list(self): - - localctx = PostgreSQLParser.Privilege_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 558, self.RULE_privilege_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5048 - self.privilege() - self.state = 5053 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5049 - self.match(PostgreSQLParser.COMMA) - self.state = 5050 - self.privilege() - self.state = 5055 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PrivilegeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SELECT(self): - return self.getToken(PostgreSQLParser.SELECT, 0) - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def REFERENCES(self): - return self.getToken(PostgreSQLParser.REFERENCES, 0) - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_privilege - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrivilege" ): - listener.enterPrivilege(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrivilege" ): - listener.exitPrivilege(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrivilege" ): - return visitor.visitPrivilege(self) - else: - return visitor.visitChildren(self) - - - - - def privilege(self): - - localctx = PostgreSQLParser.PrivilegeContext(self, self._ctx, self.state) - self.enterRule(localctx, 560, self.RULE_privilege) - try: - self.state = 5065 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [88]: - self.enterOuterAlt(localctx, 1) - self.state = 5056 - self.match(PostgreSQLParser.SELECT) - self.state = 5057 - self.opt_column_list() - pass - elif token in [86]: - self.enterOuterAlt(localctx, 2) - self.state = 5058 - self.match(PostgreSQLParser.REFERENCES) - self.state = 5059 - self.opt_column_list() - pass - elif token in [46]: - self.enterOuterAlt(localctx, 3) - self.state = 5060 - self.match(PostgreSQLParser.CREATE) - self.state = 5061 - self.opt_column_list() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 4) - self.state = 5062 - self.colid() - self.state = 5063 - self.opt_column_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Privilege_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_name_listContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypes_listContext,0) - - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def any_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_name_listContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def LARGE_P(self): - return self.getToken(PostgreSQLParser.LARGE_P, 0) - - def OBJECT_P(self): - return self.getToken(PostgreSQLParser.OBJECT_P, 0) - - def numericonly_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Numericonly_listContext,0) - - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def TABLES(self): - return self.getToken(PostgreSQLParser.TABLES, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def SEQUENCES(self): - return self.getToken(PostgreSQLParser.SEQUENCES, 0) - - def FUNCTIONS(self): - return self.getToken(PostgreSQLParser.FUNCTIONS, 0) - - def PROCEDURES(self): - return self.getToken(PostgreSQLParser.PROCEDURES, 0) - - def ROUTINES(self): - return self.getToken(PostgreSQLParser.ROUTINES, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_privilege_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrivilege_target" ): - listener.enterPrivilege_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrivilege_target" ): - listener.exitPrivilege_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrivilege_target" ): - return visitor.visitPrivilege_target(self) - else: - return visitor.visitChildren(self) - - - - - def privilege_target(self): - - localctx = PostgreSQLParser.Privilege_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 562, self.RULE_privilege_target) - try: - self.state = 5125 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,239,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5067 - self.qualified_name_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5068 - self.match(PostgreSQLParser.TABLE) - self.state = 5069 - self.qualified_name_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5070 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 5071 - self.qualified_name_list() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5072 - self.match(PostgreSQLParser.FOREIGN) - self.state = 5073 - self.match(PostgreSQLParser.DATA_P) - self.state = 5074 - self.match(PostgreSQLParser.WRAPPER) - self.state = 5075 - self.name_list() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 5076 - self.match(PostgreSQLParser.FOREIGN) - self.state = 5077 - self.match(PostgreSQLParser.SERVER) - self.state = 5078 - self.name_list() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 5079 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5080 - self.function_with_argtypes_list() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 5081 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 5082 - self.function_with_argtypes_list() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 5083 - self.match(PostgreSQLParser.ROUTINE) - self.state = 5084 - self.function_with_argtypes_list() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 5085 - self.match(PostgreSQLParser.DATABASE) - self.state = 5086 - self.name_list() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 5087 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 5088 - self.any_name_list() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 5089 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5090 - self.name_list() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 5091 - self.match(PostgreSQLParser.LARGE_P) - self.state = 5092 - self.match(PostgreSQLParser.OBJECT_P) - self.state = 5093 - self.numericonly_list() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 5094 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5095 - self.name_list() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 5096 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 5097 - self.name_list() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 5098 - self.match(PostgreSQLParser.TYPE_P) - self.state = 5099 - self.any_name_list() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 5100 - self.match(PostgreSQLParser.ALL) - self.state = 5101 - self.match(PostgreSQLParser.TABLES) - self.state = 5102 - self.match(PostgreSQLParser.IN_P) - self.state = 5103 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5104 - self.name_list() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 5105 - self.match(PostgreSQLParser.ALL) - self.state = 5106 - self.match(PostgreSQLParser.SEQUENCES) - self.state = 5107 - self.match(PostgreSQLParser.IN_P) - self.state = 5108 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5109 - self.name_list() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 5110 - self.match(PostgreSQLParser.ALL) - self.state = 5111 - self.match(PostgreSQLParser.FUNCTIONS) - self.state = 5112 - self.match(PostgreSQLParser.IN_P) - self.state = 5113 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5114 - self.name_list() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 5115 - self.match(PostgreSQLParser.ALL) - self.state = 5116 - self.match(PostgreSQLParser.PROCEDURES) - self.state = 5117 - self.match(PostgreSQLParser.IN_P) - self.state = 5118 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5119 - self.name_list() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 5120 - self.match(PostgreSQLParser.ALL) - self.state = 5121 - self.match(PostgreSQLParser.ROUTINES) - self.state = 5122 - self.match(PostgreSQLParser.IN_P) - self.state = 5123 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5124 - self.name_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Grantee_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def grantee(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.GranteeContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.GranteeContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_grantee_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGrantee_list" ): - listener.enterGrantee_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGrantee_list" ): - listener.exitGrantee_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGrantee_list" ): - return visitor.visitGrantee_list(self) - else: - return visitor.visitChildren(self) - - - - - def grantee_list(self): - - localctx = PostgreSQLParser.Grantee_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 564, self.RULE_grantee_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5127 - self.grantee() - self.state = 5132 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5128 - self.match(PostgreSQLParser.COMMA) - self.state = 5129 - self.grantee() - self.state = 5134 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class GranteeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_grantee - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGrantee" ): - listener.enterGrantee(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGrantee" ): - listener.exitGrantee(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGrantee" ): - return visitor.visitGrantee(self) - else: - return visitor.visitChildren(self) - - - - - def grantee(self): - - localctx = PostgreSQLParser.GranteeContext(self, self._ctx, self.state) - self.enterRule(localctx, 566, self.RULE_grantee) - try: - self.state = 5138 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 52, 53, 57, 61, 89, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 5135 - self.rolespec() - pass - elif token in [66]: - self.enterOuterAlt(localctx, 2) - self.state = 5136 - self.match(PostgreSQLParser.GROUP_P) - self.state = 5137 - self.rolespec() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_grant_grant_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_grant_grant_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_grant_grant_option" ): - listener.enterOpt_grant_grant_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_grant_grant_option" ): - listener.exitOpt_grant_grant_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_grant_grant_option" ): - return visitor.visitOpt_grant_grant_option(self) - else: - return visitor.visitChildren(self) - - - - - def opt_grant_grant_option(self): - - localctx = PostgreSQLParser.Opt_grant_grant_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 568, self.RULE_opt_grant_grant_option) - try: - self.state = 5144 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,242,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5140 - self.match(PostgreSQLParser.WITH) - self.state = 5141 - self.match(PostgreSQLParser.GRANT) - self.state = 5142 - self.match(PostgreSQLParser.OPTION) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class GrantrolestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def privilege_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Privilege_listContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def opt_grant_admin_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_grant_admin_optionContext,0) - - - def opt_granted_by(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_granted_byContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_grantrolestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGrantrolestmt" ): - listener.enterGrantrolestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGrantrolestmt" ): - listener.exitGrantrolestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGrantrolestmt" ): - return visitor.visitGrantrolestmt(self) - else: - return visitor.visitChildren(self) - - - - - def grantrolestmt(self): - - localctx = PostgreSQLParser.GrantrolestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 570, self.RULE_grantrolestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5146 - self.match(PostgreSQLParser.GRANT) - self.state = 5147 - self.privilege_list() - self.state = 5148 - self.match(PostgreSQLParser.TO) - self.state = 5149 - self.role_list() - self.state = 5150 - self.opt_grant_admin_option() - self.state = 5151 - self.opt_granted_by() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RevokerolestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REVOKE(self): - return self.getToken(PostgreSQLParser.REVOKE, 0) - - def privilege_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Privilege_listContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def opt_granted_by(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_granted_byContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def ADMIN(self): - return self.getToken(PostgreSQLParser.ADMIN, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_revokerolestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRevokerolestmt" ): - listener.enterRevokerolestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRevokerolestmt" ): - listener.exitRevokerolestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRevokerolestmt" ): - return visitor.visitRevokerolestmt(self) - else: - return visitor.visitChildren(self) - - - - - def revokerolestmt(self): - - localctx = PostgreSQLParser.RevokerolestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 572, self.RULE_revokerolestmt) - try: - self.state = 5170 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,243,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5153 - self.match(PostgreSQLParser.REVOKE) - self.state = 5154 - self.privilege_list() - self.state = 5155 - self.match(PostgreSQLParser.FROM) - self.state = 5156 - self.role_list() - self.state = 5157 - self.opt_granted_by() - self.state = 5158 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5160 - self.match(PostgreSQLParser.REVOKE) - self.state = 5161 - self.match(PostgreSQLParser.ADMIN) - self.state = 5162 - self.match(PostgreSQLParser.OPTION) - self.state = 5163 - self.match(PostgreSQLParser.FOR) - self.state = 5164 - self.privilege_list() - self.state = 5165 - self.match(PostgreSQLParser.FROM) - self.state = 5166 - self.role_list() - self.state = 5167 - self.opt_granted_by() - self.state = 5168 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_grant_admin_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def ADMIN(self): - return self.getToken(PostgreSQLParser.ADMIN, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_grant_admin_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_grant_admin_option" ): - listener.enterOpt_grant_admin_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_grant_admin_option" ): - listener.exitOpt_grant_admin_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_grant_admin_option" ): - return visitor.visitOpt_grant_admin_option(self) - else: - return visitor.visitChildren(self) - - - - - def opt_grant_admin_option(self): - - localctx = PostgreSQLParser.Opt_grant_admin_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 574, self.RULE_opt_grant_admin_option) - try: - self.state = 5176 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,244,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5172 - self.match(PostgreSQLParser.WITH) - self.state = 5173 - self.match(PostgreSQLParser.ADMIN) - self.state = 5174 - self.match(PostgreSQLParser.OPTION) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_granted_byContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GRANTED(self): - return self.getToken(PostgreSQLParser.GRANTED, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_granted_by - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_granted_by" ): - listener.enterOpt_granted_by(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_granted_by" ): - listener.exitOpt_granted_by(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_granted_by" ): - return visitor.visitOpt_granted_by(self) - else: - return visitor.visitChildren(self) - - - - - def opt_granted_by(self): - - localctx = PostgreSQLParser.Opt_granted_byContext(self, self._ctx, self.state) - self.enterRule(localctx, 576, self.RULE_opt_granted_by) - try: - self.state = 5182 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [214]: - self.enterOuterAlt(localctx, 1) - self.state = 5178 - self.match(PostgreSQLParser.GRANTED) - self.state = 5179 - self.match(PostgreSQLParser.BY) - self.state = 5180 - self.rolespec() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 150, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 308, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterdefaultprivilegesstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def PRIVILEGES(self): - return self.getToken(PostgreSQLParser.PRIVILEGES, 0) - - def defacloptionlist(self): - return self.getTypedRuleContext(PostgreSQLParser.DefacloptionlistContext,0) - - - def defaclaction(self): - return self.getTypedRuleContext(PostgreSQLParser.DefaclactionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterdefaultprivilegesstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterdefaultprivilegesstmt" ): - listener.enterAlterdefaultprivilegesstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterdefaultprivilegesstmt" ): - listener.exitAlterdefaultprivilegesstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterdefaultprivilegesstmt" ): - return visitor.visitAlterdefaultprivilegesstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterdefaultprivilegesstmt(self): - - localctx = PostgreSQLParser.AlterdefaultprivilegesstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 578, self.RULE_alterdefaultprivilegesstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5184 - self.match(PostgreSQLParser.ALTER) - self.state = 5185 - self.match(PostgreSQLParser.DEFAULT) - self.state = 5186 - self.match(PostgreSQLParser.PRIVILEGES) - self.state = 5187 - self.defacloptionlist() - self.state = 5188 - self.defaclaction() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefacloptionlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def defacloption(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.DefacloptionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.DefacloptionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_defacloptionlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefacloptionlist" ): - listener.enterDefacloptionlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefacloptionlist" ): - listener.exitDefacloptionlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefacloptionlist" ): - return visitor.visitDefacloptionlist(self) - else: - return visitor.visitChildren(self) - - - - - def defacloptionlist(self): - - localctx = PostgreSQLParser.DefacloptionlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 580, self.RULE_defacloptionlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5193 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==62 or _la==68: - self.state = 5190 - self.defacloption() - self.state = 5195 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefacloptionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def role_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Role_listContext,0) - - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_defacloption - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefacloption" ): - listener.enterDefacloption(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefacloption" ): - listener.exitDefacloption(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefacloption" ): - return visitor.visitDefacloption(self) - else: - return visitor.visitChildren(self) - - - - - def defacloption(self): - - localctx = PostgreSQLParser.DefacloptionContext(self, self._ctx, self.state) - self.enterRule(localctx, 582, self.RULE_defacloption) - try: - self.state = 5205 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,247,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5196 - self.match(PostgreSQLParser.IN_P) - self.state = 5197 - self.match(PostgreSQLParser.SCHEMA) - self.state = 5198 - self.name_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5199 - self.match(PostgreSQLParser.FOR) - self.state = 5200 - self.match(PostgreSQLParser.ROLE) - self.state = 5201 - self.role_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5202 - self.match(PostgreSQLParser.FOR) - self.state = 5203 - self.match(PostgreSQLParser.USER) - self.state = 5204 - self.role_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DefaclactionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def privileges(self): - return self.getTypedRuleContext(PostgreSQLParser.PrivilegesContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def defacl_privilege_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Defacl_privilege_targetContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def grantee_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Grantee_listContext,0) - - - def opt_grant_grant_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_grant_grant_optionContext,0) - - - def REVOKE(self): - return self.getToken(PostgreSQLParser.REVOKE, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_defaclaction - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefaclaction" ): - listener.enterDefaclaction(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefaclaction" ): - listener.exitDefaclaction(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefaclaction" ): - return visitor.visitDefaclaction(self) - else: - return visitor.visitChildren(self) - - - - - def defaclaction(self): - - localctx = PostgreSQLParser.DefaclactionContext(self, self._ctx, self.state) - self.enterRule(localctx, 584, self.RULE_defaclaction) - try: - self.state = 5234 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,248,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5207 - self.match(PostgreSQLParser.GRANT) - self.state = 5208 - self.privileges() - self.state = 5209 - self.match(PostgreSQLParser.ON) - self.state = 5210 - self.defacl_privilege_target() - self.state = 5211 - self.match(PostgreSQLParser.TO) - self.state = 5212 - self.grantee_list() - self.state = 5213 - self.opt_grant_grant_option() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5215 - self.match(PostgreSQLParser.REVOKE) - self.state = 5216 - self.privileges() - self.state = 5217 - self.match(PostgreSQLParser.ON) - self.state = 5218 - self.defacl_privilege_target() - self.state = 5219 - self.match(PostgreSQLParser.FROM) - self.state = 5220 - self.grantee_list() - self.state = 5221 - self.opt_drop_behavior() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5223 - self.match(PostgreSQLParser.REVOKE) - self.state = 5224 - self.match(PostgreSQLParser.GRANT) - self.state = 5225 - self.match(PostgreSQLParser.OPTION) - self.state = 5226 - self.match(PostgreSQLParser.FOR) - self.state = 5227 - self.privileges() - self.state = 5228 - self.match(PostgreSQLParser.ON) - self.state = 5229 - self.defacl_privilege_target() - self.state = 5230 - self.match(PostgreSQLParser.FROM) - self.state = 5231 - self.grantee_list() - self.state = 5232 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Defacl_privilege_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLES(self): - return self.getToken(PostgreSQLParser.TABLES, 0) - - def FUNCTIONS(self): - return self.getToken(PostgreSQLParser.FUNCTIONS, 0) - - def ROUTINES(self): - return self.getToken(PostgreSQLParser.ROUTINES, 0) - - def SEQUENCES(self): - return self.getToken(PostgreSQLParser.SEQUENCES, 0) - - def TYPES_P(self): - return self.getToken(PostgreSQLParser.TYPES_P, 0) - - def SCHEMAS(self): - return self.getToken(PostgreSQLParser.SCHEMAS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_defacl_privilege_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDefacl_privilege_target" ): - listener.enterDefacl_privilege_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDefacl_privilege_target" ): - listener.exitDefacl_privilege_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDefacl_privilege_target" ): - return visitor.visitDefacl_privilege_target(self) - else: - return visitor.visitChildren(self) - - - - - def defacl_privilege_target(self): - - localctx = PostgreSQLParser.Defacl_privilege_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 586, self.RULE_defacl_privilege_target) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5236 - _la = self._input.LA(1) - if not(_la==212 or ((((_la - 322)) & ~0x3f) == 0 and ((1 << (_la - 322)) & 4297064449) != 0) or _la==455 or _la==456): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IndexstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_unique(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_uniqueContext,0) - - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def opt_concurrently(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_concurrentlyContext,0) - - - def opt_index_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_index_nameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def access_method_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Access_method_clauseContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def index_params(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_paramsContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def opt_include(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_includeContext,0) - - - def opt_reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_reloptionsContext,0) - - - def opttablespace(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttablespaceContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_indexstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndexstmt" ): - listener.enterIndexstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndexstmt" ): - listener.exitIndexstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndexstmt" ): - return visitor.visitIndexstmt(self) - else: - return visitor.visitChildren(self) - - - - - def indexstmt(self): - - localctx = PostgreSQLParser.IndexstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 588, self.RULE_indexstmt) - try: - self.state = 5273 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,249,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5238 - self.match(PostgreSQLParser.CREATE) - self.state = 5239 - self.opt_unique() - self.state = 5240 - self.match(PostgreSQLParser.INDEX) - self.state = 5241 - self.opt_concurrently() - self.state = 5242 - self.opt_index_name() - self.state = 5243 - self.match(PostgreSQLParser.ON) - self.state = 5244 - self.relation_expr() - self.state = 5245 - self.access_method_clause() - self.state = 5246 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5247 - self.index_params() - self.state = 5248 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5249 - self.opt_include() - self.state = 5250 - self.opt_reloptions() - self.state = 5251 - self.opttablespace() - self.state = 5252 - self.where_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5254 - self.match(PostgreSQLParser.CREATE) - self.state = 5255 - self.opt_unique() - self.state = 5256 - self.match(PostgreSQLParser.INDEX) - self.state = 5257 - self.opt_concurrently() - self.state = 5258 - self.match(PostgreSQLParser.IF_P) - self.state = 5259 - self.match(PostgreSQLParser.NOT) - self.state = 5260 - self.match(PostgreSQLParser.EXISTS) - self.state = 5261 - self.name() - self.state = 5262 - self.match(PostgreSQLParser.ON) - self.state = 5263 - self.relation_expr() - self.state = 5264 - self.access_method_clause() - self.state = 5265 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5266 - self.index_params() - self.state = 5267 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5268 - self.opt_include() - self.state = 5269 - self.opt_reloptions() - self.state = 5270 - self.opttablespace() - self.state = 5271 - self.where_clause() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_uniqueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def UNIQUE(self): - return self.getToken(PostgreSQLParser.UNIQUE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_unique - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_unique" ): - listener.enterOpt_unique(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_unique" ): - listener.exitOpt_unique(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_unique" ): - return visitor.visitOpt_unique(self) - else: - return visitor.visitChildren(self) - - - - - def opt_unique(self): - - localctx = PostgreSQLParser.Opt_uniqueContext(self, self._ctx, self.state) - self.enterRule(localctx, 590, self.RULE_opt_unique) - try: - self.state = 5277 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [98]: - self.enterOuterAlt(localctx, 1) - self.state = 5275 - self.match(PostgreSQLParser.UNIQUE) - pass - elif token in [226]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_concurrentlyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONCURRENTLY(self): - return self.getToken(PostgreSQLParser.CONCURRENTLY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_concurrently - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_concurrently" ): - listener.enterOpt_concurrently(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_concurrently" ): - listener.exitOpt_concurrently(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_concurrently" ): - return visitor.visitOpt_concurrently(self) - else: - return visitor.visitChildren(self) - - - - - def opt_concurrently(self): - - localctx = PostgreSQLParser.Opt_concurrentlyContext(self, self._ctx, self.state) - self.enterRule(localctx, 592, self.RULE_opt_concurrently) - try: - self.state = 5281 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [109]: - self.enterOuterAlt(localctx, 1) - self.state = 5279 - self.match(PostgreSQLParser.CONCURRENTLY) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 80, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_index_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_index_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_index_name" ): - listener.enterOpt_index_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_index_name" ): - listener.exitOpt_index_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_index_name" ): - return visitor.visitOpt_index_name(self) - else: - return visitor.visitChildren(self) - - - - - def opt_index_name(self): - - localctx = PostgreSQLParser.Opt_index_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 594, self.RULE_opt_index_name) - try: - self.state = 5285 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 5283 - self.name() - pass - elif token in [80]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Access_method_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_access_method_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAccess_method_clause" ): - listener.enterAccess_method_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAccess_method_clause" ): - listener.exitAccess_method_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAccess_method_clause" ): - return visitor.visitAccess_method_clause(self) - else: - return visitor.visitChildren(self) - - - - - def access_method_clause(self): - - localctx = PostgreSQLParser.Access_method_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 596, self.RULE_access_method_clause) - try: - self.state = 5290 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 5287 - self.match(PostgreSQLParser.USING) - self.state = 5288 - self.name() - pass - elif token in [2]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Index_paramsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def index_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Index_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Index_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_index_params - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndex_params" ): - listener.enterIndex_params(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndex_params" ): - listener.exitIndex_params(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndex_params" ): - return visitor.visitIndex_params(self) - else: - return visitor.visitChildren(self) - - - - - def index_params(self): - - localctx = PostgreSQLParser.Index_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 598, self.RULE_index_params) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5292 - self.index_elem() - self.state = 5297 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5293 - self.match(PostgreSQLParser.COMMA) - self.state = 5294 - self.index_elem() - self.state = 5299 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Index_elem_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_collate(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_collateContext,0) - - - def opt_class(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_classContext,0) - - - def opt_asc_desc(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_asc_descContext,0) - - - def opt_nulls_order(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_nulls_orderContext,0) - - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ReloptionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_index_elem_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndex_elem_options" ): - listener.enterIndex_elem_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndex_elem_options" ): - listener.exitIndex_elem_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndex_elem_options" ): - return visitor.visitIndex_elem_options(self) - else: - return visitor.visitChildren(self) - - - - - def index_elem_options(self): - - localctx = PostgreSQLParser.Index_elem_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 600, self.RULE_index_elem_options) - try: - self.state = 5311 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,255,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5300 - self.opt_collate() - self.state = 5301 - self.opt_class() - self.state = 5302 - self.opt_asc_desc() - self.state = 5303 - self.opt_nulls_order() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5305 - self.opt_collate() - self.state = 5306 - self.any_name() - self.state = 5307 - self.reloptions() - self.state = 5308 - self.opt_asc_desc() - self.state = 5309 - self.opt_nulls_order() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Index_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def index_elem_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_elem_optionsContext,0) - - - def func_expr_windowless(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_windowlessContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_index_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndex_elem" ): - listener.enterIndex_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndex_elem" ): - listener.exitIndex_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndex_elem" ): - return visitor.visitIndex_elem(self) - else: - return visitor.visitChildren(self) - - - - - def index_elem(self): - - localctx = PostgreSQLParser.Index_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 602, self.RULE_index_elem) - try: - self.state = 5324 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,256,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5313 - self.colid() - self.state = 5314 - self.index_elem_options() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5316 - self.func_expr_windowless() - self.state = 5317 - self.index_elem_options() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5319 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5320 - self.a_expr() - self.state = 5321 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5322 - self.index_elem_options() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_includeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INCLUDE(self): - return self.getToken(PostgreSQLParser.INCLUDE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def index_including_params(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_including_paramsContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_include - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_include" ): - listener.enterOpt_include(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_include" ): - listener.exitOpt_include(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_include" ): - return visitor.visitOpt_include(self) - else: - return visitor.visitChildren(self) - - - - - def opt_include(self): - - localctx = PostgreSQLParser.Opt_includeContext(self, self._ctx, self.state) - self.enterRule(localctx, 604, self.RULE_opt_include) - try: - self.state = 5332 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [441]: - self.enterOuterAlt(localctx, 1) - self.state = 5326 - self.match(PostgreSQLParser.INCLUDE) - self.state = 5327 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5328 - self.index_including_params() - self.state = 5329 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 103, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 344, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Index_including_paramsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def index_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Index_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Index_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_index_including_params - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndex_including_params" ): - listener.enterIndex_including_params(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndex_including_params" ): - listener.exitIndex_including_params(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndex_including_params" ): - return visitor.visitIndex_including_params(self) - else: - return visitor.visitChildren(self) - - - - - def index_including_params(self): - - localctx = PostgreSQLParser.Index_including_paramsContext(self, self._ctx, self.state) - self.enterRule(localctx, 606, self.RULE_index_including_params) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5334 - self.index_elem() - self.state = 5339 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5335 - self.match(PostgreSQLParser.COMMA) - self.state = 5336 - self.index_elem() - self.state = 5341 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_collateContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_collate - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_collate" ): - listener.enterOpt_collate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_collate" ): - listener.exitOpt_collate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_collate" ): - return visitor.visitOpt_collate(self) - else: - return visitor.visitChildren(self) - - - - - def opt_collate(self): - - localctx = PostgreSQLParser.Opt_collateContext(self, self._ctx, self.state) - self.enterRule(localctx, 608, self.RULE_opt_collate) - try: - self.state = 5345 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,259,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5342 - self.match(PostgreSQLParser.COLLATE) - self.state = 5343 - self.any_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_classContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_class - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_class" ): - listener.enterOpt_class(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_class" ): - listener.exitOpt_class(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_class" ): - return visitor.visitOpt_class(self) - else: - return visitor.visitChildren(self) - - - - - def opt_class(self): - - localctx = PostgreSQLParser.Opt_classContext(self, self._ctx, self.state) - self.enterRule(localctx, 610, self.RULE_opt_class) - try: - self.state = 5349 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,260,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5347 - self.any_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_asc_descContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ASC(self): - return self.getToken(PostgreSQLParser.ASC, 0) - - def DESC(self): - return self.getToken(PostgreSQLParser.DESC, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_asc_desc - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_asc_desc" ): - listener.enterOpt_asc_desc(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_asc_desc" ): - listener.exitOpt_asc_desc(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_asc_desc" ): - return visitor.visitOpt_asc_desc(self) - else: - return visitor.visitChildren(self) - - - - - def opt_asc_desc(self): - - localctx = PostgreSQLParser.Opt_asc_descContext(self, self._ctx, self.state) - self.enterRule(localctx, 612, self.RULE_opt_asc_desc) - try: - self.state = 5354 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [37]: - self.enterOuterAlt(localctx, 1) - self.state = 5351 - self.match(PostgreSQLParser.ASC) - pass - elif token in [55]: - self.enterOuterAlt(localctx, 2) - self.state = 5352 - self.match(PostgreSQLParser.DESC) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 61, 62, 65, 71, 74, 79, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 266, 283, 292, 294, 298, 299, 301, 306, 310, 312, 313, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 481, 519, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_nulls_orderContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NULLS_P(self): - return self.getToken(PostgreSQLParser.NULLS_P, 0) - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def LAST_P(self): - return self.getToken(PostgreSQLParser.LAST_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_nulls_order - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_nulls_order" ): - listener.enterOpt_nulls_order(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_nulls_order" ): - listener.exitOpt_nulls_order(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_nulls_order" ): - return visitor.visitOpt_nulls_order(self) - else: - return visitor.visitChildren(self) - - - - - def opt_nulls_order(self): - - localctx = PostgreSQLParser.Opt_nulls_orderContext(self, self._ctx, self.state) - self.enterRule(localctx, 614, self.RULE_opt_nulls_order) - try: - self.state = 5361 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,262,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5356 - self.match(PostgreSQLParser.NULLS_P) - self.state = 5357 - self.match(PostgreSQLParser.FIRST_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5358 - self.match(PostgreSQLParser.NULLS_P) - self.state = 5359 - self.match(PostgreSQLParser.LAST_P) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatefunctionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_or_replace(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_or_replaceContext,0) - - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def func_args_with_defaults(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_args_with_defaultsContext,0) - - - def createfunc_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Createfunc_opt_listContext,0) - - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def RETURNS(self): - return self.getToken(PostgreSQLParser.RETURNS, 0) - - def func_return(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_returnContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def table_func_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_func_column_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createfunctionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatefunctionstmt" ): - listener.enterCreatefunctionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatefunctionstmt" ): - listener.exitCreatefunctionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatefunctionstmt" ): - return visitor.visitCreatefunctionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createfunctionstmt(self): - - localctx = PostgreSQLParser.CreatefunctionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 616, self.RULE_createfunctionstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5363 - self.match(PostgreSQLParser.CREATE) - self.state = 5364 - self.opt_or_replace() - self.state = 5365 - _la = self._input.LA(1) - if not(_la==211 or _la==289): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 5366 - self.func_name() - self.state = 5367 - self.func_args_with_defaults() - self.state = 5377 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,264,self._ctx) - if la_ == 1: - self.state = 5368 - self.match(PostgreSQLParser.RETURNS) - self.state = 5375 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,263,self._ctx) - if la_ == 1: - self.state = 5369 - self.func_return() - pass - - elif la_ == 2: - self.state = 5370 - self.match(PostgreSQLParser.TABLE) - self.state = 5371 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5372 - self.table_func_column_list() - self.state = 5373 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - - - self.state = 5379 - self.createfunc_opt_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_or_replaceContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OR(self): - return self.getToken(PostgreSQLParser.OR, 0) - - def REPLACE(self): - return self.getToken(PostgreSQLParser.REPLACE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_or_replace - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_or_replace" ): - listener.enterOpt_or_replace(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_or_replace" ): - listener.exitOpt_or_replace(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_or_replace" ): - return visitor.visitOpt_or_replace(self) - else: - return visitor.visitChildren(self) - - - - - def opt_or_replace(self): - - localctx = PostgreSQLParser.Opt_or_replaceContext(self, self._ctx, self.state) - self.enterRule(localctx, 618, self.RULE_opt_or_replace) - try: - self.state = 5384 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [82]: - self.enterOuterAlt(localctx, 1) - self.state = 5381 - self.match(PostgreSQLParser.OR) - self.state = 5382 - self.match(PostgreSQLParser.REPLACE) - pass - elif token in [136, 211, 238, 288, 289, 314, 352, 443]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_argsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def func_args_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_args_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_args - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_args" ): - listener.enterFunc_args(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_args" ): - listener.exitFunc_args(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_args" ): - return visitor.visitFunc_args(self) - else: - return visitor.visitChildren(self) - - - - - def func_args(self): - - localctx = PostgreSQLParser.Func_argsContext(self, self._ctx, self.state) - self.enterRule(localctx, 620, self.RULE_func_args) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5386 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5388 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 33)) & ~0x3f) == 0 and ((1 << (_la - 33)) & 576460786949430277) != 0) or ((((_la - 101)) & ~0x3f) == 0 and ((1 << (_la - 101)) & -31) != 0) or ((((_la - 165)) & ~0x3f) == 0 and ((1 << (_la - 165)) & -1) != 0) or ((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & -18874369) != 0) or ((((_la - 293)) & ~0x3f) == 0 and ((1 << (_la - 293)) & -1) != 0) or ((((_la - 357)) & ~0x3f) == 0 and ((1 << (_la - 357)) & -1) != 0) or ((((_la - 421)) & ~0x3f) == 0 and ((1 << (_la - 421)) & -8589934593) != 0) or ((((_la - 485)) & ~0x3f) == 0 and ((1 << (_la - 485)) & -17181179905) != 0) or ((((_la - 549)) & ~0x3f) == 0 and ((1 << (_la - 549)) & -1) != 0) or ((((_la - 613)) & ~0x3f) == 0 and ((1 << (_la - 613)) & 844425232121855) != 0): - self.state = 5387 - self.func_args_list() - - - self.state = 5390 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_args_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_arg(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Func_argContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Func_argContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_args_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_args_list" ): - listener.enterFunc_args_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_args_list" ): - listener.exitFunc_args_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_args_list" ): - return visitor.visitFunc_args_list(self) - else: - return visitor.visitChildren(self) - - - - - def func_args_list(self): - - localctx = PostgreSQLParser.Func_args_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 622, self.RULE_func_args_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5392 - self.func_arg() - self.state = 5397 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5393 - self.match(PostgreSQLParser.COMMA) - self.state = 5394 - self.func_arg() - self.state = 5399 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Function_with_argtypes_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def function_with_argtypes(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Function_with_argtypesContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_function_with_argtypes_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunction_with_argtypes_list" ): - listener.enterFunction_with_argtypes_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunction_with_argtypes_list" ): - listener.exitFunction_with_argtypes_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunction_with_argtypes_list" ): - return visitor.visitFunction_with_argtypes_list(self) - else: - return visitor.visitChildren(self) - - - - - def function_with_argtypes_list(self): - - localctx = PostgreSQLParser.Function_with_argtypes_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 624, self.RULE_function_with_argtypes_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5400 - self.function_with_argtypes() - self.state = 5405 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5401 - self.match(PostgreSQLParser.COMMA) - self.state = 5402 - self.function_with_argtypes() - self.state = 5407 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Function_with_argtypesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def func_args(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_argsContext,0) - - - def type_func_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_func_name_keywordContext,0) - - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.IndirectionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_function_with_argtypes - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunction_with_argtypes" ): - listener.enterFunction_with_argtypes(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunction_with_argtypes" ): - listener.exitFunction_with_argtypes(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunction_with_argtypes" ): - return visitor.visitFunction_with_argtypes(self) - else: - return visitor.visitChildren(self) - - - - - def function_with_argtypes(self): - - localctx = PostgreSQLParser.Function_with_argtypesContext(self, self._ctx, self.state) - self.enterRule(localctx, 626, self.RULE_function_with_argtypes) - self._la = 0 # Token type - try: - self.state = 5416 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,270,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5408 - self.func_name() - self.state = 5409 - self.func_args() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5411 - self.type_func_name_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5412 - self.colid() - self.state = 5414 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==4 or _la==11: - self.state = 5413 - self.indirection() - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_args_with_defaultsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def func_args_with_defaults_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_args_with_defaults_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_args_with_defaults - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_args_with_defaults" ): - listener.enterFunc_args_with_defaults(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_args_with_defaults" ): - listener.exitFunc_args_with_defaults(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_args_with_defaults" ): - return visitor.visitFunc_args_with_defaults(self) - else: - return visitor.visitChildren(self) - - - - - def func_args_with_defaults(self): - - localctx = PostgreSQLParser.Func_args_with_defaultsContext(self, self._ctx, self.state) - self.enterRule(localctx, 628, self.RULE_func_args_with_defaults) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5418 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5420 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 33)) & ~0x3f) == 0 and ((1 << (_la - 33)) & 576460786949430277) != 0) or ((((_la - 101)) & ~0x3f) == 0 and ((1 << (_la - 101)) & -31) != 0) or ((((_la - 165)) & ~0x3f) == 0 and ((1 << (_la - 165)) & -1) != 0) or ((((_la - 229)) & ~0x3f) == 0 and ((1 << (_la - 229)) & -18874369) != 0) or ((((_la - 293)) & ~0x3f) == 0 and ((1 << (_la - 293)) & -1) != 0) or ((((_la - 357)) & ~0x3f) == 0 and ((1 << (_la - 357)) & -1) != 0) or ((((_la - 421)) & ~0x3f) == 0 and ((1 << (_la - 421)) & -8589934593) != 0) or ((((_la - 485)) & ~0x3f) == 0 and ((1 << (_la - 485)) & -17181179905) != 0) or ((((_la - 549)) & ~0x3f) == 0 and ((1 << (_la - 549)) & -1) != 0) or ((((_la - 613)) & ~0x3f) == 0 and ((1 << (_la - 613)) & 844425232121855) != 0): - self.state = 5419 - self.func_args_with_defaults_list() - - - self.state = 5422 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_args_with_defaults_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_arg_with_default(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Func_arg_with_defaultContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Func_arg_with_defaultContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_args_with_defaults_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_args_with_defaults_list" ): - listener.enterFunc_args_with_defaults_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_args_with_defaults_list" ): - listener.exitFunc_args_with_defaults_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_args_with_defaults_list" ): - return visitor.visitFunc_args_with_defaults_list(self) - else: - return visitor.visitChildren(self) - - - - - def func_args_with_defaults_list(self): - - localctx = PostgreSQLParser.Func_args_with_defaults_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 630, self.RULE_func_args_with_defaults_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5424 - self.func_arg_with_default() - self.state = 5429 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5425 - self.match(PostgreSQLParser.COMMA) - self.state = 5426 - self.func_arg_with_default() - self.state = 5431 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def arg_class(self): - return self.getTypedRuleContext(PostgreSQLParser.Arg_classContext,0) - - - def func_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_typeContext,0) - - - def param_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Param_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_arg" ): - listener.enterFunc_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_arg" ): - listener.exitFunc_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_arg" ): - return visitor.visitFunc_arg(self) - else: - return visitor.visitChildren(self) - - - - - def func_arg(self): - - localctx = PostgreSQLParser.Func_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 632, self.RULE_func_arg) - try: - self.state = 5445 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,275,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5432 - self.arg_class() - self.state = 5434 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,273,self._ctx) - if la_ == 1: - self.state = 5433 - self.param_name() - - - self.state = 5436 - self.func_type() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5438 - self.param_name() - self.state = 5440 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,274,self._ctx) - if la_ == 1: - self.state = 5439 - self.arg_class() - - - self.state = 5442 - self.func_type() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5444 - self.func_type() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Arg_classContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def OUT_P(self): - return self.getToken(PostgreSQLParser.OUT_P, 0) - - def INOUT(self): - return self.getToken(PostgreSQLParser.INOUT, 0) - - def VARIADIC(self): - return self.getToken(PostgreSQLParser.VARIADIC, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_arg_class - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArg_class" ): - listener.enterArg_class(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArg_class" ): - listener.exitArg_class(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArg_class" ): - return visitor.visitArg_class(self) - else: - return visitor.visitChildren(self) - - - - - def arg_class(self): - - localctx = PostgreSQLParser.Arg_classContext(self, self._ctx, self.state) - self.enterRule(localctx, 634, self.RULE_arg_class) - try: - self.state = 5454 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [68]: - self.enterOuterAlt(localctx, 1) - self.state = 5447 - self.match(PostgreSQLParser.IN_P) - self.state = 5449 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,276,self._ctx) - if la_ == 1: - self.state = 5448 - self.match(PostgreSQLParser.OUT_P) - - - pass - elif token in [453]: - self.enterOuterAlt(localctx, 2) - self.state = 5451 - self.match(PostgreSQLParser.OUT_P) - pass - elif token in [393]: - self.enterOuterAlt(localctx, 3) - self.state = 5452 - self.match(PostgreSQLParser.INOUT) - pass - elif token in [101]: - self.enterOuterAlt(localctx, 4) - self.state = 5453 - self.match(PostgreSQLParser.VARIADIC) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Param_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def type_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_function_nameContext,0) - - - def builtin_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Builtin_function_nameContext,0) - - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_param_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterParam_name" ): - listener.enterParam_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitParam_name" ): - listener.exitParam_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitParam_name" ): - return visitor.visitParam_name(self) - else: - return visitor.visitChildren(self) - - - - - def param_name(self): - - localctx = PostgreSQLParser.Param_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 636, self.RULE_param_name) - try: - self.state = 5460 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 473, 475, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 5456 - self.type_function_name() - pass - elif token in [304, 418, 419, 420, 421, 422, 423, 424, 504, 513, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635]: - self.enterOuterAlt(localctx, 2) - self.state = 5457 - self.builtin_function_name() - pass - elif token in [119]: - self.enterOuterAlt(localctx, 3) - self.state = 5458 - self.match(PostgreSQLParser.LEFT) - pass - elif token in [126]: - self.enterOuterAlt(localctx, 4) - self.state = 5459 - self.match(PostgreSQLParser.RIGHT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_returnContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_typeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_return - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_return" ): - listener.enterFunc_return(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_return" ): - listener.exitFunc_return(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_return" ): - return visitor.visitFunc_return(self) - else: - return visitor.visitChildren(self) - - - - - def func_return(self): - - localctx = PostgreSQLParser.Func_returnContext(self, self._ctx, self.state) - self.enterRule(localctx, 638, self.RULE_func_return) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5462 - self.func_type() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def attrs(self): - return self.getTypedRuleContext(PostgreSQLParser.AttrsContext,0) - - - def PERCENT(self): - return self.getToken(PostgreSQLParser.PERCENT, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def builtin_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Builtin_function_nameContext,0) - - - def type_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_function_nameContext,0) - - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def SETOF(self): - return self.getToken(PostgreSQLParser.SETOF, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_type" ): - listener.enterFunc_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_type" ): - listener.exitFunc_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_type" ): - return visitor.visitFunc_type(self) - else: - return visitor.visitChildren(self) - - - - - def func_type(self): - - localctx = PostgreSQLParser.Func_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 640, self.RULE_func_type) - self._la = 0 # Token type - try: - self.state = 5478 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,281,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5464 - self.typename() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5466 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==408: - self.state = 5465 - self.match(PostgreSQLParser.SETOF) - - - self.state = 5472 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [304, 418, 419, 420, 421, 422, 423, 424, 504, 513, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635]: - self.state = 5468 - self.builtin_function_name() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 473, 475, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.state = 5469 - self.type_function_name() - pass - elif token in [119]: - self.state = 5470 - self.match(PostgreSQLParser.LEFT) - pass - elif token in [126]: - self.state = 5471 - self.match(PostgreSQLParser.RIGHT) - pass - else: - raise NoViableAltException(self) - - self.state = 5474 - self.attrs() - self.state = 5475 - self.match(PostgreSQLParser.PERCENT) - self.state = 5476 - self.match(PostgreSQLParser.TYPE_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_arg_with_defaultContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_argContext,0) - - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_arg_with_default - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_arg_with_default" ): - listener.enterFunc_arg_with_default(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_arg_with_default" ): - listener.exitFunc_arg_with_default(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_arg_with_default" ): - return visitor.visitFunc_arg_with_default(self) - else: - return visitor.visitChildren(self) - - - - - def func_arg_with_default(self): - - localctx = PostgreSQLParser.Func_arg_with_defaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 642, self.RULE_func_arg_with_default) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5480 - self.func_arg() - self.state = 5483 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==10 or _la==53: - self.state = 5481 - _la = self._input.LA(1) - if not(_la==10 or _la==53): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 5482 - self.a_expr() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Aggr_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aggr_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAggr_arg" ): - listener.enterAggr_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAggr_arg" ): - listener.exitAggr_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAggr_arg" ): - return visitor.visitAggr_arg(self) - else: - return visitor.visitChildren(self) - - - - - def aggr_arg(self): - - localctx = PostgreSQLParser.Aggr_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 644, self.RULE_aggr_arg) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5485 - self.func_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Aggr_argsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def aggr_args_list(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Aggr_args_listContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Aggr_args_listContext,i) - - - def ORDER(self): - return self.getToken(PostgreSQLParser.ORDER, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aggr_args - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAggr_args" ): - listener.enterAggr_args(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAggr_args" ): - listener.exitAggr_args(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAggr_args" ): - return visitor.visitAggr_args(self) - else: - return visitor.visitChildren(self) - - - - - def aggr_args(self): - - localctx = PostgreSQLParser.Aggr_argsContext(self, self._ctx, self.state) - self.enterRule(localctx, 646, self.RULE_aggr_args) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5487 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5498 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,283,self._ctx) - if la_ == 1: - self.state = 5488 - self.match(PostgreSQLParser.STAR) - pass - - elif la_ == 2: - self.state = 5489 - self.aggr_args_list() - pass - - elif la_ == 3: - self.state = 5490 - self.match(PostgreSQLParser.ORDER) - self.state = 5491 - self.match(PostgreSQLParser.BY) - self.state = 5492 - self.aggr_args_list() - pass - - elif la_ == 4: - self.state = 5493 - self.aggr_args_list() - self.state = 5494 - self.match(PostgreSQLParser.ORDER) - self.state = 5495 - self.match(PostgreSQLParser.BY) - self.state = 5496 - self.aggr_args_list() - pass - - - self.state = 5500 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Aggr_args_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def aggr_arg(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Aggr_argContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Aggr_argContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aggr_args_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAggr_args_list" ): - listener.enterAggr_args_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAggr_args_list" ): - listener.exitAggr_args_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAggr_args_list" ): - return visitor.visitAggr_args_list(self) - else: - return visitor.visitChildren(self) - - - - - def aggr_args_list(self): - - localctx = PostgreSQLParser.Aggr_args_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 648, self.RULE_aggr_args_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5502 - self.aggr_arg() - self.state = 5507 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5503 - self.match(PostgreSQLParser.COMMA) - self.state = 5504 - self.aggr_arg() - self.state = 5509 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Aggregate_with_argtypesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def aggr_args(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggr_argsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aggregate_with_argtypes - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAggregate_with_argtypes" ): - listener.enterAggregate_with_argtypes(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAggregate_with_argtypes" ): - listener.exitAggregate_with_argtypes(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAggregate_with_argtypes" ): - return visitor.visitAggregate_with_argtypes(self) - else: - return visitor.visitChildren(self) - - - - - def aggregate_with_argtypes(self): - - localctx = PostgreSQLParser.Aggregate_with_argtypesContext(self, self._ctx, self.state) - self.enterRule(localctx, 650, self.RULE_aggregate_with_argtypes) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5510 - self.func_name() - self.state = 5511 - self.aggr_args() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Aggregate_with_argtypes_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def aggregate_with_argtypes(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Aggregate_with_argtypesContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aggregate_with_argtypes_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAggregate_with_argtypes_list" ): - listener.enterAggregate_with_argtypes_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAggregate_with_argtypes_list" ): - listener.exitAggregate_with_argtypes_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAggregate_with_argtypes_list" ): - return visitor.visitAggregate_with_argtypes_list(self) - else: - return visitor.visitChildren(self) - - - - - def aggregate_with_argtypes_list(self): - - localctx = PostgreSQLParser.Aggregate_with_argtypes_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 652, self.RULE_aggregate_with_argtypes_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5513 - self.aggregate_with_argtypes() - self.state = 5518 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5514 - self.match(PostgreSQLParser.COMMA) - self.state = 5515 - self.aggregate_with_argtypes() - self.state = 5520 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createfunc_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createfunc_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Createfunc_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Createfunc_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createfunc_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatefunc_opt_list" ): - listener.enterCreatefunc_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatefunc_opt_list" ): - listener.exitCreatefunc_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatefunc_opt_list" ): - return visitor.visitCreatefunc_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def createfunc_opt_list(self): - - localctx = PostgreSQLParser.Createfunc_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 654, self.RULE_createfunc_opt_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5522 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 5521 - self.createfunc_opt_item() - - else: - raise NoViableAltException(self) - self.state = 5524 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,286,self._ctx) - - - ParseRoutineBody(_localctx); - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Common_func_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CALLED(self): - return self.getToken(PostgreSQLParser.CALLED, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def NULL_P(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.NULL_P) - else: - return self.getToken(PostgreSQLParser.NULL_P, i) - - def INPUT_P(self): - return self.getToken(PostgreSQLParser.INPUT_P, 0) - - def RETURNS(self): - return self.getToken(PostgreSQLParser.RETURNS, 0) - - def STRICT_P(self): - return self.getToken(PostgreSQLParser.STRICT_P, 0) - - def IMMUTABLE(self): - return self.getToken(PostgreSQLParser.IMMUTABLE, 0) - - def STABLE(self): - return self.getToken(PostgreSQLParser.STABLE, 0) - - def VOLATILE(self): - return self.getToken(PostgreSQLParser.VOLATILE, 0) - - def EXTERNAL(self): - return self.getToken(PostgreSQLParser.EXTERNAL, 0) - - def SECURITY(self): - return self.getToken(PostgreSQLParser.SECURITY, 0) - - def DEFINER(self): - return self.getToken(PostgreSQLParser.DEFINER, 0) - - def INVOKER(self): - return self.getToken(PostgreSQLParser.INVOKER, 0) - - def LEAKPROOF(self): - return self.getToken(PostgreSQLParser.LEAKPROOF, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def COST(self): - return self.getToken(PostgreSQLParser.COST, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def SUPPORT(self): - return self.getToken(PostgreSQLParser.SUPPORT, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def functionsetresetclause(self): - return self.getTypedRuleContext(PostgreSQLParser.FunctionsetresetclauseContext,0) - - - def PARALLEL(self): - return self.getToken(PostgreSQLParser.PARALLEL, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_common_func_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCommon_func_opt_item" ): - listener.enterCommon_func_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCommon_func_opt_item" ): - listener.exitCommon_func_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCommon_func_opt_item" ): - return visitor.visitCommon_func_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def common_func_opt_item(self): - - localctx = PostgreSQLParser.Common_func_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 656, self.RULE_common_func_opt_item) - try: - self.state = 5563 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,287,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5528 - self.match(PostgreSQLParser.CALLED) - self.state = 5529 - self.match(PostgreSQLParser.ON) - self.state = 5530 - self.match(PostgreSQLParser.NULL_P) - self.state = 5531 - self.match(PostgreSQLParser.INPUT_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5532 - self.match(PostgreSQLParser.RETURNS) - self.state = 5533 - self.match(PostgreSQLParser.NULL_P) - self.state = 5534 - self.match(PostgreSQLParser.ON) - self.state = 5535 - self.match(PostgreSQLParser.NULL_P) - self.state = 5536 - self.match(PostgreSQLParser.INPUT_P) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5537 - self.match(PostgreSQLParser.STRICT_P) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5538 - self.match(PostgreSQLParser.IMMUTABLE) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 5539 - self.match(PostgreSQLParser.STABLE) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 5540 - self.match(PostgreSQLParser.VOLATILE) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 5541 - self.match(PostgreSQLParser.EXTERNAL) - self.state = 5542 - self.match(PostgreSQLParser.SECURITY) - self.state = 5543 - self.match(PostgreSQLParser.DEFINER) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 5544 - self.match(PostgreSQLParser.EXTERNAL) - self.state = 5545 - self.match(PostgreSQLParser.SECURITY) - self.state = 5546 - self.match(PostgreSQLParser.INVOKER) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 5547 - self.match(PostgreSQLParser.SECURITY) - self.state = 5548 - self.match(PostgreSQLParser.DEFINER) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 5549 - self.match(PostgreSQLParser.SECURITY) - self.state = 5550 - self.match(PostgreSQLParser.INVOKER) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 5551 - self.match(PostgreSQLParser.LEAKPROOF) - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 5552 - self.match(PostgreSQLParser.NOT) - self.state = 5553 - self.match(PostgreSQLParser.LEAKPROOF) - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 5554 - self.match(PostgreSQLParser.COST) - self.state = 5555 - self.numericonly() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 5556 - self.match(PostgreSQLParser.ROWS) - self.state = 5557 - self.numericonly() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 5558 - self.match(PostgreSQLParser.SUPPORT) - self.state = 5559 - self.any_name() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 5560 - self.functionsetresetclause() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 5561 - self.match(PostgreSQLParser.PARALLEL) - self.state = 5562 - self.colid() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createfunc_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def func_as(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_asContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def transform_type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Transform_type_listContext,0) - - - def WINDOW(self): - return self.getToken(PostgreSQLParser.WINDOW, 0) - - def common_func_opt_item(self): - return self.getTypedRuleContext(PostgreSQLParser.Common_func_opt_itemContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createfunc_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatefunc_opt_item" ): - listener.enterCreatefunc_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatefunc_opt_item" ): - listener.exitCreatefunc_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatefunc_opt_item" ): - return visitor.visitCreatefunc_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def createfunc_opt_item(self): - - localctx = PostgreSQLParser.Createfunc_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 658, self.RULE_createfunc_opt_item) - try: - self.state = 5573 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.enterOuterAlt(localctx, 1) - self.state = 5565 - self.match(PostgreSQLParser.AS) - self.state = 5566 - self.func_as() - pass - elif token in [238]: - self.enterOuterAlt(localctx, 2) - self.state = 5567 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5568 - self.nonreservedword_or_sconst() - pass - elif token in [443]: - self.enterOuterAlt(localctx, 3) - self.state = 5569 - self.match(PostgreSQLParser.TRANSFORM) - self.state = 5570 - self.transform_type_list() - pass - elif token in [104]: - self.enterOuterAlt(localctx, 4) - self.state = 5571 - self.match(PostgreSQLParser.WINDOW) - pass - elif token in [77, 149, 170, 205, 222, 241, 306, 309, 313, 320, 326, 331, 339, 370, 459, 460]: - self.enterOuterAlt(localctx, 5) - self.state = 5572 - self.common_func_opt_item() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_asContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.Definition = None - self.def_ = None # SconstContext - - def sconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,i) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_as - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_as" ): - listener.enterFunc_as(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_as" ): - listener.exitFunc_as(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_as" ): - return visitor.visitFunc_as(self) - else: - return visitor.visitChildren(self) - - - - - def func_as(self): - - localctx = PostgreSQLParser.Func_asContext(self, self._ctx, self.state) - self.enterRule(localctx, 660, self.RULE_func_as) - try: - self.state = 5580 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,289,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5575 - localctx.def_ = self.sconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5576 - self.sconst() - self.state = 5577 - self.match(PostgreSQLParser.COMMA) - self.state = 5578 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Transform_type_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.FOR) - else: - return self.getToken(PostgreSQLParser.FOR, i) - - def TYPE_P(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.TYPE_P) - else: - return self.getToken(PostgreSQLParser.TYPE_P, i) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transform_type_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransform_type_list" ): - listener.enterTransform_type_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransform_type_list" ): - listener.exitTransform_type_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransform_type_list" ): - return visitor.visitTransform_type_list(self) - else: - return visitor.visitChildren(self) - - - - - def transform_type_list(self): - - localctx = PostgreSQLParser.Transform_type_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 662, self.RULE_transform_type_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5582 - self.match(PostgreSQLParser.FOR) - self.state = 5583 - self.match(PostgreSQLParser.TYPE_P) - self.state = 5584 - self.typename() - self.state = 5591 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5585 - self.match(PostgreSQLParser.COMMA) - self.state = 5586 - self.match(PostgreSQLParser.FOR) - self.state = 5587 - self.match(PostgreSQLParser.TYPE_P) - self.state = 5588 - self.typename() - self.state = 5593 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_definitionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def definition(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinitionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_definition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_definition" ): - listener.enterOpt_definition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_definition" ): - listener.exitOpt_definition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_definition" ): - return visitor.visitOpt_definition(self) - else: - return visitor.visitChildren(self) - - - - - def opt_definition(self): - - localctx = PostgreSQLParser.Opt_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 664, self.RULE_opt_definition) - try: - self.state = 5597 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,291,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5594 - self.match(PostgreSQLParser.WITH) - self.state = 5595 - self.definition() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_func_columnContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def param_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Param_nameContext,0) - - - def func_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_typeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_func_column - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_func_column" ): - listener.enterTable_func_column(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_func_column" ): - listener.exitTable_func_column(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_func_column" ): - return visitor.visitTable_func_column(self) - else: - return visitor.visitChildren(self) - - - - - def table_func_column(self): - - localctx = PostgreSQLParser.Table_func_columnContext(self, self._ctx, self.state) - self.enterRule(localctx, 666, self.RULE_table_func_column) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5599 - self.param_name() - self.state = 5600 - self.func_type() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_func_column_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def table_func_column(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Table_func_columnContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Table_func_columnContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_func_column_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_func_column_list" ): - listener.enterTable_func_column_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_func_column_list" ): - listener.exitTable_func_column_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_func_column_list" ): - return visitor.visitTable_func_column_list(self) - else: - return visitor.visitChildren(self) - - - - - def table_func_column_list(self): - - localctx = PostgreSQLParser.Table_func_column_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 668, self.RULE_table_func_column_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5602 - self.table_func_column() - self.state = 5607 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5603 - self.match(PostgreSQLParser.COMMA) - self.state = 5604 - self.table_func_column() - self.state = 5609 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterfunctionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def alterfunc_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Alterfunc_opt_listContext,0) - - - def opt_restrict(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_restrictContext,0) - - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterfunctionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterfunctionstmt" ): - listener.enterAlterfunctionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterfunctionstmt" ): - listener.exitAlterfunctionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterfunctionstmt" ): - return visitor.visitAlterfunctionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterfunctionstmt(self): - - localctx = PostgreSQLParser.AlterfunctionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 670, self.RULE_alterfunctionstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5610 - self.match(PostgreSQLParser.ALTER) - self.state = 5611 - _la = self._input.LA(1) - if not(_la==211 or _la==289 or _la==442): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 5612 - self.function_with_argtypes() - self.state = 5613 - self.alterfunc_opt_list() - self.state = 5614 - self.opt_restrict() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alterfunc_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def common_func_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Common_func_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Common_func_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterfunc_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterfunc_opt_list" ): - listener.enterAlterfunc_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterfunc_opt_list" ): - listener.exitAlterfunc_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterfunc_opt_list" ): - return visitor.visitAlterfunc_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def alterfunc_opt_list(self): - - localctx = PostgreSQLParser.Alterfunc_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 672, self.RULE_alterfunc_opt_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5617 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 5616 - self.common_func_opt_item() - - else: - raise NoViableAltException(self) - self.state = 5619 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,293,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_restrictContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RESTRICT(self): - return self.getToken(PostgreSQLParser.RESTRICT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_restrict - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_restrict" ): - listener.enterOpt_restrict(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_restrict" ): - listener.exitOpt_restrict(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_restrict" ): - return visitor.visitOpt_restrict(self) - else: - return visitor.visitChildren(self) - - - - - def opt_restrict(self): - - localctx = PostgreSQLParser.Opt_restrictContext(self, self._ctx, self.state) - self.enterRule(localctx, 674, self.RULE_opt_restrict) - try: - self.state = 5623 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [308]: - self.enterOuterAlt(localctx, 1) - self.state = 5621 - self.match(PostgreSQLParser.RESTRICT) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RemovefuncstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypes_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_removefuncstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRemovefuncstmt" ): - listener.enterRemovefuncstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRemovefuncstmt" ): - listener.exitRemovefuncstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRemovefuncstmt" ): - return visitor.visitRemovefuncstmt(self) - else: - return visitor.visitChildren(self) - - - - - def removefuncstmt(self): - - localctx = PostgreSQLParser.RemovefuncstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 676, self.RULE_removefuncstmt) - try: - self.state = 5661 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,295,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5625 - self.match(PostgreSQLParser.DROP) - self.state = 5626 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5627 - self.function_with_argtypes_list() - self.state = 5628 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5630 - self.match(PostgreSQLParser.DROP) - self.state = 5631 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5632 - self.match(PostgreSQLParser.IF_P) - self.state = 5633 - self.match(PostgreSQLParser.EXISTS) - self.state = 5634 - self.function_with_argtypes_list() - self.state = 5635 - self.opt_drop_behavior() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5637 - self.match(PostgreSQLParser.DROP) - self.state = 5638 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 5639 - self.function_with_argtypes_list() - self.state = 5640 - self.opt_drop_behavior() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5642 - self.match(PostgreSQLParser.DROP) - self.state = 5643 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 5644 - self.match(PostgreSQLParser.IF_P) - self.state = 5645 - self.match(PostgreSQLParser.EXISTS) - self.state = 5646 - self.function_with_argtypes_list() - self.state = 5647 - self.opt_drop_behavior() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 5649 - self.match(PostgreSQLParser.DROP) - self.state = 5650 - self.match(PostgreSQLParser.ROUTINE) - self.state = 5651 - self.function_with_argtypes_list() - self.state = 5652 - self.opt_drop_behavior() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 5654 - self.match(PostgreSQLParser.DROP) - self.state = 5655 - self.match(PostgreSQLParser.ROUTINE) - self.state = 5656 - self.match(PostgreSQLParser.IF_P) - self.state = 5657 - self.match(PostgreSQLParser.EXISTS) - self.state = 5658 - self.function_with_argtypes_list() - self.state = 5659 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RemoveaggrstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypes_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_removeaggrstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRemoveaggrstmt" ): - listener.enterRemoveaggrstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRemoveaggrstmt" ): - listener.exitRemoveaggrstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRemoveaggrstmt" ): - return visitor.visitRemoveaggrstmt(self) - else: - return visitor.visitChildren(self) - - - - - def removeaggrstmt(self): - - localctx = PostgreSQLParser.RemoveaggrstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 678, self.RULE_removeaggrstmt) - try: - self.state = 5675 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,296,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5663 - self.match(PostgreSQLParser.DROP) - self.state = 5664 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 5665 - self.aggregate_with_argtypes_list() - self.state = 5666 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5668 - self.match(PostgreSQLParser.DROP) - self.state = 5669 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 5670 - self.match(PostgreSQLParser.IF_P) - self.state = 5671 - self.match(PostgreSQLParser.EXISTS) - self.state = 5672 - self.aggregate_with_argtypes_list() - self.state = 5673 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RemoveoperstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypes_listContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_removeoperstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRemoveoperstmt" ): - listener.enterRemoveoperstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRemoveoperstmt" ): - listener.exitRemoveoperstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRemoveoperstmt" ): - return visitor.visitRemoveoperstmt(self) - else: - return visitor.visitChildren(self) - - - - - def removeoperstmt(self): - - localctx = PostgreSQLParser.RemoveoperstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 680, self.RULE_removeoperstmt) - try: - self.state = 5689 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,297,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5677 - self.match(PostgreSQLParser.DROP) - self.state = 5678 - self.match(PostgreSQLParser.OPERATOR) - self.state = 5679 - self.operator_with_argtypes_list() - self.state = 5680 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5682 - self.match(PostgreSQLParser.DROP) - self.state = 5683 - self.match(PostgreSQLParser.OPERATOR) - self.state = 5684 - self.match(PostgreSQLParser.IF_P) - self.state = 5685 - self.match(PostgreSQLParser.EXISTS) - self.state = 5686 - self.operator_with_argtypes_list() - self.state = 5687 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Oper_argtypesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def NONE(self): - return self.getToken(PostgreSQLParser.NONE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_oper_argtypes - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOper_argtypes" ): - listener.enterOper_argtypes(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOper_argtypes" ): - listener.exitOper_argtypes(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOper_argtypes" ): - return visitor.visitOper_argtypes(self) - else: - return visitor.visitChildren(self) - - - - - def oper_argtypes(self): - - localctx = PostgreSQLParser.Oper_argtypesContext(self, self._ctx, self.state) - self.enterRule(localctx, 682, self.RULE_oper_argtypes) - try: - self.state = 5713 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,298,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5691 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5692 - self.typename() - self.state = 5693 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5695 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5696 - self.typename() - self.state = 5697 - self.match(PostgreSQLParser.COMMA) - self.state = 5698 - self.typename() - self.state = 5699 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5701 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5702 - self.match(PostgreSQLParser.NONE) - self.state = 5703 - self.match(PostgreSQLParser.COMMA) - self.state = 5704 - self.typename() - self.state = 5705 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5707 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5708 - self.typename() - self.state = 5709 - self.match(PostgreSQLParser.COMMA) - self.state = 5710 - self.match(PostgreSQLParser.NONE) - self.state = 5711 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Any_operatorContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.All_opContext,0) - - - def colid(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.ColidContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,i) - - - def DOT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.DOT) - else: - return self.getToken(PostgreSQLParser.DOT, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_any_operator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAny_operator" ): - listener.enterAny_operator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAny_operator" ): - listener.exitAny_operator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAny_operator" ): - return visitor.visitAny_operator(self) - else: - return visitor.visitChildren(self) - - - - - def any_operator(self): - - localctx = PostgreSQLParser.Any_operatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 684, self.RULE_any_operator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5720 - self._errHandler.sync(self) - _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & 2459027012145119232) != 0) or ((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & -113665638399) != 0) or ((((_la - 156)) & ~0x3f) == 0 and ((1 << (_la - 156)) & -1) != 0) or ((((_la - 220)) & ~0x3f) == 0 and ((1 << (_la - 220)) & -9663676417) != 0) or ((((_la - 284)) & ~0x3f) == 0 and ((1 << (_la - 284)) & -1) != 0) or ((((_la - 348)) & ~0x3f) == 0 and ((1 << (_la - 348)) & -1) != 0) or ((((_la - 412)) & ~0x3f) == 0 and ((1 << (_la - 412)) & -1152925902653358081) != 0) or ((((_la - 476)) & ~0x3f) == 0 and ((1 << (_la - 476)) & -8796764110849) != 0) or ((((_la - 540)) & ~0x3f) == 0 and ((1 << (_la - 540)) & -1) != 0) or ((((_la - 604)) & ~0x3f) == 0 and ((1 << (_la - 604)) & 432345718846390271) != 0): - self.state = 5715 - self.colid() - self.state = 5716 - self.match(PostgreSQLParser.DOT) - self.state = 5722 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 5723 - self.all_op() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Operator_with_argtypes_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def operator_with_argtypes(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Operator_with_argtypesContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_operator_with_argtypes_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperator_with_argtypes_list" ): - listener.enterOperator_with_argtypes_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperator_with_argtypes_list" ): - listener.exitOperator_with_argtypes_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperator_with_argtypes_list" ): - return visitor.visitOperator_with_argtypes_list(self) - else: - return visitor.visitChildren(self) - - - - - def operator_with_argtypes_list(self): - - localctx = PostgreSQLParser.Operator_with_argtypes_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 686, self.RULE_operator_with_argtypes_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5725 - self.operator_with_argtypes() - self.state = 5730 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5726 - self.match(PostgreSQLParser.COMMA) - self.state = 5727 - self.operator_with_argtypes() - self.state = 5732 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Operator_with_argtypesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def oper_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Oper_argtypesContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_operator_with_argtypes - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperator_with_argtypes" ): - listener.enterOperator_with_argtypes(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperator_with_argtypes" ): - listener.exitOperator_with_argtypes(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperator_with_argtypes" ): - return visitor.visitOperator_with_argtypes(self) - else: - return visitor.visitChildren(self) - - - - - def operator_with_argtypes(self): - - localctx = PostgreSQLParser.Operator_with_argtypesContext(self, self._ctx, self.state) - self.enterRule(localctx, 688, self.RULE_operator_with_argtypes) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5733 - self.any_operator() - self.state = 5734 - self.oper_argtypes() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DostmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def dostmt_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Dostmt_opt_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dostmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDostmt" ): - listener.enterDostmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDostmt" ): - listener.exitDostmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDostmt" ): - return visitor.visitDostmt(self) - else: - return visitor.visitChildren(self) - - - - - def dostmt(self): - - localctx = PostgreSQLParser.DostmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 690, self.RULE_dostmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5736 - self.match(PostgreSQLParser.DO) - self.state = 5737 - self.dostmt_opt_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Dostmt_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def dostmt_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Dostmt_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Dostmt_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dostmt_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDostmt_opt_list" ): - listener.enterDostmt_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDostmt_opt_list" ): - listener.exitDostmt_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDostmt_opt_list" ): - return visitor.visitDostmt_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def dostmt_opt_list(self): - - localctx = PostgreSQLParser.Dostmt_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 692, self.RULE_dostmt_opt_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5740 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 5739 - self.dostmt_opt_item() - self.state = 5742 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==238 or ((((_la - 645)) & ~0x3f) == 0 and ((1 << (_la - 645)) & 67108885) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Dostmt_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def nonreservedword_or_sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.Nonreservedword_or_sconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dostmt_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDostmt_opt_item" ): - listener.enterDostmt_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDostmt_opt_item" ): - listener.exitDostmt_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDostmt_opt_item" ): - return visitor.visitDostmt_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def dostmt_opt_item(self): - - localctx = PostgreSQLParser.Dostmt_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 694, self.RULE_dostmt_opt_item) - try: - self.state = 5747 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 5744 - self.sconst() - pass - elif token in [238]: - self.enterOuterAlt(localctx, 2) - self.state = 5745 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5746 - self.nonreservedword_or_sconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatecaststmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def cast_context(self): - return self.getTypedRuleContext(PostgreSQLParser.Cast_contextContext,0) - - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def INOUT(self): - return self.getToken(PostgreSQLParser.INOUT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createcaststmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatecaststmt" ): - listener.enterCreatecaststmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatecaststmt" ): - listener.exitCreatecaststmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatecaststmt" ): - return visitor.visitCreatecaststmt(self) - else: - return visitor.visitChildren(self) - - - - - def createcaststmt(self): - - localctx = PostgreSQLParser.CreatecaststmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 696, self.RULE_createcaststmt) - try: - self.state = 5783 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,303,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5749 - self.match(PostgreSQLParser.CREATE) - self.state = 5750 - self.match(PostgreSQLParser.CAST) - self.state = 5751 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5752 - self.typename() - self.state = 5753 - self.match(PostgreSQLParser.AS) - self.state = 5754 - self.typename() - self.state = 5755 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5756 - self.match(PostgreSQLParser.WITH) - self.state = 5757 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5758 - self.function_with_argtypes() - self.state = 5759 - self.cast_context() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5761 - self.match(PostgreSQLParser.CREATE) - self.state = 5762 - self.match(PostgreSQLParser.CAST) - self.state = 5763 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5764 - self.typename() - self.state = 5765 - self.match(PostgreSQLParser.AS) - self.state = 5766 - self.typename() - self.state = 5767 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5768 - self.match(PostgreSQLParser.WITHOUT) - self.state = 5769 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5770 - self.cast_context() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5772 - self.match(PostgreSQLParser.CREATE) - self.state = 5773 - self.match(PostgreSQLParser.CAST) - self.state = 5774 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5775 - self.typename() - self.state = 5776 - self.match(PostgreSQLParser.AS) - self.state = 5777 - self.typename() - self.state = 5778 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5779 - self.match(PostgreSQLParser.WITH) - self.state = 5780 - self.match(PostgreSQLParser.INOUT) - self.state = 5781 - self.cast_context() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cast_contextContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def IMPLICIT_P(self): - return self.getToken(PostgreSQLParser.IMPLICIT_P, 0) - - def ASSIGNMENT(self): - return self.getToken(PostgreSQLParser.ASSIGNMENT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cast_context - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCast_context" ): - listener.enterCast_context(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCast_context" ): - listener.exitCast_context(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCast_context" ): - return visitor.visitCast_context(self) - else: - return visitor.visitChildren(self) - - - - - def cast_context(self): - - localctx = PostgreSQLParser.Cast_contextContext(self, self._ctx, self.state) - self.enterRule(localctx, 698, self.RULE_cast_context) - try: - self.state = 5790 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,304,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5785 - self.match(PostgreSQLParser.AS) - self.state = 5786 - self.match(PostgreSQLParser.IMPLICIT_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5787 - self.match(PostgreSQLParser.AS) - self.state = 5788 - self.match(PostgreSQLParser.ASSIGNMENT) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropcaststmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def opt_if_exists(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_if_existsContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropcaststmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropcaststmt" ): - listener.enterDropcaststmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropcaststmt" ): - listener.exitDropcaststmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropcaststmt" ): - return visitor.visitDropcaststmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropcaststmt(self): - - localctx = PostgreSQLParser.DropcaststmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 700, self.RULE_dropcaststmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5792 - self.match(PostgreSQLParser.DROP) - self.state = 5793 - self.match(PostgreSQLParser.CAST) - self.state = 5794 - self.opt_if_exists() - self.state = 5795 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5796 - self.typename() - self.state = 5797 - self.match(PostgreSQLParser.AS) - self.state = 5798 - self.typename() - self.state = 5799 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5800 - self.opt_drop_behavior() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_if_existsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_if_exists - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_if_exists" ): - listener.enterOpt_if_exists(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_if_exists" ): - listener.exitOpt_if_exists(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_if_exists" ): - return visitor.visitOpt_if_exists(self) - else: - return visitor.visitChildren(self) - - - - - def opt_if_exists(self): - - localctx = PostgreSQLParser.Opt_if_existsContext(self, self._ctx, self.state) - self.enterRule(localctx, 702, self.RULE_opt_if_exists) - try: - self.state = 5805 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [220]: - self.enterOuterAlt(localctx, 1) - self.state = 5802 - self.match(PostgreSQLParser.IF_P) - self.state = 5803 - self.match(PostgreSQLParser.EXISTS) - pass - elif token in [2, 62]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatetransformstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_or_replace(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_or_replaceContext,0) - - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def transform_element_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Transform_element_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createtransformstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatetransformstmt" ): - listener.enterCreatetransformstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatetransformstmt" ): - listener.exitCreatetransformstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatetransformstmt" ): - return visitor.visitCreatetransformstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createtransformstmt(self): - - localctx = PostgreSQLParser.CreatetransformstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 704, self.RULE_createtransformstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5807 - self.match(PostgreSQLParser.CREATE) - self.state = 5808 - self.opt_or_replace() - self.state = 5809 - self.match(PostgreSQLParser.TRANSFORM) - self.state = 5810 - self.match(PostgreSQLParser.FOR) - self.state = 5811 - self.typename() - self.state = 5812 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5813 - self.name() - self.state = 5814 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5815 - self.transform_element_list() - self.state = 5816 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Transform_element_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def SQL_P(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.SQL_P) - else: - return self.getToken(PostgreSQLParser.SQL_P, i) - - def WITH(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.WITH) - else: - return self.getToken(PostgreSQLParser.WITH, i) - - def FUNCTION(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.FUNCTION) - else: - return self.getToken(PostgreSQLParser.FUNCTION, i) - - def function_with_argtypes(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Function_with_argtypesContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,i) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transform_element_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransform_element_list" ): - listener.enterTransform_element_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransform_element_list" ): - listener.exitTransform_element_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransform_element_list" ): - return visitor.visitTransform_element_list(self) - else: - return visitor.visitChildren(self) - - - - - def transform_element_list(self): - - localctx = PostgreSQLParser.Transform_element_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 706, self.RULE_transform_element_list) - try: - self.state = 5852 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,306,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5818 - self.match(PostgreSQLParser.FROM) - self.state = 5819 - self.match(PostgreSQLParser.SQL_P) - self.state = 5820 - self.match(PostgreSQLParser.WITH) - self.state = 5821 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5822 - self.function_with_argtypes() - self.state = 5823 - self.match(PostgreSQLParser.COMMA) - self.state = 5824 - self.match(PostgreSQLParser.TO) - self.state = 5825 - self.match(PostgreSQLParser.SQL_P) - self.state = 5826 - self.match(PostgreSQLParser.WITH) - self.state = 5827 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5828 - self.function_with_argtypes() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5830 - self.match(PostgreSQLParser.TO) - self.state = 5831 - self.match(PostgreSQLParser.SQL_P) - self.state = 5832 - self.match(PostgreSQLParser.WITH) - self.state = 5833 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5834 - self.function_with_argtypes() - self.state = 5835 - self.match(PostgreSQLParser.COMMA) - self.state = 5836 - self.match(PostgreSQLParser.FROM) - self.state = 5837 - self.match(PostgreSQLParser.SQL_P) - self.state = 5838 - self.match(PostgreSQLParser.WITH) - self.state = 5839 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5840 - self.function_with_argtypes() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5842 - self.match(PostgreSQLParser.FROM) - self.state = 5843 - self.match(PostgreSQLParser.SQL_P) - self.state = 5844 - self.match(PostgreSQLParser.WITH) - self.state = 5845 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5846 - self.function_with_argtypes() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5847 - self.match(PostgreSQLParser.TO) - self.state = 5848 - self.match(PostgreSQLParser.SQL_P) - self.state = 5849 - self.match(PostgreSQLParser.WITH) - self.state = 5850 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5851 - self.function_with_argtypes() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DroptransformstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def opt_if_exists(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_if_existsContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_droptransformstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDroptransformstmt" ): - listener.enterDroptransformstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDroptransformstmt" ): - listener.exitDroptransformstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDroptransformstmt" ): - return visitor.visitDroptransformstmt(self) - else: - return visitor.visitChildren(self) - - - - - def droptransformstmt(self): - - localctx = PostgreSQLParser.DroptransformstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 708, self.RULE_droptransformstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 5854 - self.match(PostgreSQLParser.DROP) - self.state = 5855 - self.match(PostgreSQLParser.TRANSFORM) - self.state = 5856 - self.opt_if_exists() - self.state = 5857 - self.match(PostgreSQLParser.FOR) - self.state = 5858 - self.typename() - self.state = 5859 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5860 - self.name() - self.state = 5861 - self.opt_drop_behavior() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ReindexstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REINDEX(self): - return self.getToken(PostgreSQLParser.REINDEX, 0) - - def reindex_target_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Reindex_target_typeContext,0) - - - def opt_concurrently(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_concurrentlyContext,0) - - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def reindex_target_multitable(self): - return self.getTypedRuleContext(PostgreSQLParser.Reindex_target_multitableContext,0) - - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def reindex_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Reindex_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reindexstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReindexstmt" ): - listener.enterReindexstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReindexstmt" ): - listener.exitReindexstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReindexstmt" ): - return visitor.visitReindexstmt(self) - else: - return visitor.visitChildren(self) - - - - - def reindexstmt(self): - - localctx = PostgreSQLParser.ReindexstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 710, self.RULE_reindexstmt) - try: - self.state = 5889 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,307,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5863 - self.match(PostgreSQLParser.REINDEX) - self.state = 5864 - self.reindex_target_type() - self.state = 5865 - self.opt_concurrently() - self.state = 5866 - self.qualified_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5868 - self.match(PostgreSQLParser.REINDEX) - self.state = 5869 - self.reindex_target_multitable() - self.state = 5870 - self.opt_concurrently() - self.state = 5871 - self.name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5873 - self.match(PostgreSQLParser.REINDEX) - self.state = 5874 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5875 - self.reindex_option_list() - self.state = 5876 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5877 - self.reindex_target_type() - self.state = 5878 - self.opt_concurrently() - self.state = 5879 - self.qualified_name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5881 - self.match(PostgreSQLParser.REINDEX) - self.state = 5882 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 5883 - self.reindex_option_list() - self.state = 5884 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 5885 - self.reindex_target_multitable() - self.state = 5886 - self.opt_concurrently() - self.state = 5887 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reindex_target_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def SYSTEM_P(self): - return self.getToken(PostgreSQLParser.SYSTEM_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reindex_target_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReindex_target_type" ): - listener.enterReindex_target_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReindex_target_type" ): - listener.exitReindex_target_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReindex_target_type" ): - return visitor.visitReindex_target_type(self) - else: - return visitor.visitChildren(self) - - - - - def reindex_target_type(self): - - localctx = PostgreSQLParser.Reindex_target_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 712, self.RULE_reindex_target_type) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5891 - _la = self._input.LA(1) - if not(_la==92 or _la==175 or _la==226 or _la==316 or _la==342): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reindex_target_multitableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def SYSTEM_P(self): - return self.getToken(PostgreSQLParser.SYSTEM_P, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reindex_target_multitable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReindex_target_multitable" ): - listener.enterReindex_target_multitable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReindex_target_multitable" ): - listener.exitReindex_target_multitable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReindex_target_multitable" ): - return visitor.visitReindex_target_multitable(self) - else: - return visitor.visitChildren(self) - - - - - def reindex_target_multitable(self): - - localctx = PostgreSQLParser.Reindex_target_multitableContext(self, self._ctx, self.state) - self.enterRule(localctx, 714, self.RULE_reindex_target_multitable) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5893 - _la = self._input.LA(1) - if not(_la==175 or _la==316 or _la==342): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reindex_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def reindex_option_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Reindex_option_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Reindex_option_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reindex_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReindex_option_list" ): - listener.enterReindex_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReindex_option_list" ): - listener.exitReindex_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReindex_option_list" ): - return visitor.visitReindex_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def reindex_option_list(self): - - localctx = PostgreSQLParser.Reindex_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 716, self.RULE_reindex_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5895 - self.reindex_option_elem() - self.state = 5900 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 5896 - self.match(PostgreSQLParser.COMMA) - self.state = 5897 - self.reindex_option_elem() - self.state = 5902 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reindex_option_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VERBOSE(self): - return self.getToken(PostgreSQLParser.VERBOSE, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def CONCURRENTLY(self): - return self.getToken(PostgreSQLParser.CONCURRENTLY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reindex_option_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReindex_option_elem" ): - listener.enterReindex_option_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReindex_option_elem" ): - listener.exitReindex_option_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReindex_option_elem" ): - return visitor.visitReindex_option_elem(self) - else: - return visitor.visitChildren(self) - - - - - def reindex_option_elem(self): - - localctx = PostgreSQLParser.Reindex_option_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 718, self.RULE_reindex_option_elem) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 5903 - _la = self._input.LA(1) - if not(_la==109 or _la==128 or _la==344): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltertblspcstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.ReloptionsContext,0) - - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altertblspcstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltertblspcstmt" ): - listener.enterAltertblspcstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltertblspcstmt" ): - listener.exitAltertblspcstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltertblspcstmt" ): - return visitor.visitAltertblspcstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altertblspcstmt(self): - - localctx = PostgreSQLParser.AltertblspcstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 720, self.RULE_altertblspcstmt) - try: - self.state = 5917 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,309,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5905 - self.match(PostgreSQLParser.ALTER) - self.state = 5906 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 5907 - self.name() - self.state = 5908 - self.match(PostgreSQLParser.SET) - self.state = 5909 - self.reloptions() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5911 - self.match(PostgreSQLParser.ALTER) - self.state = 5912 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 5913 - self.name() - self.state = 5914 - self.match(PostgreSQLParser.RESET) - self.state = 5915 - self.reloptions() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RenamestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def RENAME(self): - return self.getToken(PostgreSQLParser.RENAME, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def roleid(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.RoleidContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.RoleidContext,i) - - - def opt_procedural(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_proceduralContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def POLICY(self): - return self.getToken(PostgreSQLParser.POLICY, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def opt_column(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_columnContext,0) - - - def RULE(self): - return self.getToken(PostgreSQLParser.RULE, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def PARSER(self): - return self.getToken(PostgreSQLParser.PARSER, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def ATTRIBUTE(self): - return self.getToken(PostgreSQLParser.ATTRIBUTE, 0) - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_renamestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRenamestmt" ): - listener.enterRenamestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRenamestmt" ): - listener.exitRenamestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRenamestmt" ): - return visitor.visitRenamestmt(self) - else: - return visitor.visitChildren(self) - - - - - def renamestmt(self): - - localctx = PostgreSQLParser.RenamestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 722, self.RULE_renamestmt) - try: - self.state = 6387 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,310,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 5919 - self.match(PostgreSQLParser.ALTER) - self.state = 5920 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 5921 - self.aggregate_with_argtypes() - self.state = 5922 - self.match(PostgreSQLParser.RENAME) - self.state = 5923 - self.match(PostgreSQLParser.TO) - self.state = 5924 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 5926 - self.match(PostgreSQLParser.ALTER) - self.state = 5927 - self.match(PostgreSQLParser.COLLATION) - self.state = 5928 - self.any_name() - self.state = 5929 - self.match(PostgreSQLParser.RENAME) - self.state = 5930 - self.match(PostgreSQLParser.TO) - self.state = 5931 - self.name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 5933 - self.match(PostgreSQLParser.ALTER) - self.state = 5934 - self.match(PostgreSQLParser.CONVERSION_P) - self.state = 5935 - self.any_name() - self.state = 5936 - self.match(PostgreSQLParser.RENAME) - self.state = 5937 - self.match(PostgreSQLParser.TO) - self.state = 5938 - self.name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 5940 - self.match(PostgreSQLParser.ALTER) - self.state = 5941 - self.match(PostgreSQLParser.DATABASE) - self.state = 5942 - self.name() - self.state = 5943 - self.match(PostgreSQLParser.RENAME) - self.state = 5944 - self.match(PostgreSQLParser.TO) - self.state = 5945 - self.name() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 5947 - self.match(PostgreSQLParser.ALTER) - self.state = 5948 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 5949 - self.any_name() - self.state = 5950 - self.match(PostgreSQLParser.RENAME) - self.state = 5951 - self.match(PostgreSQLParser.TO) - self.state = 5952 - self.name() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 5954 - self.match(PostgreSQLParser.ALTER) - self.state = 5955 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 5956 - self.any_name() - self.state = 5957 - self.match(PostgreSQLParser.RENAME) - self.state = 5958 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 5959 - self.name() - self.state = 5960 - self.match(PostgreSQLParser.TO) - self.state = 5961 - self.name() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 5963 - self.match(PostgreSQLParser.ALTER) - self.state = 5964 - self.match(PostgreSQLParser.FOREIGN) - self.state = 5965 - self.match(PostgreSQLParser.DATA_P) - self.state = 5966 - self.match(PostgreSQLParser.WRAPPER) - self.state = 5967 - self.name() - self.state = 5968 - self.match(PostgreSQLParser.RENAME) - self.state = 5969 - self.match(PostgreSQLParser.TO) - self.state = 5970 - self.name() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 5972 - self.match(PostgreSQLParser.ALTER) - self.state = 5973 - self.match(PostgreSQLParser.FUNCTION) - self.state = 5974 - self.function_with_argtypes() - self.state = 5975 - self.match(PostgreSQLParser.RENAME) - self.state = 5976 - self.match(PostgreSQLParser.TO) - self.state = 5977 - self.name() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 5979 - self.match(PostgreSQLParser.ALTER) - self.state = 5980 - self.match(PostgreSQLParser.GROUP_P) - self.state = 5981 - self.roleid() - self.state = 5982 - self.match(PostgreSQLParser.RENAME) - self.state = 5983 - self.match(PostgreSQLParser.TO) - self.state = 5984 - self.roleid() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 5986 - self.match(PostgreSQLParser.ALTER) - self.state = 5987 - self.opt_procedural() - self.state = 5988 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 5989 - self.name() - self.state = 5990 - self.match(PostgreSQLParser.RENAME) - self.state = 5991 - self.match(PostgreSQLParser.TO) - self.state = 5992 - self.name() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 5994 - self.match(PostgreSQLParser.ALTER) - self.state = 5995 - self.match(PostgreSQLParser.OPERATOR) - self.state = 5996 - self.match(PostgreSQLParser.CLASS) - self.state = 5997 - self.any_name() - self.state = 5998 - self.match(PostgreSQLParser.USING) - self.state = 5999 - self.name() - self.state = 6000 - self.match(PostgreSQLParser.RENAME) - self.state = 6001 - self.match(PostgreSQLParser.TO) - self.state = 6002 - self.name() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 6004 - self.match(PostgreSQLParser.ALTER) - self.state = 6005 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6006 - self.match(PostgreSQLParser.FAMILY) - self.state = 6007 - self.any_name() - self.state = 6008 - self.match(PostgreSQLParser.USING) - self.state = 6009 - self.name() - self.state = 6010 - self.match(PostgreSQLParser.RENAME) - self.state = 6011 - self.match(PostgreSQLParser.TO) - self.state = 6012 - self.name() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 6014 - self.match(PostgreSQLParser.ALTER) - self.state = 6015 - self.match(PostgreSQLParser.POLICY) - self.state = 6016 - self.name() - self.state = 6017 - self.match(PostgreSQLParser.ON) - self.state = 6018 - self.qualified_name() - self.state = 6019 - self.match(PostgreSQLParser.RENAME) - self.state = 6020 - self.match(PostgreSQLParser.TO) - self.state = 6021 - self.name() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 6023 - self.match(PostgreSQLParser.ALTER) - self.state = 6024 - self.match(PostgreSQLParser.POLICY) - self.state = 6025 - self.match(PostgreSQLParser.IF_P) - self.state = 6026 - self.match(PostgreSQLParser.EXISTS) - self.state = 6027 - self.name() - self.state = 6028 - self.match(PostgreSQLParser.ON) - self.state = 6029 - self.qualified_name() - self.state = 6030 - self.match(PostgreSQLParser.RENAME) - self.state = 6031 - self.match(PostgreSQLParser.TO) - self.state = 6032 - self.name() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 6034 - self.match(PostgreSQLParser.ALTER) - self.state = 6035 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 6036 - self.function_with_argtypes() - self.state = 6037 - self.match(PostgreSQLParser.RENAME) - self.state = 6038 - self.match(PostgreSQLParser.TO) - self.state = 6039 - self.name() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 6041 - self.match(PostgreSQLParser.ALTER) - self.state = 6042 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6043 - self.name() - self.state = 6044 - self.match(PostgreSQLParser.RENAME) - self.state = 6045 - self.match(PostgreSQLParser.TO) - self.state = 6046 - self.name() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 6048 - self.match(PostgreSQLParser.ALTER) - self.state = 6049 - self.match(PostgreSQLParser.ROUTINE) - self.state = 6050 - self.function_with_argtypes() - self.state = 6051 - self.match(PostgreSQLParser.RENAME) - self.state = 6052 - self.match(PostgreSQLParser.TO) - self.state = 6053 - self.name() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 6055 - self.match(PostgreSQLParser.ALTER) - self.state = 6056 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6057 - self.name() - self.state = 6058 - self.match(PostgreSQLParser.RENAME) - self.state = 6059 - self.match(PostgreSQLParser.TO) - self.state = 6060 - self.name() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 6062 - self.match(PostgreSQLParser.ALTER) - self.state = 6063 - self.match(PostgreSQLParser.SERVER) - self.state = 6064 - self.name() - self.state = 6065 - self.match(PostgreSQLParser.RENAME) - self.state = 6066 - self.match(PostgreSQLParser.TO) - self.state = 6067 - self.name() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 6069 - self.match(PostgreSQLParser.ALTER) - self.state = 6070 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6071 - self.name() - self.state = 6072 - self.match(PostgreSQLParser.RENAME) - self.state = 6073 - self.match(PostgreSQLParser.TO) - self.state = 6074 - self.name() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 6076 - self.match(PostgreSQLParser.ALTER) - self.state = 6077 - self.match(PostgreSQLParser.TABLE) - self.state = 6078 - self.relation_expr() - self.state = 6079 - self.match(PostgreSQLParser.RENAME) - self.state = 6080 - self.match(PostgreSQLParser.TO) - self.state = 6081 - self.name() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 6083 - self.match(PostgreSQLParser.ALTER) - self.state = 6084 - self.match(PostgreSQLParser.TABLE) - self.state = 6085 - self.match(PostgreSQLParser.IF_P) - self.state = 6086 - self.match(PostgreSQLParser.EXISTS) - self.state = 6087 - self.relation_expr() - self.state = 6088 - self.match(PostgreSQLParser.RENAME) - self.state = 6089 - self.match(PostgreSQLParser.TO) - self.state = 6090 - self.name() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 6092 - self.match(PostgreSQLParser.ALTER) - self.state = 6093 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 6094 - self.qualified_name() - self.state = 6095 - self.match(PostgreSQLParser.RENAME) - self.state = 6096 - self.match(PostgreSQLParser.TO) - self.state = 6097 - self.name() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 6099 - self.match(PostgreSQLParser.ALTER) - self.state = 6100 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 6101 - self.match(PostgreSQLParser.IF_P) - self.state = 6102 - self.match(PostgreSQLParser.EXISTS) - self.state = 6103 - self.qualified_name() - self.state = 6104 - self.match(PostgreSQLParser.RENAME) - self.state = 6105 - self.match(PostgreSQLParser.TO) - self.state = 6106 - self.name() - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 6108 - self.match(PostgreSQLParser.ALTER) - self.state = 6109 - self.match(PostgreSQLParser.VIEW) - self.state = 6110 - self.qualified_name() - self.state = 6111 - self.match(PostgreSQLParser.RENAME) - self.state = 6112 - self.match(PostgreSQLParser.TO) - self.state = 6113 - self.name() - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 6115 - self.match(PostgreSQLParser.ALTER) - self.state = 6116 - self.match(PostgreSQLParser.VIEW) - self.state = 6117 - self.match(PostgreSQLParser.IF_P) - self.state = 6118 - self.match(PostgreSQLParser.EXISTS) - self.state = 6119 - self.qualified_name() - self.state = 6120 - self.match(PostgreSQLParser.RENAME) - self.state = 6121 - self.match(PostgreSQLParser.TO) - self.state = 6122 - self.name() - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 6124 - self.match(PostgreSQLParser.ALTER) - self.state = 6125 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6126 - self.match(PostgreSQLParser.VIEW) - self.state = 6127 - self.qualified_name() - self.state = 6128 - self.match(PostgreSQLParser.RENAME) - self.state = 6129 - self.match(PostgreSQLParser.TO) - self.state = 6130 - self.name() - pass - - elif la_ == 28: - self.enterOuterAlt(localctx, 28) - self.state = 6132 - self.match(PostgreSQLParser.ALTER) - self.state = 6133 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6134 - self.match(PostgreSQLParser.VIEW) - self.state = 6135 - self.match(PostgreSQLParser.IF_P) - self.state = 6136 - self.match(PostgreSQLParser.EXISTS) - self.state = 6137 - self.qualified_name() - self.state = 6138 - self.match(PostgreSQLParser.RENAME) - self.state = 6139 - self.match(PostgreSQLParser.TO) - self.state = 6140 - self.name() - pass - - elif la_ == 29: - self.enterOuterAlt(localctx, 29) - self.state = 6142 - self.match(PostgreSQLParser.ALTER) - self.state = 6143 - self.match(PostgreSQLParser.INDEX) - self.state = 6144 - self.qualified_name() - self.state = 6145 - self.match(PostgreSQLParser.RENAME) - self.state = 6146 - self.match(PostgreSQLParser.TO) - self.state = 6147 - self.name() - pass - - elif la_ == 30: - self.enterOuterAlt(localctx, 30) - self.state = 6149 - self.match(PostgreSQLParser.ALTER) - self.state = 6150 - self.match(PostgreSQLParser.INDEX) - self.state = 6151 - self.match(PostgreSQLParser.IF_P) - self.state = 6152 - self.match(PostgreSQLParser.EXISTS) - self.state = 6153 - self.qualified_name() - self.state = 6154 - self.match(PostgreSQLParser.RENAME) - self.state = 6155 - self.match(PostgreSQLParser.TO) - self.state = 6156 - self.name() - pass - - elif la_ == 31: - self.enterOuterAlt(localctx, 31) - self.state = 6158 - self.match(PostgreSQLParser.ALTER) - self.state = 6159 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6160 - self.match(PostgreSQLParser.TABLE) - self.state = 6161 - self.relation_expr() - self.state = 6162 - self.match(PostgreSQLParser.RENAME) - self.state = 6163 - self.match(PostgreSQLParser.TO) - self.state = 6164 - self.name() - pass - - elif la_ == 32: - self.enterOuterAlt(localctx, 32) - self.state = 6166 - self.match(PostgreSQLParser.ALTER) - self.state = 6167 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6168 - self.match(PostgreSQLParser.TABLE) - self.state = 6169 - self.match(PostgreSQLParser.IF_P) - self.state = 6170 - self.match(PostgreSQLParser.EXISTS) - self.state = 6171 - self.relation_expr() - self.state = 6172 - self.match(PostgreSQLParser.RENAME) - self.state = 6173 - self.match(PostgreSQLParser.TO) - self.state = 6174 - self.name() - pass - - elif la_ == 33: - self.enterOuterAlt(localctx, 33) - self.state = 6176 - self.match(PostgreSQLParser.ALTER) - self.state = 6177 - self.match(PostgreSQLParser.TABLE) - self.state = 6178 - self.relation_expr() - self.state = 6179 - self.match(PostgreSQLParser.RENAME) - self.state = 6180 - self.opt_column() - self.state = 6181 - self.name() - self.state = 6182 - self.match(PostgreSQLParser.TO) - self.state = 6183 - self.name() - pass - - elif la_ == 34: - self.enterOuterAlt(localctx, 34) - self.state = 6185 - self.match(PostgreSQLParser.ALTER) - self.state = 6186 - self.match(PostgreSQLParser.TABLE) - self.state = 6187 - self.match(PostgreSQLParser.IF_P) - self.state = 6188 - self.match(PostgreSQLParser.EXISTS) - self.state = 6189 - self.relation_expr() - self.state = 6190 - self.match(PostgreSQLParser.RENAME) - self.state = 6191 - self.opt_column() - self.state = 6192 - self.name() - self.state = 6193 - self.match(PostgreSQLParser.TO) - self.state = 6194 - self.name() - pass - - elif la_ == 35: - self.enterOuterAlt(localctx, 35) - self.state = 6196 - self.match(PostgreSQLParser.ALTER) - self.state = 6197 - self.match(PostgreSQLParser.VIEW) - self.state = 6198 - self.qualified_name() - self.state = 6199 - self.match(PostgreSQLParser.RENAME) - self.state = 6200 - self.opt_column() - self.state = 6201 - self.name() - self.state = 6202 - self.match(PostgreSQLParser.TO) - self.state = 6203 - self.name() - pass - - elif la_ == 36: - self.enterOuterAlt(localctx, 36) - self.state = 6205 - self.match(PostgreSQLParser.ALTER) - self.state = 6206 - self.match(PostgreSQLParser.VIEW) - self.state = 6207 - self.match(PostgreSQLParser.IF_P) - self.state = 6208 - self.match(PostgreSQLParser.EXISTS) - self.state = 6209 - self.qualified_name() - self.state = 6210 - self.match(PostgreSQLParser.RENAME) - self.state = 6211 - self.opt_column() - self.state = 6212 - self.name() - self.state = 6213 - self.match(PostgreSQLParser.TO) - self.state = 6214 - self.name() - pass - - elif la_ == 37: - self.enterOuterAlt(localctx, 37) - self.state = 6216 - self.match(PostgreSQLParser.ALTER) - self.state = 6217 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6218 - self.match(PostgreSQLParser.VIEW) - self.state = 6219 - self.qualified_name() - self.state = 6220 - self.match(PostgreSQLParser.RENAME) - self.state = 6221 - self.opt_column() - self.state = 6222 - self.name() - self.state = 6223 - self.match(PostgreSQLParser.TO) - self.state = 6224 - self.name() - pass - - elif la_ == 38: - self.enterOuterAlt(localctx, 38) - self.state = 6226 - self.match(PostgreSQLParser.ALTER) - self.state = 6227 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6228 - self.match(PostgreSQLParser.VIEW) - self.state = 6229 - self.match(PostgreSQLParser.IF_P) - self.state = 6230 - self.match(PostgreSQLParser.EXISTS) - self.state = 6231 - self.qualified_name() - self.state = 6232 - self.match(PostgreSQLParser.RENAME) - self.state = 6233 - self.opt_column() - self.state = 6234 - self.name() - self.state = 6235 - self.match(PostgreSQLParser.TO) - self.state = 6236 - self.name() - pass - - elif la_ == 39: - self.enterOuterAlt(localctx, 39) - self.state = 6238 - self.match(PostgreSQLParser.ALTER) - self.state = 6239 - self.match(PostgreSQLParser.TABLE) - self.state = 6240 - self.relation_expr() - self.state = 6241 - self.match(PostgreSQLParser.RENAME) - self.state = 6242 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 6243 - self.name() - self.state = 6244 - self.match(PostgreSQLParser.TO) - self.state = 6245 - self.name() - pass - - elif la_ == 40: - self.enterOuterAlt(localctx, 40) - self.state = 6247 - self.match(PostgreSQLParser.ALTER) - self.state = 6248 - self.match(PostgreSQLParser.TABLE) - self.state = 6249 - self.match(PostgreSQLParser.IF_P) - self.state = 6250 - self.match(PostgreSQLParser.EXISTS) - self.state = 6251 - self.relation_expr() - self.state = 6252 - self.match(PostgreSQLParser.RENAME) - self.state = 6253 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 6254 - self.name() - self.state = 6255 - self.match(PostgreSQLParser.TO) - self.state = 6256 - self.name() - pass - - elif la_ == 41: - self.enterOuterAlt(localctx, 41) - self.state = 6258 - self.match(PostgreSQLParser.ALTER) - self.state = 6259 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6260 - self.match(PostgreSQLParser.TABLE) - self.state = 6261 - self.relation_expr() - self.state = 6262 - self.match(PostgreSQLParser.RENAME) - self.state = 6263 - self.opt_column() - self.state = 6264 - self.name() - self.state = 6265 - self.match(PostgreSQLParser.TO) - self.state = 6266 - self.name() - pass - - elif la_ == 42: - self.enterOuterAlt(localctx, 42) - self.state = 6268 - self.match(PostgreSQLParser.ALTER) - self.state = 6269 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6270 - self.match(PostgreSQLParser.TABLE) - self.state = 6271 - self.match(PostgreSQLParser.IF_P) - self.state = 6272 - self.match(PostgreSQLParser.EXISTS) - self.state = 6273 - self.relation_expr() - self.state = 6274 - self.match(PostgreSQLParser.RENAME) - self.state = 6275 - self.opt_column() - self.state = 6276 - self.name() - self.state = 6277 - self.match(PostgreSQLParser.TO) - self.state = 6278 - self.name() - pass - - elif la_ == 43: - self.enterOuterAlt(localctx, 43) - self.state = 6280 - self.match(PostgreSQLParser.ALTER) - self.state = 6281 - self.match(PostgreSQLParser.RULE) - self.state = 6282 - self.name() - self.state = 6283 - self.match(PostgreSQLParser.ON) - self.state = 6284 - self.qualified_name() - self.state = 6285 - self.match(PostgreSQLParser.RENAME) - self.state = 6286 - self.match(PostgreSQLParser.TO) - self.state = 6287 - self.name() - pass - - elif la_ == 44: - self.enterOuterAlt(localctx, 44) - self.state = 6289 - self.match(PostgreSQLParser.ALTER) - self.state = 6290 - self.match(PostgreSQLParser.TRIGGER) - self.state = 6291 - self.name() - self.state = 6292 - self.match(PostgreSQLParser.ON) - self.state = 6293 - self.qualified_name() - self.state = 6294 - self.match(PostgreSQLParser.RENAME) - self.state = 6295 - self.match(PostgreSQLParser.TO) - self.state = 6296 - self.name() - pass - - elif la_ == 45: - self.enterOuterAlt(localctx, 45) - self.state = 6298 - self.match(PostgreSQLParser.ALTER) - self.state = 6299 - self.match(PostgreSQLParser.EVENT) - self.state = 6300 - self.match(PostgreSQLParser.TRIGGER) - self.state = 6301 - self.name() - self.state = 6302 - self.match(PostgreSQLParser.RENAME) - self.state = 6303 - self.match(PostgreSQLParser.TO) - self.state = 6304 - self.name() - pass - - elif la_ == 46: - self.enterOuterAlt(localctx, 46) - self.state = 6306 - self.match(PostgreSQLParser.ALTER) - self.state = 6307 - self.match(PostgreSQLParser.ROLE) - self.state = 6308 - self.roleid() - self.state = 6309 - self.match(PostgreSQLParser.RENAME) - self.state = 6310 - self.match(PostgreSQLParser.TO) - self.state = 6311 - self.roleid() - pass - - elif la_ == 47: - self.enterOuterAlt(localctx, 47) - self.state = 6313 - self.match(PostgreSQLParser.ALTER) - self.state = 6314 - self.match(PostgreSQLParser.USER) - self.state = 6315 - self.roleid() - self.state = 6316 - self.match(PostgreSQLParser.RENAME) - self.state = 6317 - self.match(PostgreSQLParser.TO) - self.state = 6318 - self.roleid() - pass - - elif la_ == 48: - self.enterOuterAlt(localctx, 48) - self.state = 6320 - self.match(PostgreSQLParser.ALTER) - self.state = 6321 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 6322 - self.name() - self.state = 6323 - self.match(PostgreSQLParser.RENAME) - self.state = 6324 - self.match(PostgreSQLParser.TO) - self.state = 6325 - self.name() - pass - - elif la_ == 49: - self.enterOuterAlt(localctx, 49) - self.state = 6327 - self.match(PostgreSQLParser.ALTER) - self.state = 6328 - self.match(PostgreSQLParser.STATISTICS) - self.state = 6329 - self.any_name() - self.state = 6330 - self.match(PostgreSQLParser.RENAME) - self.state = 6331 - self.match(PostgreSQLParser.TO) - self.state = 6332 - self.name() - pass - - elif la_ == 50: - self.enterOuterAlt(localctx, 50) - self.state = 6334 - self.match(PostgreSQLParser.ALTER) - self.state = 6335 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6336 - self.match(PostgreSQLParser.SEARCH) - self.state = 6337 - self.match(PostgreSQLParser.PARSER) - self.state = 6338 - self.any_name() - self.state = 6339 - self.match(PostgreSQLParser.RENAME) - self.state = 6340 - self.match(PostgreSQLParser.TO) - self.state = 6341 - self.name() - pass - - elif la_ == 51: - self.enterOuterAlt(localctx, 51) - self.state = 6343 - self.match(PostgreSQLParser.ALTER) - self.state = 6344 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6345 - self.match(PostgreSQLParser.SEARCH) - self.state = 6346 - self.match(PostgreSQLParser.DICTIONARY) - self.state = 6347 - self.any_name() - self.state = 6348 - self.match(PostgreSQLParser.RENAME) - self.state = 6349 - self.match(PostgreSQLParser.TO) - self.state = 6350 - self.name() - pass - - elif la_ == 52: - self.enterOuterAlt(localctx, 52) - self.state = 6352 - self.match(PostgreSQLParser.ALTER) - self.state = 6353 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6354 - self.match(PostgreSQLParser.SEARCH) - self.state = 6355 - self.match(PostgreSQLParser.TEMPLATE) - self.state = 6356 - self.any_name() - self.state = 6357 - self.match(PostgreSQLParser.RENAME) - self.state = 6358 - self.match(PostgreSQLParser.TO) - self.state = 6359 - self.name() - pass - - elif la_ == 53: - self.enterOuterAlt(localctx, 53) - self.state = 6361 - self.match(PostgreSQLParser.ALTER) - self.state = 6362 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6363 - self.match(PostgreSQLParser.SEARCH) - self.state = 6364 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 6365 - self.any_name() - self.state = 6366 - self.match(PostgreSQLParser.RENAME) - self.state = 6367 - self.match(PostgreSQLParser.TO) - self.state = 6368 - self.name() - pass - - elif la_ == 54: - self.enterOuterAlt(localctx, 54) - self.state = 6370 - self.match(PostgreSQLParser.ALTER) - self.state = 6371 - self.match(PostgreSQLParser.TYPE_P) - self.state = 6372 - self.any_name() - self.state = 6373 - self.match(PostgreSQLParser.RENAME) - self.state = 6374 - self.match(PostgreSQLParser.TO) - self.state = 6375 - self.name() - pass - - elif la_ == 55: - self.enterOuterAlt(localctx, 55) - self.state = 6377 - self.match(PostgreSQLParser.ALTER) - self.state = 6378 - self.match(PostgreSQLParser.TYPE_P) - self.state = 6379 - self.any_name() - self.state = 6380 - self.match(PostgreSQLParser.RENAME) - self.state = 6381 - self.match(PostgreSQLParser.ATTRIBUTE) - self.state = 6382 - self.name() - self.state = 6383 - self.match(PostgreSQLParser.TO) - self.state = 6384 - self.name() - self.state = 6385 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_columnContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_column - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_column" ): - listener.enterOpt_column(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_column" ): - listener.exitOpt_column(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_column" ): - return visitor.visitOpt_column(self) - else: - return visitor.visitChildren(self) - - - - - def opt_column(self): - - localctx = PostgreSQLParser.Opt_columnContext(self, self._ctx, self.state) - self.enterRule(localctx, 724, self.RULE_opt_column) - try: - self.state = 6391 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,311,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6389 - self.match(PostgreSQLParser.COLUMN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_set_dataContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_set_data - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_set_data" ): - listener.enterOpt_set_data(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_set_data" ): - listener.exitOpt_set_data(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_set_data" ): - return visitor.visitOpt_set_data(self) - else: - return visitor.visitChildren(self) - - - - - def opt_set_data(self): - - localctx = PostgreSQLParser.Opt_set_dataContext(self, self._ctx, self.state) - self.enterRule(localctx, 726, self.RULE_opt_set_data) - try: - self.state = 6396 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [326]: - self.enterOuterAlt(localctx, 1) - self.state = 6393 - self.match(PostgreSQLParser.SET) - self.state = 6394 - self.match(PostgreSQLParser.DATA_P) - pass - elif token in [353]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterobjectdependsstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def opt_no(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_noContext,0) - - - def DEPENDS(self): - return self.getToken(PostgreSQLParser.DEPENDS, 0) - - def ON(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.ON) - else: - return self.getToken(PostgreSQLParser.ON, i) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterobjectdependsstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterobjectdependsstmt" ): - listener.enterAlterobjectdependsstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterobjectdependsstmt" ): - listener.exitAlterobjectdependsstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterobjectdependsstmt" ): - return visitor.visitAlterobjectdependsstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterobjectdependsstmt(self): - - localctx = PostgreSQLParser.AlterobjectdependsstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 728, self.RULE_alterobjectdependsstmt) - try: - self.state = 6455 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,313,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6398 - self.match(PostgreSQLParser.ALTER) - self.state = 6399 - self.match(PostgreSQLParser.FUNCTION) - self.state = 6400 - self.function_with_argtypes() - self.state = 6401 - self.opt_no() - self.state = 6402 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6403 - self.match(PostgreSQLParser.ON) - self.state = 6404 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6405 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6407 - self.match(PostgreSQLParser.ALTER) - self.state = 6408 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 6409 - self.function_with_argtypes() - self.state = 6410 - self.opt_no() - self.state = 6411 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6412 - self.match(PostgreSQLParser.ON) - self.state = 6413 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6414 - self.name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6416 - self.match(PostgreSQLParser.ALTER) - self.state = 6417 - self.match(PostgreSQLParser.ROUTINE) - self.state = 6418 - self.function_with_argtypes() - self.state = 6419 - self.opt_no() - self.state = 6420 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6421 - self.match(PostgreSQLParser.ON) - self.state = 6422 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6423 - self.name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6425 - self.match(PostgreSQLParser.ALTER) - self.state = 6426 - self.match(PostgreSQLParser.TRIGGER) - self.state = 6427 - self.name() - self.state = 6428 - self.match(PostgreSQLParser.ON) - self.state = 6429 - self.qualified_name() - self.state = 6430 - self.opt_no() - self.state = 6431 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6432 - self.match(PostgreSQLParser.ON) - self.state = 6433 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6434 - self.name() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 6436 - self.match(PostgreSQLParser.ALTER) - self.state = 6437 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6438 - self.match(PostgreSQLParser.VIEW) - self.state = 6439 - self.qualified_name() - self.state = 6440 - self.opt_no() - self.state = 6441 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6442 - self.match(PostgreSQLParser.ON) - self.state = 6443 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6444 - self.name() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 6446 - self.match(PostgreSQLParser.ALTER) - self.state = 6447 - self.match(PostgreSQLParser.INDEX) - self.state = 6448 - self.qualified_name() - self.state = 6449 - self.opt_no() - self.state = 6450 - self.match(PostgreSQLParser.DEPENDS) - self.state = 6451 - self.match(PostgreSQLParser.ON) - self.state = 6452 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6453 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_noContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_no - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_no" ): - listener.enterOpt_no(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_no" ): - listener.exitOpt_no(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_no" ): - return visitor.visitOpt_no(self) - else: - return visitor.visitChildren(self) - - - - - def opt_no(self): - - localctx = PostgreSQLParser.Opt_noContext(self, self._ctx, self.state) - self.enterRule(localctx, 730, self.RULE_opt_no) - try: - self.state = 6459 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262]: - self.enterOuterAlt(localctx, 1) - self.state = 6457 - self.match(PostgreSQLParser.NO) - pass - elif token in [462]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterobjectschemastmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def PARSER(self): - return self.getToken(PostgreSQLParser.PARSER, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterobjectschemastmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterobjectschemastmt" ): - listener.enterAlterobjectschemastmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterobjectschemastmt" ): - listener.exitAlterobjectschemastmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterobjectschemastmt" ): - return visitor.visitAlterobjectschemastmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterobjectschemastmt(self): - - localctx = PostgreSQLParser.AlterobjectschemastmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 732, self.RULE_alterobjectschemastmt) - try: - self.state = 6678 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,315,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6461 - self.match(PostgreSQLParser.ALTER) - self.state = 6462 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 6463 - self.aggregate_with_argtypes() - self.state = 6464 - self.match(PostgreSQLParser.SET) - self.state = 6465 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6466 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6468 - self.match(PostgreSQLParser.ALTER) - self.state = 6469 - self.match(PostgreSQLParser.COLLATION) - self.state = 6470 - self.any_name() - self.state = 6471 - self.match(PostgreSQLParser.SET) - self.state = 6472 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6473 - self.name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6475 - self.match(PostgreSQLParser.ALTER) - self.state = 6476 - self.match(PostgreSQLParser.CONVERSION_P) - self.state = 6477 - self.any_name() - self.state = 6478 - self.match(PostgreSQLParser.SET) - self.state = 6479 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6480 - self.name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6482 - self.match(PostgreSQLParser.ALTER) - self.state = 6483 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 6484 - self.any_name() - self.state = 6485 - self.match(PostgreSQLParser.SET) - self.state = 6486 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6487 - self.name() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 6489 - self.match(PostgreSQLParser.ALTER) - self.state = 6490 - self.match(PostgreSQLParser.EXTENSION) - self.state = 6491 - self.name() - self.state = 6492 - self.match(PostgreSQLParser.SET) - self.state = 6493 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6494 - self.name() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 6496 - self.match(PostgreSQLParser.ALTER) - self.state = 6497 - self.match(PostgreSQLParser.FUNCTION) - self.state = 6498 - self.function_with_argtypes() - self.state = 6499 - self.match(PostgreSQLParser.SET) - self.state = 6500 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6501 - self.name() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 6503 - self.match(PostgreSQLParser.ALTER) - self.state = 6504 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6505 - self.operator_with_argtypes() - self.state = 6506 - self.match(PostgreSQLParser.SET) - self.state = 6507 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6508 - self.name() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 6510 - self.match(PostgreSQLParser.ALTER) - self.state = 6511 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6512 - self.match(PostgreSQLParser.CLASS) - self.state = 6513 - self.any_name() - self.state = 6514 - self.match(PostgreSQLParser.USING) - self.state = 6515 - self.name() - self.state = 6516 - self.match(PostgreSQLParser.SET) - self.state = 6517 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6518 - self.name() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 6520 - self.match(PostgreSQLParser.ALTER) - self.state = 6521 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6522 - self.match(PostgreSQLParser.FAMILY) - self.state = 6523 - self.any_name() - self.state = 6524 - self.match(PostgreSQLParser.USING) - self.state = 6525 - self.name() - self.state = 6526 - self.match(PostgreSQLParser.SET) - self.state = 6527 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6528 - self.name() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 6530 - self.match(PostgreSQLParser.ALTER) - self.state = 6531 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 6532 - self.function_with_argtypes() - self.state = 6533 - self.match(PostgreSQLParser.SET) - self.state = 6534 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6535 - self.name() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 6537 - self.match(PostgreSQLParser.ALTER) - self.state = 6538 - self.match(PostgreSQLParser.ROUTINE) - self.state = 6539 - self.function_with_argtypes() - self.state = 6540 - self.match(PostgreSQLParser.SET) - self.state = 6541 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6542 - self.name() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 6544 - self.match(PostgreSQLParser.ALTER) - self.state = 6545 - self.match(PostgreSQLParser.TABLE) - self.state = 6546 - self.relation_expr() - self.state = 6547 - self.match(PostgreSQLParser.SET) - self.state = 6548 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6549 - self.name() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 6551 - self.match(PostgreSQLParser.ALTER) - self.state = 6552 - self.match(PostgreSQLParser.TABLE) - self.state = 6553 - self.match(PostgreSQLParser.IF_P) - self.state = 6554 - self.match(PostgreSQLParser.EXISTS) - self.state = 6555 - self.relation_expr() - self.state = 6556 - self.match(PostgreSQLParser.SET) - self.state = 6557 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6558 - self.name() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 6560 - self.match(PostgreSQLParser.ALTER) - self.state = 6561 - self.match(PostgreSQLParser.STATISTICS) - self.state = 6562 - self.any_name() - self.state = 6563 - self.match(PostgreSQLParser.SET) - self.state = 6564 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6565 - self.name() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 6567 - self.match(PostgreSQLParser.ALTER) - self.state = 6568 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6569 - self.match(PostgreSQLParser.SEARCH) - self.state = 6570 - self.match(PostgreSQLParser.PARSER) - self.state = 6571 - self.any_name() - self.state = 6572 - self.match(PostgreSQLParser.SET) - self.state = 6573 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6574 - self.name() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 6576 - self.match(PostgreSQLParser.ALTER) - self.state = 6577 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6578 - self.match(PostgreSQLParser.SEARCH) - self.state = 6579 - self.match(PostgreSQLParser.DICTIONARY) - self.state = 6580 - self.any_name() - self.state = 6581 - self.match(PostgreSQLParser.SET) - self.state = 6582 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6583 - self.name() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 6585 - self.match(PostgreSQLParser.ALTER) - self.state = 6586 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6587 - self.match(PostgreSQLParser.SEARCH) - self.state = 6588 - self.match(PostgreSQLParser.TEMPLATE) - self.state = 6589 - self.any_name() - self.state = 6590 - self.match(PostgreSQLParser.SET) - self.state = 6591 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6592 - self.name() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 6594 - self.match(PostgreSQLParser.ALTER) - self.state = 6595 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6596 - self.match(PostgreSQLParser.SEARCH) - self.state = 6597 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 6598 - self.any_name() - self.state = 6599 - self.match(PostgreSQLParser.SET) - self.state = 6600 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6601 - self.name() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 6603 - self.match(PostgreSQLParser.ALTER) - self.state = 6604 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 6605 - self.qualified_name() - self.state = 6606 - self.match(PostgreSQLParser.SET) - self.state = 6607 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6608 - self.name() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 6610 - self.match(PostgreSQLParser.ALTER) - self.state = 6611 - self.match(PostgreSQLParser.SEQUENCE) - self.state = 6612 - self.match(PostgreSQLParser.IF_P) - self.state = 6613 - self.match(PostgreSQLParser.EXISTS) - self.state = 6614 - self.qualified_name() - self.state = 6615 - self.match(PostgreSQLParser.SET) - self.state = 6616 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6617 - self.name() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 6619 - self.match(PostgreSQLParser.ALTER) - self.state = 6620 - self.match(PostgreSQLParser.VIEW) - self.state = 6621 - self.qualified_name() - self.state = 6622 - self.match(PostgreSQLParser.SET) - self.state = 6623 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6624 - self.name() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 6626 - self.match(PostgreSQLParser.ALTER) - self.state = 6627 - self.match(PostgreSQLParser.VIEW) - self.state = 6628 - self.match(PostgreSQLParser.IF_P) - self.state = 6629 - self.match(PostgreSQLParser.EXISTS) - self.state = 6630 - self.qualified_name() - self.state = 6631 - self.match(PostgreSQLParser.SET) - self.state = 6632 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6633 - self.name() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 6635 - self.match(PostgreSQLParser.ALTER) - self.state = 6636 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6637 - self.match(PostgreSQLParser.VIEW) - self.state = 6638 - self.qualified_name() - self.state = 6639 - self.match(PostgreSQLParser.SET) - self.state = 6640 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6641 - self.name() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 6643 - self.match(PostgreSQLParser.ALTER) - self.state = 6644 - self.match(PostgreSQLParser.MATERIALIZED) - self.state = 6645 - self.match(PostgreSQLParser.VIEW) - self.state = 6646 - self.match(PostgreSQLParser.IF_P) - self.state = 6647 - self.match(PostgreSQLParser.EXISTS) - self.state = 6648 - self.qualified_name() - self.state = 6649 - self.match(PostgreSQLParser.SET) - self.state = 6650 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6651 - self.name() - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 6653 - self.match(PostgreSQLParser.ALTER) - self.state = 6654 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6655 - self.match(PostgreSQLParser.TABLE) - self.state = 6656 - self.relation_expr() - self.state = 6657 - self.match(PostgreSQLParser.SET) - self.state = 6658 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6659 - self.name() - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 6661 - self.match(PostgreSQLParser.ALTER) - self.state = 6662 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6663 - self.match(PostgreSQLParser.TABLE) - self.state = 6664 - self.match(PostgreSQLParser.IF_P) - self.state = 6665 - self.match(PostgreSQLParser.EXISTS) - self.state = 6666 - self.relation_expr() - self.state = 6667 - self.match(PostgreSQLParser.SET) - self.state = 6668 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6669 - self.name() - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 6671 - self.match(PostgreSQLParser.ALTER) - self.state = 6672 - self.match(PostgreSQLParser.TYPE_P) - self.state = 6673 - self.any_name() - self.state = 6674 - self.match(PostgreSQLParser.SET) - self.state = 6675 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6676 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlteroperatorstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def operator_def_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_def_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alteroperatorstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlteroperatorstmt" ): - listener.enterAlteroperatorstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlteroperatorstmt" ): - listener.exitAlteroperatorstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlteroperatorstmt" ): - return visitor.visitAlteroperatorstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alteroperatorstmt(self): - - localctx = PostgreSQLParser.AlteroperatorstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 734, self.RULE_alteroperatorstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 6680 - self.match(PostgreSQLParser.ALTER) - self.state = 6681 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6682 - self.operator_with_argtypes() - self.state = 6683 - self.match(PostgreSQLParser.SET) - self.state = 6684 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 6685 - self.operator_def_list() - self.state = 6686 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Operator_def_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def operator_def_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Operator_def_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Operator_def_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_operator_def_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperator_def_list" ): - listener.enterOperator_def_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperator_def_list" ): - listener.exitOperator_def_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperator_def_list" ): - return visitor.visitOperator_def_list(self) - else: - return visitor.visitChildren(self) - - - - - def operator_def_list(self): - - localctx = PostgreSQLParser.Operator_def_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 736, self.RULE_operator_def_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 6688 - self.operator_def_elem() - self.state = 6693 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 6689 - self.match(PostgreSQLParser.COMMA) - self.state = 6690 - self.operator_def_elem() - self.state = 6695 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Operator_def_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def NONE(self): - return self.getToken(PostgreSQLParser.NONE, 0) - - def operator_def_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_def_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_operator_def_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperator_def_elem" ): - listener.enterOperator_def_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperator_def_elem" ): - listener.exitOperator_def_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperator_def_elem" ): - return visitor.visitOperator_def_elem(self) - else: - return visitor.visitChildren(self) - - - - - def operator_def_elem(self): - - localctx = PostgreSQLParser.Operator_def_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 738, self.RULE_operator_def_elem) - try: - self.state = 6704 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,317,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6696 - self.collabel() - self.state = 6697 - self.match(PostgreSQLParser.EQUAL) - self.state = 6698 - self.match(PostgreSQLParser.NONE) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6700 - self.collabel() - self.state = 6701 - self.match(PostgreSQLParser.EQUAL) - self.state = 6702 - self.operator_def_arg() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Operator_def_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_typeContext,0) - - - def reserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Reserved_keywordContext,0) - - - def qual_all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_all_opContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_operator_def_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOperator_def_arg" ): - listener.enterOperator_def_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOperator_def_arg" ): - listener.exitOperator_def_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOperator_def_arg" ): - return visitor.visitOperator_def_arg(self) - else: - return visitor.visitChildren(self) - - - - - def operator_def_arg(self): - - localctx = PostgreSQLParser.Operator_def_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 740, self.RULE_operator_def_arg) - try: - self.state = 6711 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,318,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6706 - self.func_type() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6707 - self.reserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6708 - self.qual_all_op() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6709 - self.numericonly() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 6710 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltertypestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def operator_def_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_def_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altertypestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltertypestmt" ): - listener.enterAltertypestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltertypestmt" ): - listener.exitAltertypestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltertypestmt" ): - return visitor.visitAltertypestmt(self) - else: - return visitor.visitChildren(self) - - - - - def altertypestmt(self): - - localctx = PostgreSQLParser.AltertypestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 742, self.RULE_altertypestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 6713 - self.match(PostgreSQLParser.ALTER) - self.state = 6714 - self.match(PostgreSQLParser.TYPE_P) - self.state = 6715 - self.any_name() - self.state = 6716 - self.match(PostgreSQLParser.SET) - self.state = 6717 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 6718 - self.operator_def_list() - self.state = 6719 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterownerstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def aggregate_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Aggregate_with_argtypesContext,0) - - - def OWNER(self): - return self.getToken(PostgreSQLParser.OWNER, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def function_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Function_with_argtypesContext,0) - - - def opt_procedural(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_proceduralContext,0) - - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def LARGE_P(self): - return self.getToken(PostgreSQLParser.LARGE_P, 0) - - def OBJECT_P(self): - return self.getToken(PostgreSQLParser.OBJECT_P, 0) - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def operator_with_argtypes(self): - return self.getTypedRuleContext(PostgreSQLParser.Operator_with_argtypesContext,0) - - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterownerstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterownerstmt" ): - listener.enterAlterownerstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterownerstmt" ): - listener.exitAlterownerstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterownerstmt" ): - return visitor.visitAlterownerstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterownerstmt(self): - - localctx = PostgreSQLParser.AlterownerstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 744, self.RULE_alterownerstmt) - try: - self.state = 6904 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,319,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6721 - self.match(PostgreSQLParser.ALTER) - self.state = 6722 - self.match(PostgreSQLParser.AGGREGATE) - self.state = 6723 - self.aggregate_with_argtypes() - self.state = 6724 - self.match(PostgreSQLParser.OWNER) - self.state = 6725 - self.match(PostgreSQLParser.TO) - self.state = 6726 - self.rolespec() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6728 - self.match(PostgreSQLParser.ALTER) - self.state = 6729 - self.match(PostgreSQLParser.COLLATION) - self.state = 6730 - self.any_name() - self.state = 6731 - self.match(PostgreSQLParser.OWNER) - self.state = 6732 - self.match(PostgreSQLParser.TO) - self.state = 6733 - self.rolespec() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6735 - self.match(PostgreSQLParser.ALTER) - self.state = 6736 - self.match(PostgreSQLParser.CONVERSION_P) - self.state = 6737 - self.any_name() - self.state = 6738 - self.match(PostgreSQLParser.OWNER) - self.state = 6739 - self.match(PostgreSQLParser.TO) - self.state = 6740 - self.rolespec() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6742 - self.match(PostgreSQLParser.ALTER) - self.state = 6743 - self.match(PostgreSQLParser.DATABASE) - self.state = 6744 - self.name() - self.state = 6745 - self.match(PostgreSQLParser.OWNER) - self.state = 6746 - self.match(PostgreSQLParser.TO) - self.state = 6747 - self.rolespec() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 6749 - self.match(PostgreSQLParser.ALTER) - self.state = 6750 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 6751 - self.any_name() - self.state = 6752 - self.match(PostgreSQLParser.OWNER) - self.state = 6753 - self.match(PostgreSQLParser.TO) - self.state = 6754 - self.rolespec() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 6756 - self.match(PostgreSQLParser.ALTER) - self.state = 6757 - self.match(PostgreSQLParser.FUNCTION) - self.state = 6758 - self.function_with_argtypes() - self.state = 6759 - self.match(PostgreSQLParser.OWNER) - self.state = 6760 - self.match(PostgreSQLParser.TO) - self.state = 6761 - self.rolespec() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 6763 - self.match(PostgreSQLParser.ALTER) - self.state = 6764 - self.opt_procedural() - self.state = 6765 - self.match(PostgreSQLParser.LANGUAGE) - self.state = 6766 - self.name() - self.state = 6767 - self.match(PostgreSQLParser.OWNER) - self.state = 6768 - self.match(PostgreSQLParser.TO) - self.state = 6769 - self.rolespec() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 6771 - self.match(PostgreSQLParser.ALTER) - self.state = 6772 - self.match(PostgreSQLParser.LARGE_P) - self.state = 6773 - self.match(PostgreSQLParser.OBJECT_P) - self.state = 6774 - self.numericonly() - self.state = 6775 - self.match(PostgreSQLParser.OWNER) - self.state = 6776 - self.match(PostgreSQLParser.TO) - self.state = 6777 - self.rolespec() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 6779 - self.match(PostgreSQLParser.ALTER) - self.state = 6780 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6781 - self.operator_with_argtypes() - self.state = 6782 - self.match(PostgreSQLParser.OWNER) - self.state = 6783 - self.match(PostgreSQLParser.TO) - self.state = 6784 - self.rolespec() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 6786 - self.match(PostgreSQLParser.ALTER) - self.state = 6787 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6788 - self.match(PostgreSQLParser.CLASS) - self.state = 6789 - self.any_name() - self.state = 6790 - self.match(PostgreSQLParser.USING) - self.state = 6791 - self.name() - self.state = 6792 - self.match(PostgreSQLParser.OWNER) - self.state = 6793 - self.match(PostgreSQLParser.TO) - self.state = 6794 - self.rolespec() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 6796 - self.match(PostgreSQLParser.ALTER) - self.state = 6797 - self.match(PostgreSQLParser.OPERATOR) - self.state = 6798 - self.match(PostgreSQLParser.FAMILY) - self.state = 6799 - self.any_name() - self.state = 6800 - self.match(PostgreSQLParser.USING) - self.state = 6801 - self.name() - self.state = 6802 - self.match(PostgreSQLParser.OWNER) - self.state = 6803 - self.match(PostgreSQLParser.TO) - self.state = 6804 - self.rolespec() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 6806 - self.match(PostgreSQLParser.ALTER) - self.state = 6807 - self.match(PostgreSQLParser.PROCEDURE) - self.state = 6808 - self.function_with_argtypes() - self.state = 6809 - self.match(PostgreSQLParser.OWNER) - self.state = 6810 - self.match(PostgreSQLParser.TO) - self.state = 6811 - self.rolespec() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 6813 - self.match(PostgreSQLParser.ALTER) - self.state = 6814 - self.match(PostgreSQLParser.ROUTINE) - self.state = 6815 - self.function_with_argtypes() - self.state = 6816 - self.match(PostgreSQLParser.OWNER) - self.state = 6817 - self.match(PostgreSQLParser.TO) - self.state = 6818 - self.rolespec() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 6820 - self.match(PostgreSQLParser.ALTER) - self.state = 6821 - self.match(PostgreSQLParser.SCHEMA) - self.state = 6822 - self.name() - self.state = 6823 - self.match(PostgreSQLParser.OWNER) - self.state = 6824 - self.match(PostgreSQLParser.TO) - self.state = 6825 - self.rolespec() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 6827 - self.match(PostgreSQLParser.ALTER) - self.state = 6828 - self.match(PostgreSQLParser.TYPE_P) - self.state = 6829 - self.any_name() - self.state = 6830 - self.match(PostgreSQLParser.OWNER) - self.state = 6831 - self.match(PostgreSQLParser.TO) - self.state = 6832 - self.rolespec() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 6834 - self.match(PostgreSQLParser.ALTER) - self.state = 6835 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 6836 - self.name() - self.state = 6837 - self.match(PostgreSQLParser.OWNER) - self.state = 6838 - self.match(PostgreSQLParser.TO) - self.state = 6839 - self.rolespec() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 6841 - self.match(PostgreSQLParser.ALTER) - self.state = 6842 - self.match(PostgreSQLParser.STATISTICS) - self.state = 6843 - self.any_name() - self.state = 6844 - self.match(PostgreSQLParser.OWNER) - self.state = 6845 - self.match(PostgreSQLParser.TO) - self.state = 6846 - self.rolespec() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 6848 - self.match(PostgreSQLParser.ALTER) - self.state = 6849 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6850 - self.match(PostgreSQLParser.SEARCH) - self.state = 6851 - self.match(PostgreSQLParser.DICTIONARY) - self.state = 6852 - self.any_name() - self.state = 6853 - self.match(PostgreSQLParser.OWNER) - self.state = 6854 - self.match(PostgreSQLParser.TO) - self.state = 6855 - self.rolespec() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 6857 - self.match(PostgreSQLParser.ALTER) - self.state = 6858 - self.match(PostgreSQLParser.TEXT_P) - self.state = 6859 - self.match(PostgreSQLParser.SEARCH) - self.state = 6860 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 6861 - self.any_name() - self.state = 6862 - self.match(PostgreSQLParser.OWNER) - self.state = 6863 - self.match(PostgreSQLParser.TO) - self.state = 6864 - self.rolespec() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 6866 - self.match(PostgreSQLParser.ALTER) - self.state = 6867 - self.match(PostgreSQLParser.FOREIGN) - self.state = 6868 - self.match(PostgreSQLParser.DATA_P) - self.state = 6869 - self.match(PostgreSQLParser.WRAPPER) - self.state = 6870 - self.name() - self.state = 6871 - self.match(PostgreSQLParser.OWNER) - self.state = 6872 - self.match(PostgreSQLParser.TO) - self.state = 6873 - self.rolespec() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 6875 - self.match(PostgreSQLParser.ALTER) - self.state = 6876 - self.match(PostgreSQLParser.SERVER) - self.state = 6877 - self.name() - self.state = 6878 - self.match(PostgreSQLParser.OWNER) - self.state = 6879 - self.match(PostgreSQLParser.TO) - self.state = 6880 - self.rolespec() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 6882 - self.match(PostgreSQLParser.ALTER) - self.state = 6883 - self.match(PostgreSQLParser.EVENT) - self.state = 6884 - self.match(PostgreSQLParser.TRIGGER) - self.state = 6885 - self.name() - self.state = 6886 - self.match(PostgreSQLParser.OWNER) - self.state = 6887 - self.match(PostgreSQLParser.TO) - self.state = 6888 - self.rolespec() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 6890 - self.match(PostgreSQLParser.ALTER) - self.state = 6891 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6892 - self.name() - self.state = 6893 - self.match(PostgreSQLParser.OWNER) - self.state = 6894 - self.match(PostgreSQLParser.TO) - self.state = 6895 - self.rolespec() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 6897 - self.match(PostgreSQLParser.ALTER) - self.state = 6898 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6899 - self.name() - self.state = 6900 - self.match(PostgreSQLParser.OWNER) - self.state = 6901 - self.match(PostgreSQLParser.TO) - self.state = 6902 - self.rolespec() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatepublicationstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_publication_for_tables(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_publication_for_tablesContext,0) - - - def opt_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_definitionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createpublicationstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatepublicationstmt" ): - listener.enterCreatepublicationstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatepublicationstmt" ): - listener.exitCreatepublicationstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatepublicationstmt" ): - return visitor.visitCreatepublicationstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createpublicationstmt(self): - - localctx = PostgreSQLParser.CreatepublicationstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 746, self.RULE_createpublicationstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 6906 - self.match(PostgreSQLParser.CREATE) - self.state = 6907 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6908 - self.name() - self.state = 6909 - self.opt_publication_for_tables() - self.state = 6910 - self.opt_definition() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_publication_for_tablesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def publication_for_tables(self): - return self.getTypedRuleContext(PostgreSQLParser.Publication_for_tablesContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_publication_for_tables - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_publication_for_tables" ): - listener.enterOpt_publication_for_tables(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_publication_for_tables" ): - listener.exitOpt_publication_for_tables(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_publication_for_tables" ): - return visitor.visitOpt_publication_for_tables(self) - else: - return visitor.visitChildren(self) - - - - - def opt_publication_for_tables(self): - - localctx = PostgreSQLParser.Opt_publication_for_tablesContext(self, self._ctx, self.state) - self.enterRule(localctx, 748, self.RULE_opt_publication_for_tables) - try: - self.state = 6914 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - self.state = 6912 - self.publication_for_tables() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Publication_for_tablesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_listContext,0) - - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def TABLES(self): - return self.getToken(PostgreSQLParser.TABLES, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_publication_for_tables - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPublication_for_tables" ): - listener.enterPublication_for_tables(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPublication_for_tables" ): - listener.exitPublication_for_tables(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPublication_for_tables" ): - return visitor.visitPublication_for_tables(self) - else: - return visitor.visitChildren(self) - - - - - def publication_for_tables(self): - - localctx = PostgreSQLParser.Publication_for_tablesContext(self, self._ctx, self.state) - self.enterRule(localctx, 750, self.RULE_publication_for_tables) - try: - self.state = 6922 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,321,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6916 - self.match(PostgreSQLParser.FOR) - self.state = 6917 - self.match(PostgreSQLParser.TABLE) - self.state = 6918 - self.relation_expr_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6919 - self.match(PostgreSQLParser.FOR) - self.state = 6920 - self.match(PostgreSQLParser.ALL) - self.state = 6921 - self.match(PostgreSQLParser.TABLES) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterpublicationstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def definition(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinitionContext,0) - - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_listContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterpublicationstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterpublicationstmt" ): - listener.enterAlterpublicationstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterpublicationstmt" ): - listener.exitAlterpublicationstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterpublicationstmt" ): - return visitor.visitAlterpublicationstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterpublicationstmt(self): - - localctx = PostgreSQLParser.AlterpublicationstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 752, self.RULE_alterpublicationstmt) - try: - self.state = 6951 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,322,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6924 - self.match(PostgreSQLParser.ALTER) - self.state = 6925 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6926 - self.name() - self.state = 6927 - self.match(PostgreSQLParser.SET) - self.state = 6928 - self.definition() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6930 - self.match(PostgreSQLParser.ALTER) - self.state = 6931 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6932 - self.name() - self.state = 6933 - self.match(PostgreSQLParser.ADD_P) - self.state = 6934 - self.match(PostgreSQLParser.TABLE) - self.state = 6935 - self.relation_expr_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6937 - self.match(PostgreSQLParser.ALTER) - self.state = 6938 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6939 - self.name() - self.state = 6940 - self.match(PostgreSQLParser.SET) - self.state = 6941 - self.match(PostgreSQLParser.TABLE) - self.state = 6942 - self.relation_expr_list() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6944 - self.match(PostgreSQLParser.ALTER) - self.state = 6945 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6946 - self.name() - self.state = 6947 - self.match(PostgreSQLParser.DROP) - self.state = 6948 - self.match(PostgreSQLParser.TABLE) - self.state = 6949 - self.relation_expr_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatesubscriptionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def CONNECTION(self): - return self.getToken(PostgreSQLParser.CONNECTION, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def publication_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Publication_name_listContext,0) - - - def opt_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_definitionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createsubscriptionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatesubscriptionstmt" ): - listener.enterCreatesubscriptionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatesubscriptionstmt" ): - listener.exitCreatesubscriptionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatesubscriptionstmt" ): - return visitor.visitCreatesubscriptionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createsubscriptionstmt(self): - - localctx = PostgreSQLParser.CreatesubscriptionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 754, self.RULE_createsubscriptionstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 6953 - self.match(PostgreSQLParser.CREATE) - self.state = 6954 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6955 - self.name() - self.state = 6956 - self.match(PostgreSQLParser.CONNECTION) - self.state = 6957 - self.sconst() - self.state = 6958 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6959 - self.publication_name_list() - self.state = 6960 - self.opt_definition() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Publication_name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def publication_name_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Publication_name_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Publication_name_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_publication_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPublication_name_list" ): - listener.enterPublication_name_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPublication_name_list" ): - listener.exitPublication_name_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPublication_name_list" ): - return visitor.visitPublication_name_list(self) - else: - return visitor.visitChildren(self) - - - - - def publication_name_list(self): - - localctx = PostgreSQLParser.Publication_name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 756, self.RULE_publication_name_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 6962 - self.publication_name_item() - self.state = 6967 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 6963 - self.match(PostgreSQLParser.COMMA) - self.state = 6964 - self.publication_name_item() - self.state = 6969 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Publication_name_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_publication_name_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPublication_name_item" ): - listener.enterPublication_name_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPublication_name_item" ): - listener.exitPublication_name_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPublication_name_item" ): - return visitor.visitPublication_name_item(self) - else: - return visitor.visitChildren(self) - - - - - def publication_name_item(self): - - localctx = PostgreSQLParser.Publication_name_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 758, self.RULE_publication_name_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 6970 - self.collabel() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltersubscriptionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def definition(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinitionContext,0) - - - def CONNECTION(self): - return self.getToken(PostgreSQLParser.CONNECTION, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def REFRESH(self): - return self.getToken(PostgreSQLParser.REFRESH, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def opt_definition(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_definitionContext,0) - - - def publication_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Publication_name_listContext,0) - - - def ENABLE_P(self): - return self.getToken(PostgreSQLParser.ENABLE_P, 0) - - def DISABLE_P(self): - return self.getToken(PostgreSQLParser.DISABLE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altersubscriptionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltersubscriptionstmt" ): - listener.enterAltersubscriptionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltersubscriptionstmt" ): - listener.exitAltersubscriptionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltersubscriptionstmt" ): - return visitor.visitAltersubscriptionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altersubscriptionstmt(self): - - localctx = PostgreSQLParser.AltersubscriptionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 760, self.RULE_altersubscriptionstmt) - try: - self.state = 7009 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,324,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 6972 - self.match(PostgreSQLParser.ALTER) - self.state = 6973 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6974 - self.name() - self.state = 6975 - self.match(PostgreSQLParser.SET) - self.state = 6976 - self.definition() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 6978 - self.match(PostgreSQLParser.ALTER) - self.state = 6979 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6980 - self.name() - self.state = 6981 - self.match(PostgreSQLParser.CONNECTION) - self.state = 6982 - self.sconst() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 6984 - self.match(PostgreSQLParser.ALTER) - self.state = 6985 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6986 - self.name() - self.state = 6987 - self.match(PostgreSQLParser.REFRESH) - self.state = 6988 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6989 - self.opt_definition() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 6991 - self.match(PostgreSQLParser.ALTER) - self.state = 6992 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 6993 - self.name() - self.state = 6994 - self.match(PostgreSQLParser.SET) - self.state = 6995 - self.match(PostgreSQLParser.PUBLICATION) - self.state = 6996 - self.publication_name_list() - self.state = 6997 - self.opt_definition() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 6999 - self.match(PostgreSQLParser.ALTER) - self.state = 7000 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 7001 - self.name() - self.state = 7002 - self.match(PostgreSQLParser.ENABLE_P) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 7004 - self.match(PostgreSQLParser.ALTER) - self.state = 7005 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 7006 - self.name() - self.state = 7007 - self.match(PostgreSQLParser.DISABLE_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropsubscriptionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropsubscriptionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropsubscriptionstmt" ): - listener.enterDropsubscriptionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropsubscriptionstmt" ): - listener.exitDropsubscriptionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropsubscriptionstmt" ): - return visitor.visitDropsubscriptionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropsubscriptionstmt(self): - - localctx = PostgreSQLParser.DropsubscriptionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 762, self.RULE_dropsubscriptionstmt) - try: - self.state = 7023 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,325,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7011 - self.match(PostgreSQLParser.DROP) - self.state = 7012 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 7013 - self.name() - self.state = 7014 - self.opt_drop_behavior() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7016 - self.match(PostgreSQLParser.DROP) - self.state = 7017 - self.match(PostgreSQLParser.SUBSCRIPTION) - self.state = 7018 - self.match(PostgreSQLParser.IF_P) - self.state = 7019 - self.match(PostgreSQLParser.EXISTS) - self.state = 7020 - self.name() - self.state = 7021 - self.opt_drop_behavior() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RulestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_or_replace(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_or_replaceContext,0) - - - def RULE(self): - return self.getToken(PostgreSQLParser.RULE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def event(self): - return self.getTypedRuleContext(PostgreSQLParser.EventContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def opt_instead(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_insteadContext,0) - - - def ruleactionlist(self): - return self.getTypedRuleContext(PostgreSQLParser.RuleactionlistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rulestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRulestmt" ): - listener.enterRulestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRulestmt" ): - listener.exitRulestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRulestmt" ): - return visitor.visitRulestmt(self) - else: - return visitor.visitChildren(self) - - - - - def rulestmt(self): - - localctx = PostgreSQLParser.RulestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 764, self.RULE_rulestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7025 - self.match(PostgreSQLParser.CREATE) - self.state = 7026 - self.opt_or_replace() - self.state = 7027 - self.match(PostgreSQLParser.RULE) - self.state = 7028 - self.name() - self.state = 7029 - self.match(PostgreSQLParser.AS) - self.state = 7030 - self.match(PostgreSQLParser.ON) - self.state = 7031 - self.event() - self.state = 7032 - self.match(PostgreSQLParser.TO) - self.state = 7033 - self.qualified_name() - self.state = 7034 - self.where_clause() - self.state = 7035 - self.match(PostgreSQLParser.DO) - self.state = 7036 - self.opt_instead() - self.state = 7037 - self.ruleactionlist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RuleactionlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOTHING(self): - return self.getToken(PostgreSQLParser.NOTHING, 0) - - def ruleactionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RuleactionstmtContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def ruleactionmulti(self): - return self.getTypedRuleContext(PostgreSQLParser.RuleactionmultiContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_ruleactionlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRuleactionlist" ): - listener.enterRuleactionlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRuleactionlist" ): - listener.exitRuleactionlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRuleactionlist" ): - return visitor.visitRuleactionlist(self) - else: - return visitor.visitChildren(self) - - - - - def ruleactionlist(self): - - localctx = PostgreSQLParser.RuleactionlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 766, self.RULE_ruleactionlist) - try: - self.state = 7045 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,326,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7039 - self.match(PostgreSQLParser.NOTHING) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7040 - self.ruleactionstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7041 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7042 - self.ruleactionmulti() - self.state = 7043 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RuleactionmultiContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ruleactionstmtOrEmpty(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.RuleactionstmtOrEmptyContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.RuleactionstmtOrEmptyContext,i) - - - def SEMI(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.SEMI) - else: - return self.getToken(PostgreSQLParser.SEMI, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_ruleactionmulti - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRuleactionmulti" ): - listener.enterRuleactionmulti(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRuleactionmulti" ): - listener.exitRuleactionmulti(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRuleactionmulti" ): - return visitor.visitRuleactionmulti(self) - else: - return visitor.visitChildren(self) - - - - - def ruleactionmulti(self): - - localctx = PostgreSQLParser.RuleactionmultiContext(self, self._ctx, self.state) - self.enterRule(localctx, 768, self.RULE_ruleactionmulti) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7047 - self.ruleactionstmtOrEmpty() - self.state = 7052 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==7: - self.state = 7048 - self.match(PostgreSQLParser.SEMI) - self.state = 7049 - self.ruleactionstmtOrEmpty() - self.state = 7054 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RuleactionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def insertstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.InsertstmtContext,0) - - - def updatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.UpdatestmtContext,0) - - - def deletestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeletestmtContext,0) - - - def notifystmt(self): - return self.getTypedRuleContext(PostgreSQLParser.NotifystmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_ruleactionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRuleactionstmt" ): - listener.enterRuleactionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRuleactionstmt" ): - listener.exitRuleactionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRuleactionstmt" ): - return visitor.visitRuleactionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def ruleactionstmt(self): - - localctx = PostgreSQLParser.RuleactionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 770, self.RULE_ruleactionstmt) - try: - self.state = 7060 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,328,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7055 - self.selectstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7056 - self.insertstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7057 - self.updatestmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7058 - self.deletestmt() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 7059 - self.notifystmt() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RuleactionstmtOrEmptyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ruleactionstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RuleactionstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_ruleactionstmtOrEmpty - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRuleactionstmtOrEmpty" ): - listener.enterRuleactionstmtOrEmpty(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRuleactionstmtOrEmpty" ): - listener.exitRuleactionstmtOrEmpty(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRuleactionstmtOrEmpty" ): - return visitor.visitRuleactionstmtOrEmpty(self) - else: - return visitor.visitChildren(self) - - - - - def ruleactionstmtOrEmpty(self): - - localctx = PostgreSQLParser.RuleactionstmtOrEmptyContext(self, self._ctx, self.state) - self.enterRule(localctx, 772, self.RULE_ruleactionstmtOrEmpty) - try: - self.state = 7064 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 88, 92, 105, 182, 232, 264, 362, 415]: - self.enterOuterAlt(localctx, 1) - self.state = 7062 - self.ruleactionstmt() - pass - elif token in [3, 7]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class EventContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SELECT(self): - return self.getToken(PostgreSQLParser.SELECT, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_event - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEvent" ): - listener.enterEvent(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEvent" ): - listener.exitEvent(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEvent" ): - return visitor.visitEvent(self) - else: - return visitor.visitChildren(self) - - - - - def event(self): - - localctx = PostgreSQLParser.EventContext(self, self._ctx, self.state) - self.enterRule(localctx, 774, self.RULE_event) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7066 - _la = self._input.LA(1) - if not(_la==88 or _la==182 or _la==232 or _la==362): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_insteadContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INSTEAD(self): - return self.getToken(PostgreSQLParser.INSTEAD, 0) - - def ALSO(self): - return self.getToken(PostgreSQLParser.ALSO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_instead - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_instead" ): - listener.enterOpt_instead(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_instead" ): - listener.exitOpt_instead(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_instead" ): - return visitor.visitOpt_instead(self) - else: - return visitor.visitChildren(self) - - - - - def opt_instead(self): - - localctx = PostgreSQLParser.Opt_insteadContext(self, self._ctx, self.state) - self.enterRule(localctx, 776, self.RULE_opt_instead) - try: - self.state = 7071 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [233]: - self.enterOuterAlt(localctx, 1) - self.state = 7068 - self.match(PostgreSQLParser.INSTEAD) - pass - elif token in [137]: - self.enterOuterAlt(localctx, 2) - self.state = 7069 - self.match(PostgreSQLParser.ALSO) - pass - elif token in [2, 88, 92, 105, 182, 232, 263, 264, 362, 415]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NotifystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOTIFY(self): - return self.getToken(PostgreSQLParser.NOTIFY, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def notify_payload(self): - return self.getTypedRuleContext(PostgreSQLParser.Notify_payloadContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_notifystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNotifystmt" ): - listener.enterNotifystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNotifystmt" ): - listener.exitNotifystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNotifystmt" ): - return visitor.visitNotifystmt(self) - else: - return visitor.visitChildren(self) - - - - - def notifystmt(self): - - localctx = PostgreSQLParser.NotifystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 778, self.RULE_notifystmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7073 - self.match(PostgreSQLParser.NOTIFY) - self.state = 7074 - self.colid() - self.state = 7075 - self.notify_payload() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Notify_payloadContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_notify_payload - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNotify_payload" ): - listener.enterNotify_payload(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNotify_payload" ): - listener.exitNotify_payload(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNotify_payload" ): - return visitor.visitNotify_payload(self) - else: - return visitor.visitChildren(self) - - - - - def notify_payload(self): - - localctx = PostgreSQLParser.Notify_payloadContext(self, self._ctx, self.state) - self.enterRule(localctx, 780, self.RULE_notify_payload) - try: - self.state = 7080 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [6]: - self.enterOuterAlt(localctx, 1) - self.state = 7077 - self.match(PostgreSQLParser.COMMA) - self.state = 7078 - self.sconst() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ListenstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LISTEN(self): - return self.getToken(PostgreSQLParser.LISTEN, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_listenstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterListenstmt" ): - listener.enterListenstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitListenstmt" ): - listener.exitListenstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitListenstmt" ): - return visitor.visitListenstmt(self) - else: - return visitor.visitChildren(self) - - - - - def listenstmt(self): - - localctx = PostgreSQLParser.ListenstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 782, self.RULE_listenstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7082 - self.match(PostgreSQLParser.LISTEN) - self.state = 7083 - self.colid() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UnlistenstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def UNLISTEN(self): - return self.getToken(PostgreSQLParser.UNLISTEN, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_unlistenstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnlistenstmt" ): - listener.enterUnlistenstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnlistenstmt" ): - listener.exitUnlistenstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnlistenstmt" ): - return visitor.visitUnlistenstmt(self) - else: - return visitor.visitChildren(self) - - - - - def unlistenstmt(self): - - localctx = PostgreSQLParser.UnlistenstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 784, self.RULE_unlistenstmt) - try: - self.state = 7089 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,332,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7085 - self.match(PostgreSQLParser.UNLISTEN) - self.state = 7086 - self.colid() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7087 - self.match(PostgreSQLParser.UNLISTEN) - self.state = 7088 - self.match(PostgreSQLParser.STAR) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TransactionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ABORT_P(self): - return self.getToken(PostgreSQLParser.ABORT_P, 0) - - def opt_transaction(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_transactionContext,0) - - - def opt_transaction_chain(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_transaction_chainContext,0) - - - def BEGIN_P(self): - return self.getToken(PostgreSQLParser.BEGIN_P, 0) - - def transaction_mode_list_or_empty(self): - return self.getTypedRuleContext(PostgreSQLParser.Transaction_mode_list_or_emptyContext,0) - - - def START(self): - return self.getToken(PostgreSQLParser.START, 0) - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def COMMIT(self): - return self.getToken(PostgreSQLParser.COMMIT, 0) - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def ROLLBACK(self): - return self.getToken(PostgreSQLParser.ROLLBACK, 0) - - def SAVEPOINT(self): - return self.getToken(PostgreSQLParser.SAVEPOINT, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def RELEASE(self): - return self.getToken(PostgreSQLParser.RELEASE, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def PREPARE(self): - return self.getToken(PostgreSQLParser.PREPARE, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def PREPARED(self): - return self.getToken(PostgreSQLParser.PREPARED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transactionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransactionstmt" ): - listener.enterTransactionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransactionstmt" ): - listener.exitTransactionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransactionstmt" ): - return visitor.visitTransactionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def transactionstmt(self): - - localctx = PostgreSQLParser.TransactionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 786, self.RULE_transactionstmt) - try: - self.state = 7141 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,333,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7091 - self.match(PostgreSQLParser.ABORT_P) - self.state = 7092 - self.opt_transaction() - self.state = 7093 - self.opt_transaction_chain() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7095 - self.match(PostgreSQLParser.BEGIN_P) - self.state = 7096 - self.opt_transaction() - self.state = 7097 - self.transaction_mode_list_or_empty() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7099 - self.match(PostgreSQLParser.START) - self.state = 7100 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 7101 - self.transaction_mode_list_or_empty() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7102 - self.match(PostgreSQLParser.COMMIT) - self.state = 7103 - self.opt_transaction() - self.state = 7104 - self.opt_transaction_chain() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 7106 - self.match(PostgreSQLParser.END_P) - self.state = 7107 - self.opt_transaction() - self.state = 7108 - self.opt_transaction_chain() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 7110 - self.match(PostgreSQLParser.ROLLBACK) - self.state = 7111 - self.opt_transaction() - self.state = 7112 - self.opt_transaction_chain() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 7114 - self.match(PostgreSQLParser.SAVEPOINT) - self.state = 7115 - self.colid() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 7116 - self.match(PostgreSQLParser.RELEASE) - self.state = 7117 - self.match(PostgreSQLParser.SAVEPOINT) - self.state = 7118 - self.colid() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 7119 - self.match(PostgreSQLParser.RELEASE) - self.state = 7120 - self.colid() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 7121 - self.match(PostgreSQLParser.ROLLBACK) - self.state = 7122 - self.opt_transaction() - self.state = 7123 - self.match(PostgreSQLParser.TO) - self.state = 7124 - self.match(PostgreSQLParser.SAVEPOINT) - self.state = 7125 - self.colid() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 7127 - self.match(PostgreSQLParser.ROLLBACK) - self.state = 7128 - self.opt_transaction() - self.state = 7129 - self.match(PostgreSQLParser.TO) - self.state = 7130 - self.colid() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 7132 - self.match(PostgreSQLParser.PREPARE) - self.state = 7133 - self.match(PostgreSQLParser.TRANSACTION) - self.state = 7134 - self.sconst() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 7135 - self.match(PostgreSQLParser.COMMIT) - self.state = 7136 - self.match(PostgreSQLParser.PREPARED) - self.state = 7137 - self.sconst() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 7138 - self.match(PostgreSQLParser.ROLLBACK) - self.state = 7139 - self.match(PostgreSQLParser.PREPARED) - self.state = 7140 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_transactionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WORK(self): - return self.getToken(PostgreSQLParser.WORK, 0) - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_transaction - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_transaction" ): - listener.enterOpt_transaction(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_transaction" ): - listener.exitOpt_transaction(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_transaction" ): - return visitor.visitOpt_transaction(self) - else: - return visitor.visitChildren(self) - - - - - def opt_transaction(self): - - localctx = PostgreSQLParser.Opt_transactionContext(self, self._ctx, self.state) - self.enterRule(localctx, 788, self.RULE_opt_transaction) - try: - self.state = 7146 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [373]: - self.enterOuterAlt(localctx, 1) - self.state = 7143 - self.match(PostgreSQLParser.WORK) - pass - elif token in [349]: - self.enterOuterAlt(localctx, 2) - self.state = 7144 - self.match(PostgreSQLParser.TRANSACTION) - pass - elif token in [-1, 2, 7, 31, 32, 33, 46, 54, 57, 61, 65, 71, 77, 88, 92, 94, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 235, 243, 244, 247, 253, 258, 264, 283, 293, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Transaction_mode_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ISOLATION(self): - return self.getToken(PostgreSQLParser.ISOLATION, 0) - - def LEVEL(self): - return self.getToken(PostgreSQLParser.LEVEL, 0) - - def iso_level(self): - return self.getTypedRuleContext(PostgreSQLParser.Iso_levelContext,0) - - - def READ(self): - return self.getToken(PostgreSQLParser.READ, 0) - - def ONLY(self): - return self.getToken(PostgreSQLParser.ONLY, 0) - - def WRITE(self): - return self.getToken(PostgreSQLParser.WRITE, 0) - - def DEFERRABLE(self): - return self.getToken(PostgreSQLParser.DEFERRABLE, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transaction_mode_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransaction_mode_item" ): - listener.enterTransaction_mode_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransaction_mode_item" ): - listener.exitTransaction_mode_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransaction_mode_item" ): - return visitor.visitTransaction_mode_item(self) - else: - return visitor.visitChildren(self) - - - - - def transaction_mode_item(self): - - localctx = PostgreSQLParser.Transaction_mode_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 790, self.RULE_transaction_mode_item) - try: - self.state = 7158 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,335,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7148 - self.match(PostgreSQLParser.ISOLATION) - self.state = 7149 - self.match(PostgreSQLParser.LEVEL) - self.state = 7150 - self.iso_level() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7151 - self.match(PostgreSQLParser.READ) - self.state = 7152 - self.match(PostgreSQLParser.ONLY) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7153 - self.match(PostgreSQLParser.READ) - self.state = 7154 - self.match(PostgreSQLParser.WRITE) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7155 - self.match(PostgreSQLParser.DEFERRABLE) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 7156 - self.match(PostgreSQLParser.NOT) - self.state = 7157 - self.match(PostgreSQLParser.DEFERRABLE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Transaction_mode_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def transaction_mode_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Transaction_mode_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Transaction_mode_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transaction_mode_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransaction_mode_list" ): - listener.enterTransaction_mode_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransaction_mode_list" ): - listener.exitTransaction_mode_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransaction_mode_list" ): - return visitor.visitTransaction_mode_list(self) - else: - return visitor.visitChildren(self) - - - - - def transaction_mode_list(self): - - localctx = PostgreSQLParser.Transaction_mode_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 792, self.RULE_transaction_mode_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7160 - self.transaction_mode_item() - self.state = 7167 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6 or _la==54 or _la==77 or _la==235 or _la==293: - self.state = 7162 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 7161 - self.match(PostgreSQLParser.COMMA) - - - self.state = 7164 - self.transaction_mode_item() - self.state = 7169 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Transaction_mode_list_or_emptyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def transaction_mode_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Transaction_mode_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_transaction_mode_list_or_empty - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTransaction_mode_list_or_empty" ): - listener.enterTransaction_mode_list_or_empty(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTransaction_mode_list_or_empty" ): - listener.exitTransaction_mode_list_or_empty(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTransaction_mode_list_or_empty" ): - return visitor.visitTransaction_mode_list_or_empty(self) - else: - return visitor.visitChildren(self) - - - - - def transaction_mode_list_or_empty(self): - - localctx = PostgreSQLParser.Transaction_mode_list_or_emptyContext(self, self._ctx, self.state) - self.enterRule(localctx, 794, self.RULE_transaction_mode_list_or_empty) - try: - self.state = 7172 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [54, 77, 235, 293]: - self.enterOuterAlt(localctx, 1) - self.state = 7170 - self.transaction_mode_list() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_transaction_chainContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def CHAIN(self): - return self.getToken(PostgreSQLParser.CHAIN, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_transaction_chain - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_transaction_chain" ): - listener.enterOpt_transaction_chain(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_transaction_chain" ): - listener.exitOpt_transaction_chain(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_transaction_chain" ): - return visitor.visitOpt_transaction_chain(self) - else: - return visitor.visitChildren(self) - - - - - def opt_transaction_chain(self): - - localctx = PostgreSQLParser.Opt_transaction_chainContext(self, self._ctx, self.state) - self.enterRule(localctx, 796, self.RULE_opt_transaction_chain) - self._la = 0 # Token type - try: - self.state = 7180 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33]: - self.enterOuterAlt(localctx, 1) - self.state = 7174 - self.match(PostgreSQLParser.AND) - self.state = 7176 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==262: - self.state = 7175 - self.match(PostgreSQLParser.NO) - - - self.state = 7178 - self.match(PostgreSQLParser.CHAIN) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ViewstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opttemp(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def opt_check_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_check_optionContext,0) - - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_column_listContext,0) - - - def opt_reloptions(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_reloptionsContext,0) - - - def RECURSIVE(self): - return self.getToken(PostgreSQLParser.RECURSIVE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def columnlist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def OR(self): - return self.getToken(PostgreSQLParser.OR, 0) - - def REPLACE(self): - return self.getToken(PostgreSQLParser.REPLACE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_viewstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterViewstmt" ): - listener.enterViewstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitViewstmt" ): - listener.exitViewstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitViewstmt" ): - return visitor.visitViewstmt(self) - else: - return visitor.visitChildren(self) - - - - - def viewstmt(self): - - localctx = PostgreSQLParser.ViewstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 798, self.RULE_viewstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7182 - self.match(PostgreSQLParser.CREATE) - self.state = 7185 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==82: - self.state = 7183 - self.match(PostgreSQLParser.OR) - self.state = 7184 - self.match(PostgreSQLParser.REPLACE) - - - self.state = 7187 - self.opttemp() - self.state = 7201 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [369]: - self.state = 7188 - self.match(PostgreSQLParser.VIEW) - self.state = 7189 - self.qualified_name() - self.state = 7190 - self.opt_column_list() - self.state = 7191 - self.opt_reloptions() - pass - elif token in [296]: - self.state = 7193 - self.match(PostgreSQLParser.RECURSIVE) - self.state = 7194 - self.match(PostgreSQLParser.VIEW) - self.state = 7195 - self.qualified_name() - self.state = 7196 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7197 - self.columnlist() - self.state = 7198 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7199 - self.opt_reloptions() - pass - else: - raise NoViableAltException(self) - - self.state = 7203 - self.match(PostgreSQLParser.AS) - self.state = 7204 - self.selectstmt() - self.state = 7205 - self.opt_check_option() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_check_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def CASCADED(self): - return self.getToken(PostgreSQLParser.CASCADED, 0) - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_check_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_check_option" ): - listener.enterOpt_check_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_check_option" ): - listener.exitOpt_check_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_check_option" ): - return visitor.visitOpt_check_option(self) - else: - return visitor.visitChildren(self) - - - - - def opt_check_option(self): - - localctx = PostgreSQLParser.Opt_check_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 800, self.RULE_opt_check_option) - self._la = 0 # Token type - try: - self.state = 7214 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,344,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7207 - self.match(PostgreSQLParser.WITH) - self.state = 7209 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==151 or _la==245: - self.state = 7208 - _la = self._input.LA(1) - if not(_la==151 or _la==245): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - self.state = 7211 - self.match(PostgreSQLParser.CHECK) - self.state = 7212 - self.match(PostgreSQLParser.OPTION) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LoadstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LOAD(self): - return self.getToken(PostgreSQLParser.LOAD, 0) - - def file_name(self): - return self.getTypedRuleContext(PostgreSQLParser.File_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_loadstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLoadstmt" ): - listener.enterLoadstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLoadstmt" ): - listener.exitLoadstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLoadstmt" ): - return visitor.visitLoadstmt(self) - else: - return visitor.visitChildren(self) - - - - - def loadstmt(self): - - localctx = PostgreSQLParser.LoadstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 802, self.RULE_loadstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7216 - self.match(PostgreSQLParser.LOAD) - self.state = 7217 - self.file_name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatedbstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def createdb_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Createdb_opt_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdbstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedbstmt" ): - listener.enterCreatedbstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedbstmt" ): - listener.exitCreatedbstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedbstmt" ): - return visitor.visitCreatedbstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createdbstmt(self): - - localctx = PostgreSQLParser.CreatedbstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 804, self.RULE_createdbstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7219 - self.match(PostgreSQLParser.CREATE) - self.state = 7220 - self.match(PostgreSQLParser.DATABASE) - self.state = 7221 - self.name() - self.state = 7222 - self.opt_with() - self.state = 7223 - self.createdb_opt_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createdb_opt_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createdb_opt_items(self): - return self.getTypedRuleContext(PostgreSQLParser.Createdb_opt_itemsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdb_opt_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedb_opt_list" ): - listener.enterCreatedb_opt_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedb_opt_list" ): - listener.exitCreatedb_opt_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedb_opt_list" ): - return visitor.visitCreatedb_opt_list(self) - else: - return visitor.visitChildren(self) - - - - - def createdb_opt_list(self): - - localctx = PostgreSQLParser.Createdb_opt_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 806, self.RULE_createdb_opt_list) - try: - self.state = 7227 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,345,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7225 - self.createdb_opt_items() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createdb_opt_itemsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createdb_opt_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Createdb_opt_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Createdb_opt_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdb_opt_items - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedb_opt_items" ): - listener.enterCreatedb_opt_items(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedb_opt_items" ): - listener.exitCreatedb_opt_items(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedb_opt_items" ): - return visitor.visitCreatedb_opt_items(self) - else: - return visitor.visitChildren(self) - - - - - def createdb_opt_items(self): - - localctx = PostgreSQLParser.Createdb_opt_itemsContext(self, self._ctx, self.state) - self.enterRule(localctx, 808, self.RULE_createdb_opt_items) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7230 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 7229 - self.createdb_opt_item() - - else: - raise NoViableAltException(self) - self.state = 7232 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,346,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createdb_opt_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def createdb_opt_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Createdb_opt_nameContext,0) - - - def opt_equal(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_equalContext,0) - - - def signediconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SignediconstContext,0) - - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdb_opt_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedb_opt_item" ): - listener.enterCreatedb_opt_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedb_opt_item" ): - listener.exitCreatedb_opt_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedb_opt_item" ): - return visitor.visitCreatedb_opt_item(self) - else: - return visitor.visitChildren(self) - - - - - def createdb_opt_item(self): - - localctx = PostgreSQLParser.Createdb_opt_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 810, self.RULE_createdb_opt_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7234 - self.createdb_opt_name() - self.state = 7235 - self.opt_equal() - self.state = 7239 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,347,self._ctx) - if la_ == 1: - self.state = 7236 - self.signediconst() - pass - - elif la_ == 2: - self.state = 7237 - self.opt_boolean_or_string() - pass - - elif la_ == 3: - self.state = 7238 - self.match(PostgreSQLParser.DEFAULT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Createdb_opt_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def CONNECTION(self): - return self.getToken(PostgreSQLParser.CONNECTION, 0) - - def LIMIT(self): - return self.getToken(PostgreSQLParser.LIMIT, 0) - - def ENCODING(self): - return self.getToken(PostgreSQLParser.ENCODING, 0) - - def LOCATION(self): - return self.getToken(PostgreSQLParser.LOCATION, 0) - - def OWNER(self): - return self.getToken(PostgreSQLParser.OWNER, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdb_opt_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedb_opt_name" ): - listener.enterCreatedb_opt_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedb_opt_name" ): - listener.exitCreatedb_opt_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedb_opt_name" ): - return visitor.visitCreatedb_opt_name(self) - else: - return visitor.visitChildren(self) - - - - - def createdb_opt_name(self): - - localctx = PostgreSQLParser.Createdb_opt_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 812, self.RULE_createdb_opt_name) - try: - self.state = 7249 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 123, 130, 144, 153, 157, 161, 167, 172, 207, 210, 232, 240, 258, 261, 262, 272, 286, 300, 306, 312, 316, 317, 326, 353, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 7241 - self.identifier() - pass - elif token in [164]: - self.enterOuterAlt(localctx, 2) - self.state = 7242 - self.match(PostgreSQLParser.CONNECTION) - self.state = 7243 - self.match(PostgreSQLParser.LIMIT) - pass - elif token in [194]: - self.enterOuterAlt(localctx, 3) - self.state = 7244 - self.match(PostgreSQLParser.ENCODING) - pass - elif token in [246]: - self.enterOuterAlt(localctx, 4) - self.state = 7245 - self.match(PostgreSQLParser.LOCATION) - pass - elif token in [275]: - self.enterOuterAlt(localctx, 5) - self.state = 7246 - self.match(PostgreSQLParser.OWNER) - pass - elif token in [344]: - self.enterOuterAlt(localctx, 6) - self.state = 7247 - self.match(PostgreSQLParser.TABLESPACE) - pass - elif token in [346]: - self.enterOuterAlt(localctx, 7) - self.state = 7248 - self.match(PostgreSQLParser.TEMPLATE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_equalContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_equal - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_equal" ): - listener.enterOpt_equal(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_equal" ): - listener.exitOpt_equal(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_equal" ): - return visitor.visitOpt_equal(self) - else: - return visitor.visitChildren(self) - - - - - def opt_equal(self): - - localctx = PostgreSQLParser.Opt_equalContext(self, self._ctx, self.state) - self.enterRule(localctx, 814, self.RULE_opt_equal) - try: - self.state = 7253 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [10]: - self.enterOuterAlt(localctx, 1) - self.state = 7251 - self.match(PostgreSQLParser.EQUAL) - pass - elif token in [12, 13, 33, 35, 43, 44, 45, 53, 57, 60, 61, 80, 92, 96, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 658, 661, 662, 671]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterdatabasestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def createdb_opt_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Createdb_opt_listContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterdatabasestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterdatabasestmt" ): - listener.enterAlterdatabasestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterdatabasestmt" ): - listener.exitAlterdatabasestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterdatabasestmt" ): - return visitor.visitAlterdatabasestmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterdatabasestmt(self): - - localctx = PostgreSQLParser.AlterdatabasestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 816, self.RULE_alterdatabasestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7255 - self.match(PostgreSQLParser.ALTER) - self.state = 7256 - self.match(PostgreSQLParser.DATABASE) - self.state = 7257 - self.name() - self.state = 7264 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,350,self._ctx) - if la_ == 1: - self.state = 7258 - self.match(PostgreSQLParser.WITH) - self.state = 7259 - self.createdb_opt_list() - pass - - elif la_ == 2: - self.state = 7260 - self.createdb_opt_list() - pass - - elif la_ == 3: - self.state = 7261 - self.match(PostgreSQLParser.SET) - self.state = 7262 - self.match(PostgreSQLParser.TABLESPACE) - self.state = 7263 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterdatabasesetstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def setresetclause(self): - return self.getTypedRuleContext(PostgreSQLParser.SetresetclauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterdatabasesetstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterdatabasesetstmt" ): - listener.enterAlterdatabasesetstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterdatabasesetstmt" ): - listener.exitAlterdatabasesetstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterdatabasesetstmt" ): - return visitor.visitAlterdatabasesetstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterdatabasesetstmt(self): - - localctx = PostgreSQLParser.AlterdatabasesetstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 818, self.RULE_alterdatabasesetstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7266 - self.match(PostgreSQLParser.ALTER) - self.state = 7267 - self.match(PostgreSQLParser.DATABASE) - self.state = 7268 - self.name() - self.state = 7269 - self.setresetclause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DropdbstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def opt_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_withContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def drop_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Drop_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_dropdbstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDropdbstmt" ): - listener.enterDropdbstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDropdbstmt" ): - listener.exitDropdbstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDropdbstmt" ): - return visitor.visitDropdbstmt(self) - else: - return visitor.visitChildren(self) - - - - - def dropdbstmt(self): - - localctx = PostgreSQLParser.DropdbstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 820, self.RULE_dropdbstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7271 - self.match(PostgreSQLParser.DROP) - self.state = 7272 - self.match(PostgreSQLParser.DATABASE) - self.state = 7275 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,351,self._ctx) - if la_ == 1: - self.state = 7273 - self.match(PostgreSQLParser.IF_P) - self.state = 7274 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 7277 - self.name() - self.state = 7283 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,352,self._ctx) - if la_ == 1: - self.state = 7278 - self.opt_with() - self.state = 7279 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7280 - self.drop_option_list() - self.state = 7281 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Drop_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def drop_option(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Drop_optionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Drop_optionContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_drop_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDrop_option_list" ): - listener.enterDrop_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDrop_option_list" ): - listener.exitDrop_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDrop_option_list" ): - return visitor.visitDrop_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def drop_option_list(self): - - localctx = PostgreSQLParser.Drop_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 822, self.RULE_drop_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7285 - self.drop_option() - self.state = 7290 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7286 - self.match(PostgreSQLParser.COMMA) - self.state = 7287 - self.drop_option() - self.state = 7292 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Drop_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FORCE(self): - return self.getToken(PostgreSQLParser.FORCE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_drop_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDrop_option" ): - listener.enterDrop_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDrop_option" ): - listener.exitDrop_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDrop_option" ): - return visitor.visitDrop_option(self) - else: - return visitor.visitChildren(self) - - - - - def drop_option(self): - - localctx = PostgreSQLParser.Drop_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 824, self.RULE_drop_option) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7293 - self.match(PostgreSQLParser.FORCE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltercollationstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def REFRESH(self): - return self.getToken(PostgreSQLParser.REFRESH, 0) - - def VERSION_P(self): - return self.getToken(PostgreSQLParser.VERSION_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altercollationstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltercollationstmt" ): - listener.enterAltercollationstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltercollationstmt" ): - listener.exitAltercollationstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltercollationstmt" ): - return visitor.visitAltercollationstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altercollationstmt(self): - - localctx = PostgreSQLParser.AltercollationstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 826, self.RULE_altercollationstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7295 - self.match(PostgreSQLParser.ALTER) - self.state = 7296 - self.match(PostgreSQLParser.COLLATION) - self.state = 7297 - self.any_name() - self.state = 7298 - self.match(PostgreSQLParser.REFRESH) - self.state = 7299 - self.match(PostgreSQLParser.VERSION_P) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltersystemstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def SYSTEM_P(self): - return self.getToken(PostgreSQLParser.SYSTEM_P, 0) - - def generic_set(self): - return self.getTypedRuleContext(PostgreSQLParser.Generic_setContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altersystemstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltersystemstmt" ): - listener.enterAltersystemstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltersystemstmt" ): - listener.exitAltersystemstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltersystemstmt" ): - return visitor.visitAltersystemstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altersystemstmt(self): - - localctx = PostgreSQLParser.AltersystemstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 828, self.RULE_altersystemstmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7301 - self.match(PostgreSQLParser.ALTER) - self.state = 7302 - self.match(PostgreSQLParser.SYSTEM_P) - self.state = 7303 - _la = self._input.LA(1) - if not(_la==306 or _la==326): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 7304 - self.generic_set() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreatedomainstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def opt_as(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_asContext,0) - - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def colquallist(self): - return self.getTypedRuleContext(PostgreSQLParser.ColquallistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createdomainstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreatedomainstmt" ): - listener.enterCreatedomainstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreatedomainstmt" ): - listener.exitCreatedomainstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreatedomainstmt" ): - return visitor.visitCreatedomainstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createdomainstmt(self): - - localctx = PostgreSQLParser.CreatedomainstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 830, self.RULE_createdomainstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7306 - self.match(PostgreSQLParser.CREATE) - self.state = 7307 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 7308 - self.any_name() - self.state = 7309 - self.opt_as() - self.state = 7310 - self.typename() - self.state = 7311 - self.colquallist() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AlterdomainstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def alter_column_default(self): - return self.getTypedRuleContext(PostgreSQLParser.Alter_column_defaultContext,0) - - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def tableconstraint(self): - return self.getTypedRuleContext(PostgreSQLParser.TableconstraintContext,0) - - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_drop_behavior(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_drop_behaviorContext,0) - - - def VALIDATE(self): - return self.getToken(PostgreSQLParser.VALIDATE, 0) - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alterdomainstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlterdomainstmt" ): - listener.enterAlterdomainstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlterdomainstmt" ): - listener.exitAlterdomainstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlterdomainstmt" ): - return visitor.visitAlterdomainstmt(self) - else: - return visitor.visitChildren(self) - - - - - def alterdomainstmt(self): - - localctx = PostgreSQLParser.AlterdomainstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 832, self.RULE_alterdomainstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7313 - self.match(PostgreSQLParser.ALTER) - self.state = 7314 - self.match(PostgreSQLParser.DOMAIN_P) - self.state = 7315 - self.any_name() - self.state = 7337 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,355,self._ctx) - if la_ == 1: - self.state = 7316 - self.alter_column_default() - pass - - elif la_ == 2: - self.state = 7317 - self.match(PostgreSQLParser.DROP) - self.state = 7318 - self.match(PostgreSQLParser.NOT) - self.state = 7319 - self.match(PostgreSQLParser.NULL_P) - pass - - elif la_ == 3: - self.state = 7320 - self.match(PostgreSQLParser.SET) - self.state = 7321 - self.match(PostgreSQLParser.NOT) - self.state = 7322 - self.match(PostgreSQLParser.NULL_P) - pass - - elif la_ == 4: - self.state = 7323 - self.match(PostgreSQLParser.ADD_P) - self.state = 7324 - self.tableconstraint() - pass - - elif la_ == 5: - self.state = 7325 - self.match(PostgreSQLParser.DROP) - self.state = 7326 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 7329 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,354,self._ctx) - if la_ == 1: - self.state = 7327 - self.match(PostgreSQLParser.IF_P) - self.state = 7328 - self.match(PostgreSQLParser.EXISTS) - - - self.state = 7331 - self.name() - self.state = 7332 - self.opt_drop_behavior() - pass - - elif la_ == 6: - self.state = 7334 - self.match(PostgreSQLParser.VALIDATE) - self.state = 7335 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 7336 - self.name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_asContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_as - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_as" ): - listener.enterOpt_as(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_as" ): - listener.exitOpt_as(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_as" ): - return visitor.visitOpt_as(self) - else: - return visitor.visitChildren(self) - - - - - def opt_as(self): - - localctx = PostgreSQLParser.Opt_asContext(self, self._ctx, self.state) - self.enterRule(localctx, 834, self.RULE_opt_as) - try: - self.state = 7341 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.enterOuterAlt(localctx, 1) - self.state = 7339 - self.match(PostgreSQLParser.AS) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltertsdictionarystmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def definition(self): - return self.getTypedRuleContext(PostgreSQLParser.DefinitionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altertsdictionarystmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltertsdictionarystmt" ): - listener.enterAltertsdictionarystmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltertsdictionarystmt" ): - listener.exitAltertsdictionarystmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltertsdictionarystmt" ): - return visitor.visitAltertsdictionarystmt(self) - else: - return visitor.visitChildren(self) - - - - - def altertsdictionarystmt(self): - - localctx = PostgreSQLParser.AltertsdictionarystmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 836, self.RULE_altertsdictionarystmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7343 - self.match(PostgreSQLParser.ALTER) - self.state = 7344 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7345 - self.match(PostgreSQLParser.SEARCH) - self.state = 7346 - self.match(PostgreSQLParser.DICTIONARY) - self.state = 7347 - self.any_name() - self.state = 7348 - self.definition() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AltertsconfigurationstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALTER(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.ALTER) - else: - return self.getToken(PostgreSQLParser.ALTER, i) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def any_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Any_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,i) - - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def MAPPING(self): - return self.getToken(PostgreSQLParser.MAPPING, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def any_with(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_withContext,0) - - - def any_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_name_listContext,0) - - - def REPLACE(self): - return self.getToken(PostgreSQLParser.REPLACE, 0) - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_altertsconfigurationstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAltertsconfigurationstmt" ): - listener.enterAltertsconfigurationstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAltertsconfigurationstmt" ): - listener.exitAltertsconfigurationstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAltertsconfigurationstmt" ): - return visitor.visitAltertsconfigurationstmt(self) - else: - return visitor.visitChildren(self) - - - - - def altertsconfigurationstmt(self): - - localctx = PostgreSQLParser.AltertsconfigurationstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 838, self.RULE_altertsconfigurationstmt) - try: - self.state = 7422 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,357,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7350 - self.match(PostgreSQLParser.ALTER) - self.state = 7351 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7352 - self.match(PostgreSQLParser.SEARCH) - self.state = 7353 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7354 - self.any_name() - self.state = 7355 - self.match(PostgreSQLParser.ADD_P) - self.state = 7356 - self.match(PostgreSQLParser.MAPPING) - self.state = 7357 - self.match(PostgreSQLParser.FOR) - self.state = 7358 - self.name_list() - self.state = 7359 - self.any_with() - self.state = 7360 - self.any_name_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7362 - self.match(PostgreSQLParser.ALTER) - self.state = 7363 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7364 - self.match(PostgreSQLParser.SEARCH) - self.state = 7365 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7366 - self.any_name() - self.state = 7367 - self.match(PostgreSQLParser.ALTER) - self.state = 7368 - self.match(PostgreSQLParser.MAPPING) - self.state = 7369 - self.match(PostgreSQLParser.FOR) - self.state = 7370 - self.name_list() - self.state = 7371 - self.any_with() - self.state = 7372 - self.any_name_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7374 - self.match(PostgreSQLParser.ALTER) - self.state = 7375 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7376 - self.match(PostgreSQLParser.SEARCH) - self.state = 7377 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7378 - self.any_name() - self.state = 7379 - self.match(PostgreSQLParser.ALTER) - self.state = 7380 - self.match(PostgreSQLParser.MAPPING) - self.state = 7381 - self.match(PostgreSQLParser.REPLACE) - self.state = 7382 - self.any_name() - self.state = 7383 - self.any_with() - self.state = 7384 - self.any_name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7386 - self.match(PostgreSQLParser.ALTER) - self.state = 7387 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7388 - self.match(PostgreSQLParser.SEARCH) - self.state = 7389 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7390 - self.any_name() - self.state = 7391 - self.match(PostgreSQLParser.ALTER) - self.state = 7392 - self.match(PostgreSQLParser.MAPPING) - self.state = 7393 - self.match(PostgreSQLParser.FOR) - self.state = 7394 - self.name_list() - self.state = 7395 - self.match(PostgreSQLParser.REPLACE) - self.state = 7396 - self.any_name() - self.state = 7397 - self.any_with() - self.state = 7398 - self.any_name() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 7400 - self.match(PostgreSQLParser.ALTER) - self.state = 7401 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7402 - self.match(PostgreSQLParser.SEARCH) - self.state = 7403 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7404 - self.any_name() - self.state = 7405 - self.match(PostgreSQLParser.DROP) - self.state = 7406 - self.match(PostgreSQLParser.MAPPING) - self.state = 7407 - self.match(PostgreSQLParser.FOR) - self.state = 7408 - self.name_list() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 7410 - self.match(PostgreSQLParser.ALTER) - self.state = 7411 - self.match(PostgreSQLParser.TEXT_P) - self.state = 7412 - self.match(PostgreSQLParser.SEARCH) - self.state = 7413 - self.match(PostgreSQLParser.CONFIGURATION) - self.state = 7414 - self.any_name() - self.state = 7415 - self.match(PostgreSQLParser.DROP) - self.state = 7416 - self.match(PostgreSQLParser.MAPPING) - self.state = 7417 - self.match(PostgreSQLParser.IF_P) - self.state = 7418 - self.match(PostgreSQLParser.EXISTS) - self.state = 7419 - self.match(PostgreSQLParser.FOR) - self.state = 7420 - self.name_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Any_withContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_any_with - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAny_with" ): - listener.enterAny_with(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAny_with" ): - listener.exitAny_with(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAny_with" ): - return visitor.visitAny_with(self) - else: - return visitor.visitChildren(self) - - - - - def any_with(self): - - localctx = PostgreSQLParser.Any_withContext(self, self._ctx, self.state) - self.enterRule(localctx, 840, self.RULE_any_with) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7424 - self.match(PostgreSQLParser.WITH) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CreateconversionstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opt_default(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_defaultContext,0) - - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def any_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Any_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,i) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def sconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,i) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_createconversionstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCreateconversionstmt" ): - listener.enterCreateconversionstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCreateconversionstmt" ): - listener.exitCreateconversionstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCreateconversionstmt" ): - return visitor.visitCreateconversionstmt(self) - else: - return visitor.visitChildren(self) - - - - - def createconversionstmt(self): - - localctx = PostgreSQLParser.CreateconversionstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 842, self.RULE_createconversionstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7426 - self.match(PostgreSQLParser.CREATE) - self.state = 7427 - self.opt_default() - self.state = 7428 - self.match(PostgreSQLParser.CONVERSION_P) - self.state = 7429 - self.any_name() - self.state = 7430 - self.match(PostgreSQLParser.FOR) - self.state = 7431 - self.sconst() - self.state = 7432 - self.match(PostgreSQLParser.TO) - self.state = 7433 - self.sconst() - self.state = 7434 - self.match(PostgreSQLParser.FROM) - self.state = 7435 - self.any_name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ClusterstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CLUSTER(self): - return self.getToken(PostgreSQLParser.CLUSTER, 0) - - def opt_verbose(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_verboseContext,0) - - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def cluster_index_specification(self): - return self.getTypedRuleContext(PostgreSQLParser.Cluster_index_specificationContext,0) - - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_clusterstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterClusterstmt" ): - listener.enterClusterstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitClusterstmt" ): - listener.exitClusterstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitClusterstmt" ): - return visitor.visitClusterstmt(self) - else: - return visitor.visitChildren(self) - - - - - def clusterstmt(self): - - localctx = PostgreSQLParser.ClusterstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 844, self.RULE_clusterstmt) - try: - self.state = 7450 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,358,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7437 - self.match(PostgreSQLParser.CLUSTER) - self.state = 7438 - self.opt_verbose() - self.state = 7439 - self.qualified_name() - self.state = 7440 - self.cluster_index_specification() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7442 - self.match(PostgreSQLParser.CLUSTER) - self.state = 7443 - self.opt_verbose() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7444 - self.match(PostgreSQLParser.CLUSTER) - self.state = 7445 - self.opt_verbose() - self.state = 7446 - self.name() - self.state = 7447 - self.match(PostgreSQLParser.ON) - self.state = 7448 - self.qualified_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cluster_index_specificationContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cluster_index_specification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCluster_index_specification" ): - listener.enterCluster_index_specification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCluster_index_specification" ): - listener.exitCluster_index_specification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCluster_index_specification" ): - return visitor.visitCluster_index_specification(self) - else: - return visitor.visitChildren(self) - - - - - def cluster_index_specification(self): - - localctx = PostgreSQLParser.Cluster_index_specificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 846, self.RULE_cluster_index_specification) - try: - self.state = 7455 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 7452 - self.match(PostgreSQLParser.USING) - self.state = 7453 - self.name() - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class VacuumstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VACUUM(self): - return self.getToken(PostgreSQLParser.VACUUM, 0) - - def opt_full(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_fullContext,0) - - - def opt_freeze(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_freezeContext,0) - - - def opt_verbose(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_verboseContext,0) - - - def opt_analyze(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_analyzeContext,0) - - - def opt_vacuum_relation_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_vacuum_relation_listContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def vac_analyze_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Vac_analyze_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vacuumstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVacuumstmt" ): - listener.enterVacuumstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVacuumstmt" ): - listener.exitVacuumstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVacuumstmt" ): - return visitor.visitVacuumstmt(self) - else: - return visitor.visitChildren(self) - - - - - def vacuumstmt(self): - - localctx = PostgreSQLParser.VacuumstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 848, self.RULE_vacuumstmt) - try: - self.state = 7470 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,360,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7457 - self.match(PostgreSQLParser.VACUUM) - self.state = 7458 - self.opt_full() - self.state = 7459 - self.opt_freeze() - self.state = 7460 - self.opt_verbose() - self.state = 7461 - self.opt_analyze() - self.state = 7462 - self.opt_vacuum_relation_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7464 - self.match(PostgreSQLParser.VACUUM) - self.state = 7465 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7466 - self.vac_analyze_option_list() - self.state = 7467 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7468 - self.opt_vacuum_relation_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnalyzestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def analyze_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Analyze_keywordContext,0) - - - def opt_verbose(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_verboseContext,0) - - - def opt_vacuum_relation_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_vacuum_relation_listContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def vac_analyze_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Vac_analyze_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_analyzestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnalyzestmt" ): - listener.enterAnalyzestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnalyzestmt" ): - listener.exitAnalyzestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnalyzestmt" ): - return visitor.visitAnalyzestmt(self) - else: - return visitor.visitChildren(self) - - - - - def analyzestmt(self): - - localctx = PostgreSQLParser.AnalyzestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 850, self.RULE_analyzestmt) - try: - self.state = 7482 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,361,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7472 - self.analyze_keyword() - self.state = 7473 - self.opt_verbose() - self.state = 7474 - self.opt_vacuum_relation_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7476 - self.analyze_keyword() - self.state = 7477 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7478 - self.vac_analyze_option_list() - self.state = 7479 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7480 - self.opt_vacuum_relation_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vac_analyze_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def vac_analyze_option_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Vac_analyze_option_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Vac_analyze_option_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vac_analyze_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVac_analyze_option_list" ): - listener.enterVac_analyze_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVac_analyze_option_list" ): - listener.exitVac_analyze_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVac_analyze_option_list" ): - return visitor.visitVac_analyze_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def vac_analyze_option_list(self): - - localctx = PostgreSQLParser.Vac_analyze_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 852, self.RULE_vac_analyze_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7484 - self.vac_analyze_option_elem() - self.state = 7489 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7485 - self.match(PostgreSQLParser.COMMA) - self.state = 7486 - self.vac_analyze_option_elem() - self.state = 7491 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Analyze_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ANALYZE(self): - return self.getToken(PostgreSQLParser.ANALYZE, 0) - - def ANALYSE(self): - return self.getToken(PostgreSQLParser.ANALYSE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_analyze_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnalyze_keyword" ): - listener.enterAnalyze_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnalyze_keyword" ): - listener.exitAnalyze_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnalyze_keyword" ): - return visitor.visitAnalyze_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def analyze_keyword(self): - - localctx = PostgreSQLParser.Analyze_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 854, self.RULE_analyze_keyword) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7492 - _la = self._input.LA(1) - if not(_la==31 or _la==32): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vac_analyze_option_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def vac_analyze_option_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Vac_analyze_option_nameContext,0) - - - def vac_analyze_option_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Vac_analyze_option_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vac_analyze_option_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVac_analyze_option_elem" ): - listener.enterVac_analyze_option_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVac_analyze_option_elem" ): - listener.exitVac_analyze_option_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVac_analyze_option_elem" ): - return visitor.visitVac_analyze_option_elem(self) - else: - return visitor.visitChildren(self) - - - - - def vac_analyze_option_elem(self): - - localctx = PostgreSQLParser.Vac_analyze_option_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 856, self.RULE_vac_analyze_option_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7494 - self.vac_analyze_option_name() - self.state = 7495 - self.vac_analyze_option_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vac_analyze_option_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonreservedword(self): - return self.getTypedRuleContext(PostgreSQLParser.NonreservedwordContext,0) - - - def analyze_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Analyze_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vac_analyze_option_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVac_analyze_option_name" ): - listener.enterVac_analyze_option_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVac_analyze_option_name" ): - listener.exitVac_analyze_option_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVac_analyze_option_name" ): - return visitor.visitVac_analyze_option_name(self) - else: - return visitor.visitChildren(self) - - - - - def vac_analyze_option_name(self): - - localctx = PostgreSQLParser.Vac_analyze_option_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 858, self.RULE_vac_analyze_option_name) - try: - self.state = 7499 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 7497 - self.nonreservedword() - pass - elif token in [31, 32]: - self.enterOuterAlt(localctx, 2) - self.state = 7498 - self.analyze_keyword() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vac_analyze_option_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vac_analyze_option_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVac_analyze_option_arg" ): - listener.enterVac_analyze_option_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVac_analyze_option_arg" ): - listener.exitVac_analyze_option_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVac_analyze_option_arg" ): - return visitor.visitVac_analyze_option_arg(self) - else: - return visitor.visitChildren(self) - - - - - def vac_analyze_option_arg(self): - - localctx = PostgreSQLParser.Vac_analyze_option_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 860, self.RULE_vac_analyze_option_arg) - try: - self.state = 7504 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 60, 61, 80, 92, 96, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 7501 - self.opt_boolean_or_string() - pass - elif token in [12, 13, 658, 660]: - self.enterOuterAlt(localctx, 2) - self.state = 7502 - self.numericonly() - pass - elif token in [3, 6]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_analyzeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def analyze_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Analyze_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_analyze - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_analyze" ): - listener.enterOpt_analyze(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_analyze" ): - listener.exitOpt_analyze(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_analyze" ): - return visitor.visitOpt_analyze(self) - else: - return visitor.visitChildren(self) - - - - - def opt_analyze(self): - - localctx = PostgreSQLParser.Opt_analyzeContext(self, self._ctx, self.state) - self.enterRule(localctx, 862, self.RULE_opt_analyze) - try: - self.state = 7508 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,365,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7506 - self.analyze_keyword() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_verboseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VERBOSE(self): - return self.getToken(PostgreSQLParser.VERBOSE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_verbose - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_verbose" ): - listener.enterOpt_verbose(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_verbose" ): - listener.exitOpt_verbose(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_verbose" ): - return visitor.visitOpt_verbose(self) - else: - return visitor.visitChildren(self) - - - - - def opt_verbose(self): - - localctx = PostgreSQLParser.Opt_verboseContext(self, self._ctx, self.state) - self.enterRule(localctx, 864, self.RULE_opt_verbose) - try: - self.state = 7512 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [128]: - self.enterOuterAlt(localctx, 1) - self.state = 7510 - self.match(PostgreSQLParser.VERBOSE) - pass - elif token in [-1, 2, 7, 31, 32, 33, 35, 43, 44, 45, 46, 53, 57, 61, 65, 71, 88, 92, 105, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_fullContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FULL(self): - return self.getToken(PostgreSQLParser.FULL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_full - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_full" ): - listener.enterOpt_full(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_full" ): - listener.exitOpt_full(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_full" ): - return visitor.visitOpt_full(self) - else: - return visitor.visitChildren(self) - - - - - def opt_full(self): - - localctx = PostgreSQLParser.Opt_fullContext(self, self._ctx, self.state) - self.enterRule(localctx, 866, self.RULE_opt_full) - try: - self.state = 7516 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [113]: - self.enterOuterAlt(localctx, 1) - self.state = 7514 - self.match(PostgreSQLParser.FULL) - pass - elif token in [-1, 2, 7, 31, 32, 33, 35, 43, 44, 45, 46, 53, 57, 61, 65, 71, 88, 92, 105, 112, 116, 119, 123, 124, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_freezeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FREEZE(self): - return self.getToken(PostgreSQLParser.FREEZE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_freeze - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_freeze" ): - listener.enterOpt_freeze(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_freeze" ): - listener.exitOpt_freeze(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_freeze" ): - return visitor.visitOpt_freeze(self) - else: - return visitor.visitChildren(self) - - - - - def opt_freeze(self): - - localctx = PostgreSQLParser.Opt_freezeContext(self, self._ctx, self.state) - self.enterRule(localctx, 868, self.RULE_opt_freeze) - try: - self.state = 7520 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [112]: - self.enterOuterAlt(localctx, 1) - self.state = 7518 - self.match(PostgreSQLParser.FREEZE) - pass - elif token in [-1, 2, 7, 31, 32, 33, 35, 43, 44, 45, 46, 53, 57, 61, 65, 71, 88, 92, 105, 116, 119, 123, 124, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_name_list" ): - listener.enterOpt_name_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_name_list" ): - listener.exitOpt_name_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_name_list" ): - return visitor.visitOpt_name_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_name_list(self): - - localctx = PostgreSQLParser.Opt_name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 870, self.RULE_opt_name_list) - try: - self.state = 7527 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,369,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7522 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7523 - self.name_list() - self.state = 7524 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vacuum_relationContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def opt_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_name_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vacuum_relation - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVacuum_relation" ): - listener.enterVacuum_relation(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVacuum_relation" ): - listener.exitVacuum_relation(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVacuum_relation" ): - return visitor.visitVacuum_relation(self) - else: - return visitor.visitChildren(self) - - - - - def vacuum_relation(self): - - localctx = PostgreSQLParser.Vacuum_relationContext(self, self._ctx, self.state) - self.enterRule(localctx, 872, self.RULE_vacuum_relation) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7529 - self.qualified_name() - self.state = 7530 - self.opt_name_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Vacuum_relation_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def vacuum_relation(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Vacuum_relationContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Vacuum_relationContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_vacuum_relation_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterVacuum_relation_list" ): - listener.enterVacuum_relation_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitVacuum_relation_list" ): - listener.exitVacuum_relation_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitVacuum_relation_list" ): - return visitor.visitVacuum_relation_list(self) - else: - return visitor.visitChildren(self) - - - - - def vacuum_relation_list(self): - - localctx = PostgreSQLParser.Vacuum_relation_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 874, self.RULE_vacuum_relation_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7532 - self.vacuum_relation() - self.state = 7537 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7533 - self.match(PostgreSQLParser.COMMA) - self.state = 7534 - self.vacuum_relation() - self.state = 7539 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_vacuum_relation_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def vacuum_relation_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Vacuum_relation_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_vacuum_relation_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_vacuum_relation_list" ): - listener.enterOpt_vacuum_relation_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_vacuum_relation_list" ): - listener.exitOpt_vacuum_relation_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_vacuum_relation_list" ): - return visitor.visitOpt_vacuum_relation_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_vacuum_relation_list(self): - - localctx = PostgreSQLParser.Opt_vacuum_relation_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 876, self.RULE_opt_vacuum_relation_list) - try: - self.state = 7542 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,371,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7540 - self.vacuum_relation_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExplainstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXPLAIN(self): - return self.getToken(PostgreSQLParser.EXPLAIN, 0) - - def explainablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ExplainablestmtContext,0) - - - def analyze_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Analyze_keywordContext,0) - - - def opt_verbose(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_verboseContext,0) - - - def VERBOSE(self): - return self.getToken(PostgreSQLParser.VERBOSE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def explain_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Explain_option_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explainstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplainstmt" ): - listener.enterExplainstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplainstmt" ): - listener.exitExplainstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplainstmt" ): - return visitor.visitExplainstmt(self) - else: - return visitor.visitChildren(self) - - - - - def explainstmt(self): - - localctx = PostgreSQLParser.ExplainstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 878, self.RULE_explainstmt) - try: - self.state = 7560 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,372,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7544 - self.match(PostgreSQLParser.EXPLAIN) - self.state = 7545 - self.explainablestmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7546 - self.match(PostgreSQLParser.EXPLAIN) - self.state = 7547 - self.analyze_keyword() - self.state = 7548 - self.opt_verbose() - self.state = 7549 - self.explainablestmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7551 - self.match(PostgreSQLParser.EXPLAIN) - self.state = 7552 - self.match(PostgreSQLParser.VERBOSE) - self.state = 7553 - self.explainablestmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7554 - self.match(PostgreSQLParser.EXPLAIN) - self.state = 7555 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7556 - self.explain_option_list() - self.state = 7557 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7558 - self.explainablestmt() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExplainablestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def insertstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.InsertstmtContext,0) - - - def updatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.UpdatestmtContext,0) - - - def deletestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeletestmtContext,0) - - - def declarecursorstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeclarecursorstmtContext,0) - - - def createasstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreateasstmtContext,0) - - - def creatematviewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.CreatematviewstmtContext,0) - - - def refreshmatviewstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.RefreshmatviewstmtContext,0) - - - def executestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ExecutestmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explainablestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplainablestmt" ): - listener.enterExplainablestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplainablestmt" ): - listener.exitExplainablestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplainablestmt" ): - return visitor.visitExplainablestmt(self) - else: - return visitor.visitChildren(self) - - - - - def explainablestmt(self): - - localctx = PostgreSQLParser.ExplainablestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 880, self.RULE_explainablestmt) - try: - self.state = 7571 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,373,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7562 - self.selectstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7563 - self.insertstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7564 - self.updatestmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7565 - self.deletestmt() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 7566 - self.declarecursorstmt() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 7567 - self.createasstmt() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 7568 - self.creatematviewstmt() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 7569 - self.refreshmatviewstmt() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 7570 - self.executestmt() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Explain_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def explain_option_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Explain_option_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Explain_option_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explain_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplain_option_list" ): - listener.enterExplain_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplain_option_list" ): - listener.exitExplain_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplain_option_list" ): - return visitor.visitExplain_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def explain_option_list(self): - - localctx = PostgreSQLParser.Explain_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 882, self.RULE_explain_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7573 - self.explain_option_elem() - self.state = 7578 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7574 - self.match(PostgreSQLParser.COMMA) - self.state = 7575 - self.explain_option_elem() - self.state = 7580 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Explain_option_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def explain_option_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Explain_option_nameContext,0) - - - def explain_option_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Explain_option_argContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explain_option_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplain_option_elem" ): - listener.enterExplain_option_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplain_option_elem" ): - listener.exitExplain_option_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplain_option_elem" ): - return visitor.visitExplain_option_elem(self) - else: - return visitor.visitChildren(self) - - - - - def explain_option_elem(self): - - localctx = PostgreSQLParser.Explain_option_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 884, self.RULE_explain_option_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7581 - self.explain_option_name() - self.state = 7582 - self.explain_option_arg() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Explain_option_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonreservedword(self): - return self.getTypedRuleContext(PostgreSQLParser.NonreservedwordContext,0) - - - def analyze_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Analyze_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explain_option_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplain_option_name" ): - listener.enterExplain_option_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplain_option_name" ): - listener.exitExplain_option_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplain_option_name" ): - return visitor.visitExplain_option_name(self) - else: - return visitor.visitChildren(self) - - - - - def explain_option_name(self): - - localctx = PostgreSQLParser.Explain_option_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 886, self.RULE_explain_option_name) - try: - self.state = 7586 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 7584 - self.nonreservedword() - pass - elif token in [31, 32]: - self.enterOuterAlt(localctx, 2) - self.state = 7585 - self.analyze_keyword() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Explain_option_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_boolean_or_string(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_boolean_or_stringContext,0) - - - def numericonly(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericonlyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explain_option_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplain_option_arg" ): - listener.enterExplain_option_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplain_option_arg" ): - listener.exitExplain_option_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplain_option_arg" ): - return visitor.visitExplain_option_arg(self) - else: - return visitor.visitChildren(self) - - - - - def explain_option_arg(self): - - localctx = PostgreSQLParser.Explain_option_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 888, self.RULE_explain_option_arg) - try: - self.state = 7591 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 60, 61, 80, 92, 96, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 7588 - self.opt_boolean_or_string() - pass - elif token in [12, 13, 658, 660]: - self.enterOuterAlt(localctx, 2) - self.state = 7589 - self.numericonly() - pass - elif token in [3, 6]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PreparestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PREPARE(self): - return self.getToken(PostgreSQLParser.PREPARE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def prep_type_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Prep_type_clauseContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def preparablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.PreparablestmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_preparestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPreparestmt" ): - listener.enterPreparestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPreparestmt" ): - listener.exitPreparestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPreparestmt" ): - return visitor.visitPreparestmt(self) - else: - return visitor.visitChildren(self) - - - - - def preparestmt(self): - - localctx = PostgreSQLParser.PreparestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 890, self.RULE_preparestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7593 - self.match(PostgreSQLParser.PREPARE) - self.state = 7594 - self.name() - self.state = 7595 - self.prep_type_clause() - self.state = 7596 - self.match(PostgreSQLParser.AS) - self.state = 7597 - self.preparablestmt() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Prep_type_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_prep_type_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPrep_type_clause" ): - listener.enterPrep_type_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPrep_type_clause" ): - listener.exitPrep_type_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPrep_type_clause" ): - return visitor.visitPrep_type_clause(self) - else: - return visitor.visitChildren(self) - - - - - def prep_type_clause(self): - - localctx = PostgreSQLParser.Prep_type_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 892, self.RULE_prep_type_clause) - try: - self.state = 7604 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.enterOuterAlt(localctx, 1) - self.state = 7599 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7600 - self.type_list() - self.state = 7601 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [36]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PreparablestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def insertstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.InsertstmtContext,0) - - - def updatestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.UpdatestmtContext,0) - - - def deletestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.DeletestmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_preparablestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPreparablestmt" ): - listener.enterPreparablestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPreparablestmt" ): - listener.exitPreparablestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPreparablestmt" ): - return visitor.visitPreparablestmt(self) - else: - return visitor.visitChildren(self) - - - - - def preparablestmt(self): - - localctx = PostgreSQLParser.PreparablestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 894, self.RULE_preparablestmt) - try: - self.state = 7610 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,378,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7606 - self.selectstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7607 - self.insertstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7608 - self.updatestmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7609 - self.deletestmt() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ExecutestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def execute_param_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Execute_param_clauseContext,0) - - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def opttemp(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def create_as_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Create_as_targetContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def opt_with_data(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_dataContext,0) - - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_executestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExecutestmt" ): - listener.enterExecutestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExecutestmt" ): - listener.exitExecutestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExecutestmt" ): - return visitor.visitExecutestmt(self) - else: - return visitor.visitChildren(self) - - - - - def executestmt(self): - - localctx = PostgreSQLParser.ExecutestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 896, self.RULE_executestmt) - try: - self.state = 7639 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,379,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7612 - self.match(PostgreSQLParser.EXECUTE) - self.state = 7613 - self.name() - self.state = 7614 - self.execute_param_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7616 - self.match(PostgreSQLParser.CREATE) - self.state = 7617 - self.opttemp() - self.state = 7618 - self.match(PostgreSQLParser.TABLE) - self.state = 7619 - self.create_as_target() - self.state = 7620 - self.match(PostgreSQLParser.AS) - self.state = 7621 - self.match(PostgreSQLParser.EXECUTE) - self.state = 7622 - self.name() - self.state = 7623 - self.execute_param_clause() - self.state = 7624 - self.opt_with_data() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7626 - self.match(PostgreSQLParser.CREATE) - self.state = 7627 - self.opttemp() - self.state = 7628 - self.match(PostgreSQLParser.TABLE) - self.state = 7629 - self.match(PostgreSQLParser.IF_P) - self.state = 7630 - self.match(PostgreSQLParser.NOT) - self.state = 7631 - self.match(PostgreSQLParser.EXISTS) - self.state = 7632 - self.create_as_target() - self.state = 7633 - self.match(PostgreSQLParser.AS) - self.state = 7634 - self.match(PostgreSQLParser.EXECUTE) - self.state = 7635 - self.name() - self.state = 7636 - self.execute_param_clause() - self.state = 7637 - self.opt_with_data() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Execute_param_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_execute_param_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExecute_param_clause" ): - listener.enterExecute_param_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExecute_param_clause" ): - listener.exitExecute_param_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExecute_param_clause" ): - return visitor.visitExecute_param_clause(self) - else: - return visitor.visitChildren(self) - - - - - def execute_param_clause(self): - - localctx = PostgreSQLParser.Execute_param_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 898, self.RULE_execute_param_clause) - try: - self.state = 7646 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,380,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7641 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7642 - self.expr_list() - self.state = 7643 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DeallocatestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEALLOCATE(self): - return self.getToken(PostgreSQLParser.DEALLOCATE, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def PREPARE(self): - return self.getToken(PostgreSQLParser.PREPARE, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_deallocatestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeallocatestmt" ): - listener.enterDeallocatestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeallocatestmt" ): - listener.exitDeallocatestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeallocatestmt" ): - return visitor.visitDeallocatestmt(self) - else: - return visitor.visitChildren(self) - - - - - def deallocatestmt(self): - - localctx = PostgreSQLParser.DeallocatestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 900, self.RULE_deallocatestmt) - try: - self.state = 7658 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,381,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7648 - self.match(PostgreSQLParser.DEALLOCATE) - self.state = 7649 - self.name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7650 - self.match(PostgreSQLParser.DEALLOCATE) - self.state = 7651 - self.match(PostgreSQLParser.PREPARE) - self.state = 7652 - self.name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7653 - self.match(PostgreSQLParser.DEALLOCATE) - self.state = 7654 - self.match(PostgreSQLParser.ALL) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7655 - self.match(PostgreSQLParser.DEALLOCATE) - self.state = 7656 - self.match(PostgreSQLParser.PREPARE) - self.state = 7657 - self.match(PostgreSQLParser.ALL) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class InsertstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_with_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_clauseContext,0) - - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def insert_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Insert_targetContext,0) - - - def insert_rest(self): - return self.getTypedRuleContext(PostgreSQLParser.Insert_restContext,0) - - - def opt_on_conflict(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_on_conflictContext,0) - - - def returning_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Returning_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_insertstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInsertstmt" ): - listener.enterInsertstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInsertstmt" ): - listener.exitInsertstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInsertstmt" ): - return visitor.visitInsertstmt(self) - else: - return visitor.visitChildren(self) - - - - - def insertstmt(self): - - localctx = PostgreSQLParser.InsertstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 902, self.RULE_insertstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7660 - self.opt_with_clause() - self.state = 7661 - self.match(PostgreSQLParser.INSERT) - self.state = 7662 - self.match(PostgreSQLParser.INTO) - self.state = 7663 - self.insert_target() - self.state = 7664 - self.insert_rest() - self.state = 7665 - self.opt_on_conflict() - self.state = 7666 - self.returning_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Insert_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_insert_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInsert_target" ): - listener.enterInsert_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInsert_target" ): - listener.exitInsert_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInsert_target" ): - return visitor.visitInsert_target(self) - else: - return visitor.visitChildren(self) - - - - - def insert_target(self): - - localctx = PostgreSQLParser.Insert_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 904, self.RULE_insert_target) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7668 - self.qualified_name() - self.state = 7671 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==36: - self.state = 7669 - self.match(PostgreSQLParser.AS) - self.state = 7670 - self.colid() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Insert_restContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def OVERRIDING(self): - return self.getToken(PostgreSQLParser.OVERRIDING, 0) - - def override_kind(self): - return self.getTypedRuleContext(PostgreSQLParser.Override_kindContext,0) - - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def insert_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Insert_column_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def VALUES(self): - return self.getToken(PostgreSQLParser.VALUES, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_insert_rest - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInsert_rest" ): - listener.enterInsert_rest(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInsert_rest" ): - listener.exitInsert_rest(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInsert_rest" ): - return visitor.visitInsert_rest(self) - else: - return visitor.visitChildren(self) - - - - - def insert_rest(self): - - localctx = PostgreSQLParser.Insert_restContext(self, self._ctx, self.state) - self.enterRule(localctx, 906, self.RULE_insert_rest) - self._la = 0 # Token type - try: - self.state = 7692 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,384,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7673 - self.selectstmt() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7674 - self.match(PostgreSQLParser.OVERRIDING) - self.state = 7675 - self.override_kind() - self.state = 7676 - self.match(PostgreSQLParser.VALUE_P) - self.state = 7677 - self.selectstmt() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 7679 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7680 - self.insert_column_list() - self.state = 7681 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7686 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==463: - self.state = 7682 - self.match(PostgreSQLParser.OVERRIDING) - self.state = 7683 - self.override_kind() - self.state = 7684 - self.match(PostgreSQLParser.VALUE_P) - - - self.state = 7688 - self.selectstmt() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 7690 - self.match(PostgreSQLParser.DEFAULT) - self.state = 7691 - self.match(PostgreSQLParser.VALUES) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Override_kindContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def SYSTEM_P(self): - return self.getToken(PostgreSQLParser.SYSTEM_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_override_kind - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOverride_kind" ): - listener.enterOverride_kind(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOverride_kind" ): - listener.exitOverride_kind(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOverride_kind" ): - return visitor.visitOverride_kind(self) - else: - return visitor.visitChildren(self) - - - - - def override_kind(self): - - localctx = PostgreSQLParser.Override_kindContext(self, self._ctx, self.state) - self.enterRule(localctx, 908, self.RULE_override_kind) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7694 - _la = self._input.LA(1) - if not(_la==99 or _la==342): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Insert_column_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def insert_column_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Insert_column_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Insert_column_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_insert_column_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInsert_column_list" ): - listener.enterInsert_column_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInsert_column_list" ): - listener.exitInsert_column_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInsert_column_list" ): - return visitor.visitInsert_column_list(self) - else: - return visitor.visitChildren(self) - - - - - def insert_column_list(self): - - localctx = PostgreSQLParser.Insert_column_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 910, self.RULE_insert_column_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7696 - self.insert_column_item() - self.state = 7701 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7697 - self.match(PostgreSQLParser.COMMA) - self.state = 7698 - self.insert_column_item() - self.state = 7703 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Insert_column_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def opt_indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_indirectionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_insert_column_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInsert_column_item" ): - listener.enterInsert_column_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInsert_column_item" ): - listener.exitInsert_column_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInsert_column_item" ): - return visitor.visitInsert_column_item(self) - else: - return visitor.visitChildren(self) - - - - - def insert_column_item(self): - - localctx = PostgreSQLParser.Insert_column_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 912, self.RULE_insert_column_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7704 - self.colid() - self.state = 7705 - self.opt_indirection() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_on_conflictContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def CONFLICT(self): - return self.getToken(PostgreSQLParser.CONFLICT, 0) - - def opt_conf_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_conf_exprContext,0) - - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_clause_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_clause_listContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def NOTHING(self): - return self.getToken(PostgreSQLParser.NOTHING, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_on_conflict - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_on_conflict" ): - listener.enterOpt_on_conflict(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_on_conflict" ): - listener.exitOpt_on_conflict(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_on_conflict" ): - return visitor.visitOpt_on_conflict(self) - else: - return visitor.visitChildren(self) - - - - - def opt_on_conflict(self): - - localctx = PostgreSQLParser.Opt_on_conflictContext(self, self._ctx, self.state) - self.enterRule(localctx, 914, self.RULE_opt_on_conflict) - try: - self.state = 7720 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [80]: - self.enterOuterAlt(localctx, 1) - self.state = 7707 - self.match(PostgreSQLParser.ON) - self.state = 7708 - self.match(PostgreSQLParser.CONFLICT) - self.state = 7709 - self.opt_conf_expr() - self.state = 7710 - self.match(PostgreSQLParser.DO) - self.state = 7717 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [362]: - self.state = 7711 - self.match(PostgreSQLParser.UPDATE) - self.state = 7712 - self.match(PostgreSQLParser.SET) - self.state = 7713 - self.set_clause_list() - self.state = 7714 - self.where_clause() - pass - elif token in [263]: - self.state = 7716 - self.match(PostgreSQLParser.NOTHING) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_conf_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def index_params(self): - return self.getTypedRuleContext(PostgreSQLParser.Index_paramsContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_conf_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_conf_expr" ): - listener.enterOpt_conf_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_conf_expr" ): - listener.exitOpt_conf_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_conf_expr" ): - return visitor.visitOpt_conf_expr(self) - else: - return visitor.visitChildren(self) - - - - - def opt_conf_expr(self): - - localctx = PostgreSQLParser.Opt_conf_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 916, self.RULE_opt_conf_expr) - try: - self.state = 7731 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.enterOuterAlt(localctx, 1) - self.state = 7722 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7723 - self.index_params() - self.state = 7724 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7725 - self.where_clause() - pass - elif token in [80]: - self.enterOuterAlt(localctx, 2) - self.state = 7727 - self.match(PostgreSQLParser.ON) - self.state = 7728 - self.match(PostgreSQLParser.CONSTRAINT) - self.state = 7729 - self.name() - pass - elif token in [57]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Returning_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RETURNING(self): - return self.getToken(PostgreSQLParser.RETURNING, 0) - - def target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Target_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_returning_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReturning_clause" ): - listener.enterReturning_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReturning_clause" ): - listener.exitReturning_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReturning_clause" ): - return visitor.visitReturning_clause(self) - else: - return visitor.visitChildren(self) - - - - - def returning_clause(self): - - localctx = PostgreSQLParser.Returning_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 918, self.RULE_returning_clause) - try: - self.state = 7736 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [87]: - self.enterOuterAlt(localctx, 1) - self.state = 7733 - self.match(PostgreSQLParser.RETURNING) - self.state = 7734 - self.target_list() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MergestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def MERGE(self): - return self.getToken(PostgreSQLParser.MERGE, 0) - - def qualified_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Qualified_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,i) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def merge_insert_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Merge_insert_clauseContext,0) - - - def merge_update_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Merge_update_clauseContext,0) - - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def alias_clause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Alias_clauseContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Alias_clauseContext,i) - - - def merge_delete_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Merge_delete_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_mergestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMergestmt" ): - listener.enterMergestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMergestmt" ): - listener.exitMergestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMergestmt" ): - return visitor.visitMergestmt(self) - else: - return visitor.visitChildren(self) - - - - - def mergestmt(self): - - localctx = PostgreSQLParser.MergestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 920, self.RULE_mergestmt) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7738 - self.match(PostgreSQLParser.MERGE) - self.state = 7740 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==71: - self.state = 7739 - self.match(PostgreSQLParser.INTO) - - - self.state = 7742 - self.qualified_name() - self.state = 7744 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2459027080864595968) != 0) or ((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & -113665638399) != 0) or ((((_la - 156)) & ~0x3f) == 0 and ((1 << (_la - 156)) & -1) != 0) or ((((_la - 220)) & ~0x3f) == 0 and ((1 << (_la - 220)) & -9663676417) != 0) or ((((_la - 284)) & ~0x3f) == 0 and ((1 << (_la - 284)) & -1) != 0) or ((((_la - 348)) & ~0x3f) == 0 and ((1 << (_la - 348)) & -1) != 0) or ((((_la - 412)) & ~0x3f) == 0 and ((1 << (_la - 412)) & -1152925902653358081) != 0) or ((((_la - 476)) & ~0x3f) == 0 and ((1 << (_la - 476)) & -8796764110849) != 0) or ((((_la - 540)) & ~0x3f) == 0 and ((1 << (_la - 540)) & -1) != 0) or ((((_la - 604)) & ~0x3f) == 0 and ((1 << (_la - 604)) & 432345718846390271) != 0): - self.state = 7743 - self.alias_clause() - - - self.state = 7746 - self.match(PostgreSQLParser.USING) - self.state = 7749 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 7747 - self.select_with_parens() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 7748 - self.qualified_name() - pass - else: - raise NoViableAltException(self) - - self.state = 7752 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2459027080864595968) != 0) or ((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & -113665638399) != 0) or ((((_la - 156)) & ~0x3f) == 0 and ((1 << (_la - 156)) & -1) != 0) or ((((_la - 220)) & ~0x3f) == 0 and ((1 << (_la - 220)) & -9663676417) != 0) or ((((_la - 284)) & ~0x3f) == 0 and ((1 << (_la - 284)) & -1) != 0) or ((((_la - 348)) & ~0x3f) == 0 and ((1 << (_la - 348)) & -1) != 0) or ((((_la - 412)) & ~0x3f) == 0 and ((1 << (_la - 412)) & -1152925902653358081) != 0) or ((((_la - 476)) & ~0x3f) == 0 and ((1 << (_la - 476)) & -8796764110849) != 0) or ((((_la - 540)) & ~0x3f) == 0 and ((1 << (_la - 540)) & -1) != 0) or ((((_la - 604)) & ~0x3f) == 0 and ((1 << (_la - 604)) & 432345718846390271) != 0): - self.state = 7751 - self.alias_clause() - - - self.state = 7754 - self.match(PostgreSQLParser.ON) - self.state = 7755 - self.a_expr() - self.state = 7764 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,396,self._ctx) - if la_ == 1: - self.state = 7756 - self.merge_insert_clause() - self.state = 7758 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,394,self._ctx) - if la_ == 1: - self.state = 7757 - self.merge_update_clause() - - - pass - - elif la_ == 2: - self.state = 7760 - self.merge_update_clause() - self.state = 7762 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,395,self._ctx) - if la_ == 1: - self.state = 7761 - self.merge_insert_clause() - - - pass - - - self.state = 7767 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==102: - self.state = 7766 - self.merge_delete_clause() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Merge_insert_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def MATCHED(self): - return self.getToken(PostgreSQLParser.MATCHED, 0) - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def values_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Values_clauseContext,0) - - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def insert_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Insert_column_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_merge_insert_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMerge_insert_clause" ): - listener.enterMerge_insert_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMerge_insert_clause" ): - listener.exitMerge_insert_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMerge_insert_clause" ): - return visitor.visitMerge_insert_clause(self) - else: - return visitor.visitChildren(self) - - - - - def merge_insert_clause(self): - - localctx = PostgreSQLParser.Merge_insert_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 922, self.RULE_merge_insert_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7769 - self.match(PostgreSQLParser.WHEN) - self.state = 7770 - self.match(PostgreSQLParser.NOT) - self.state = 7771 - self.match(PostgreSQLParser.MATCHED) - self.state = 7774 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==33: - self.state = 7772 - self.match(PostgreSQLParser.AND) - self.state = 7773 - self.a_expr() - - - self.state = 7777 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==93: - self.state = 7776 - self.match(PostgreSQLParser.THEN) - - - self.state = 7779 - self.match(PostgreSQLParser.INSERT) - self.state = 7784 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==2: - self.state = 7780 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7781 - self.insert_column_list() - self.state = 7782 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - self.state = 7786 - self.values_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Merge_update_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def MATCHED(self): - return self.getToken(PostgreSQLParser.MATCHED, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_clause_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_clause_listContext,0) - - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_merge_update_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMerge_update_clause" ): - listener.enterMerge_update_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMerge_update_clause" ): - listener.exitMerge_update_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMerge_update_clause" ): - return visitor.visitMerge_update_clause(self) - else: - return visitor.visitChildren(self) - - - - - def merge_update_clause(self): - - localctx = PostgreSQLParser.Merge_update_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 924, self.RULE_merge_update_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7788 - self.match(PostgreSQLParser.WHEN) - self.state = 7789 - self.match(PostgreSQLParser.MATCHED) - self.state = 7792 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==33: - self.state = 7790 - self.match(PostgreSQLParser.AND) - self.state = 7791 - self.a_expr() - - - self.state = 7795 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==93: - self.state = 7794 - self.match(PostgreSQLParser.THEN) - - - self.state = 7797 - self.match(PostgreSQLParser.UPDATE) - self.state = 7798 - self.match(PostgreSQLParser.SET) - self.state = 7799 - self.set_clause_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Merge_delete_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def MATCHED(self): - return self.getToken(PostgreSQLParser.MATCHED, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_merge_delete_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMerge_delete_clause" ): - listener.enterMerge_delete_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMerge_delete_clause" ): - listener.exitMerge_delete_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMerge_delete_clause" ): - return visitor.visitMerge_delete_clause(self) - else: - return visitor.visitChildren(self) - - - - - def merge_delete_clause(self): - - localctx = PostgreSQLParser.Merge_delete_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 926, self.RULE_merge_delete_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7801 - self.match(PostgreSQLParser.WHEN) - self.state = 7802 - self.match(PostgreSQLParser.MATCHED) - self.state = 7804 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==93: - self.state = 7803 - self.match(PostgreSQLParser.THEN) - - - self.state = 7806 - self.match(PostgreSQLParser.DELETE_P) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DeletestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_with_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_clauseContext,0) - - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def relation_expr_opt_alias(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_opt_aliasContext,0) - - - def using_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Using_clauseContext,0) - - - def where_or_current_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_or_current_clauseContext,0) - - - def returning_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Returning_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_deletestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeletestmt" ): - listener.enterDeletestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeletestmt" ): - listener.exitDeletestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeletestmt" ): - return visitor.visitDeletestmt(self) - else: - return visitor.visitChildren(self) - - - - - def deletestmt(self): - - localctx = PostgreSQLParser.DeletestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 928, self.RULE_deletestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7808 - self.opt_with_clause() - self.state = 7809 - self.match(PostgreSQLParser.DELETE_P) - self.state = 7810 - self.match(PostgreSQLParser.FROM) - self.state = 7811 - self.relation_expr_opt_alias() - self.state = 7812 - self.using_clause() - self.state = 7813 - self.where_or_current_clause() - self.state = 7814 - self.returning_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Using_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def from_list(self): - return self.getTypedRuleContext(PostgreSQLParser.From_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_using_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUsing_clause" ): - listener.enterUsing_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUsing_clause" ): - listener.exitUsing_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUsing_clause" ): - return visitor.visitUsing_clause(self) - else: - return visitor.visitChildren(self) - - - - - def using_clause(self): - - localctx = PostgreSQLParser.Using_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 930, self.RULE_using_clause) - try: - self.state = 7819 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 7816 - self.match(PostgreSQLParser.USING) - self.state = 7817 - self.from_list() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 87, 88, 92, 103, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class LockstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LOCK_P(self): - return self.getToken(PostgreSQLParser.LOCK_P, 0) - - def opt_table(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_tableContext,0) - - - def relation_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_listContext,0) - - - def opt_lock(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_lockContext,0) - - - def opt_nowait(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_nowaitContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_lockstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLockstmt" ): - listener.enterLockstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLockstmt" ): - listener.exitLockstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLockstmt" ): - return visitor.visitLockstmt(self) - else: - return visitor.visitChildren(self) - - - - - def lockstmt(self): - - localctx = PostgreSQLParser.LockstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 932, self.RULE_lockstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7821 - self.match(PostgreSQLParser.LOCK_P) - self.state = 7822 - self.opt_table() - self.state = 7823 - self.relation_expr_list() - self.state = 7824 - self.opt_lock() - self.state = 7825 - self.opt_nowait() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_lockContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def lock_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Lock_typeContext,0) - - - def MODE(self): - return self.getToken(PostgreSQLParser.MODE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_lock - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_lock" ): - listener.enterOpt_lock(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_lock" ): - listener.exitOpt_lock(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_lock" ): - return visitor.visitOpt_lock(self) - else: - return visitor.visitChildren(self) - - - - - def opt_lock(self): - - localctx = PostgreSQLParser.Opt_lockContext(self, self._ctx, self.state) - self.enterRule(localctx, 934, self.RULE_opt_lock) - try: - self.state = 7832 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [68]: - self.enterOuterAlt(localctx, 1) - self.state = 7827 - self.match(PostgreSQLParser.IN_P) - self.state = 7828 - self.lock_type() - self.state = 7829 - self.match(PostgreSQLParser.MODE) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 265, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Lock_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ACCESS(self): - return self.getToken(PostgreSQLParser.ACCESS, 0) - - def SHARE(self): - return self.getToken(PostgreSQLParser.SHARE, 0) - - def EXCLUSIVE(self): - return self.getToken(PostgreSQLParser.EXCLUSIVE, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_lock_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLock_type" ): - listener.enterLock_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLock_type" ): - listener.exitLock_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLock_type" ): - return visitor.visitLock_type(self) - else: - return visitor.visitChildren(self) - - - - - def lock_type(self): - - localctx = PostgreSQLParser.Lock_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 936, self.RULE_lock_type) - self._la = 0 # Token type - try: - self.state = 7846 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [131]: - self.enterOuterAlt(localctx, 1) - self.state = 7834 - self.match(PostgreSQLParser.ACCESS) - self.state = 7835 - _la = self._input.LA(1) - if not(_la==201 or _la==327): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [407]: - self.enterOuterAlt(localctx, 2) - self.state = 7836 - self.match(PostgreSQLParser.ROW) - self.state = 7837 - _la = self._input.LA(1) - if not(_la==201 or _la==327): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - elif token in [327]: - self.enterOuterAlt(localctx, 3) - self.state = 7838 - self.match(PostgreSQLParser.SHARE) - self.state = 7843 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [362]: - self.state = 7839 - self.match(PostgreSQLParser.UPDATE) - self.state = 7840 - self.match(PostgreSQLParser.EXCLUSIVE) - pass - elif token in [407]: - self.state = 7841 - self.match(PostgreSQLParser.ROW) - self.state = 7842 - self.match(PostgreSQLParser.EXCLUSIVE) - pass - elif token in [256]: - pass - else: - pass - pass - elif token in [201]: - self.enterOuterAlt(localctx, 4) - self.state = 7845 - self.match(PostgreSQLParser.EXCLUSIVE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_nowaitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOWAIT(self): - return self.getToken(PostgreSQLParser.NOWAIT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_nowait - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_nowait" ): - listener.enterOpt_nowait(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_nowait" ): - listener.exitOpt_nowait(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_nowait" ): - return visitor.visitOpt_nowait(self) - else: - return visitor.visitChildren(self) - - - - - def opt_nowait(self): - - localctx = PostgreSQLParser.Opt_nowaitContext(self, self._ctx, self.state) - self.enterRule(localctx, 938, self.RULE_opt_nowait) - try: - self.state = 7850 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [265]: - self.enterOuterAlt(localctx, 1) - self.state = 7848 - self.match(PostgreSQLParser.NOWAIT) - pass - elif token in [-1, 2, 7, 31, 32, 46, 57, 61, 65, 71, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_nowait_or_skipContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOWAIT(self): - return self.getToken(PostgreSQLParser.NOWAIT, 0) - - def SKIP_P(self): - return self.getToken(PostgreSQLParser.SKIP_P, 0) - - def LOCKED(self): - return self.getToken(PostgreSQLParser.LOCKED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_nowait_or_skip - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_nowait_or_skip" ): - listener.enterOpt_nowait_or_skip(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_nowait_or_skip" ): - listener.exitOpt_nowait_or_skip(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_nowait_or_skip" ): - return visitor.visitOpt_nowait_or_skip(self) - else: - return visitor.visitChildren(self) - - - - - def opt_nowait_or_skip(self): - - localctx = PostgreSQLParser.Opt_nowait_or_skipContext(self, self._ctx, self.state) - self.enterRule(localctx, 940, self.RULE_opt_nowait_or_skip) - try: - self.state = 7856 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [265]: - self.enterOuterAlt(localctx, 1) - self.state = 7852 - self.match(PostgreSQLParser.NOWAIT) - pass - elif token in [465]: - self.enterOuterAlt(localctx, 2) - self.state = 7853 - self.match(PostgreSQLParser.SKIP_P) - self.state = 7854 - self.match(PostgreSQLParser.LOCKED) - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 62, 65, 71, 74, 79, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class UpdatestmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_with_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_with_clauseContext,0) - - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def relation_expr_opt_alias(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_expr_opt_aliasContext,0) - - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def set_clause_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_clause_listContext,0) - - - def from_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.From_clauseContext,0) - - - def where_or_current_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_or_current_clauseContext,0) - - - def returning_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Returning_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_updatestmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUpdatestmt" ): - listener.enterUpdatestmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUpdatestmt" ): - listener.exitUpdatestmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUpdatestmt" ): - return visitor.visitUpdatestmt(self) - else: - return visitor.visitChildren(self) - - - - - def updatestmt(self): - - localctx = PostgreSQLParser.UpdatestmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 942, self.RULE_updatestmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7858 - self.opt_with_clause() - self.state = 7859 - self.match(PostgreSQLParser.UPDATE) - self.state = 7860 - self.relation_expr_opt_alias() - self.state = 7861 - self.match(PostgreSQLParser.SET) - self.state = 7862 - self.set_clause_list() - self.state = 7863 - self.from_clause() - self.state = 7864 - self.where_or_current_clause() - self.state = 7865 - self.returning_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_clause_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def set_clause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Set_clauseContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Set_clauseContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_clause_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_clause_list" ): - listener.enterSet_clause_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_clause_list" ): - listener.exitSet_clause_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_clause_list" ): - return visitor.visitSet_clause_list(self) - else: - return visitor.visitChildren(self) - - - - - def set_clause_list(self): - - localctx = PostgreSQLParser.Set_clause_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 944, self.RULE_set_clause_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7867 - self.set_clause() - self.state = 7872 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7868 - self.match(PostgreSQLParser.COMMA) - self.state = 7869 - self.set_clause() - self.state = 7874 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def set_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_targetContext,0) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def set_target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Set_target_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_clause" ): - listener.enterSet_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_clause" ): - listener.exitSet_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_clause" ): - return visitor.visitSet_clause(self) - else: - return visitor.visitChildren(self) - - - - - def set_clause(self): - - localctx = PostgreSQLParser.Set_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 946, self.RULE_set_clause) - try: - self.state = 7885 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 7875 - self.set_target() - self.state = 7876 - self.match(PostgreSQLParser.EQUAL) - self.state = 7877 - self.a_expr() - pass - elif token in [2]: - self.enterOuterAlt(localctx, 2) - self.state = 7879 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7880 - self.set_target_list() - self.state = 7881 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 7882 - self.match(PostgreSQLParser.EQUAL) - self.state = 7883 - self.a_expr() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def opt_indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_indirectionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_target" ): - listener.enterSet_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_target" ): - listener.exitSet_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_target" ): - return visitor.visitSet_target(self) - else: - return visitor.visitChildren(self) - - - - - def set_target(self): - - localctx = PostgreSQLParser.Set_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 948, self.RULE_set_target) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7887 - self.colid() - self.state = 7888 - self.opt_indirection() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Set_target_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def set_target(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Set_targetContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Set_targetContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_set_target_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSet_target_list" ): - listener.enterSet_target_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSet_target_list" ): - listener.exitSet_target_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSet_target_list" ): - return visitor.visitSet_target_list(self) - else: - return visitor.visitChildren(self) - - - - - def set_target_list(self): - - localctx = PostgreSQLParser.Set_target_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 950, self.RULE_set_target_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7890 - self.set_target() - self.state = 7895 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 7891 - self.match(PostgreSQLParser.COMMA) - self.state = 7892 - self.set_target() - self.state = 7897 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class DeclarecursorstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DECLARE(self): - return self.getToken(PostgreSQLParser.DECLARE, 0) - - def cursor_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_nameContext,0) - - - def cursor_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_optionsContext,0) - - - def CURSOR(self): - return self.getToken(PostgreSQLParser.CURSOR, 0) - - def opt_hold(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_holdContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_declarecursorstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDeclarecursorstmt" ): - listener.enterDeclarecursorstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDeclarecursorstmt" ): - listener.exitDeclarecursorstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDeclarecursorstmt" ): - return visitor.visitDeclarecursorstmt(self) - else: - return visitor.visitChildren(self) - - - - - def declarecursorstmt(self): - - localctx = PostgreSQLParser.DeclarecursorstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 952, self.RULE_declarecursorstmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7898 - self.match(PostgreSQLParser.DECLARE) - self.state = 7899 - self.cursor_name() - self.state = 7900 - self.cursor_options() - self.state = 7901 - self.match(PostgreSQLParser.CURSOR) - self.state = 7902 - self.opt_hold() - self.state = 7903 - self.match(PostgreSQLParser.FOR) - self.state = 7904 - self.selectstmt() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cursor_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cursor_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCursor_name" ): - listener.enterCursor_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCursor_name" ): - listener.exitCursor_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCursor_name" ): - return visitor.visitCursor_name(self) - else: - return visitor.visitChildren(self) - - - - - def cursor_name(self): - - localctx = PostgreSQLParser.Cursor_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 954, self.RULE_cursor_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 7906 - self.name() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cursor_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.NO) - else: - return self.getToken(PostgreSQLParser.NO, i) - - def SCROLL(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.SCROLL) - else: - return self.getToken(PostgreSQLParser.SCROLL, i) - - def BINARY(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.BINARY) - else: - return self.getToken(PostgreSQLParser.BINARY, i) - - def INSENSITIVE(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.INSENSITIVE) - else: - return self.getToken(PostgreSQLParser.INSENSITIVE, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cursor_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCursor_options" ): - listener.enterCursor_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCursor_options" ): - listener.exitCursor_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCursor_options" ): - return visitor.visitCursor_options(self) - else: - return visitor.visitChildren(self) - - - - - def cursor_options(self): - - localctx = PostgreSQLParser.Cursor_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 956, self.RULE_cursor_options) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7915 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==107 or _la==231 or _la==262 or _la==317: - self.state = 7913 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262]: - self.state = 7908 - self.match(PostgreSQLParser.NO) - self.state = 7909 - self.match(PostgreSQLParser.SCROLL) - pass - elif token in [317]: - self.state = 7910 - self.match(PostgreSQLParser.SCROLL) - pass - elif token in [107]: - self.state = 7911 - self.match(PostgreSQLParser.BINARY) - pass - elif token in [231]: - self.state = 7912 - self.match(PostgreSQLParser.INSENSITIVE) - pass - else: - raise NoViableAltException(self) - - self.state = 7917 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_holdContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def HOLD(self): - return self.getToken(PostgreSQLParser.HOLD, 0) - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_hold - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_hold" ): - listener.enterOpt_hold(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_hold" ): - listener.exitOpt_hold(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_hold" ): - return visitor.visitOpt_hold(self) - else: - return visitor.visitChildren(self) - - - - - def opt_hold(self): - - localctx = PostgreSQLParser.Opt_holdContext(self, self._ctx, self.state) - self.enterRule(localctx, 958, self.RULE_opt_hold) - try: - self.state = 7923 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [105]: - self.enterOuterAlt(localctx, 2) - self.state = 7919 - self.match(PostgreSQLParser.WITH) - self.state = 7920 - self.match(PostgreSQLParser.HOLD) - pass - elif token in [372]: - self.enterOuterAlt(localctx, 3) - self.state = 7921 - self.match(PostgreSQLParser.WITHOUT) - self.state = 7922 - self.match(PostgreSQLParser.HOLD) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SelectstmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def select_no_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_no_parensContext,0) - - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_selectstmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelectstmt" ): - listener.enterSelectstmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelectstmt" ): - listener.exitSelectstmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelectstmt" ): - return visitor.visitSelectstmt(self) - else: - return visitor.visitChildren(self) - - - - - def selectstmt(self): - - localctx = PostgreSQLParser.SelectstmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 960, self.RULE_selectstmt) - try: - self.state = 7927 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,416,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7925 - self.select_no_parens() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7926 - self.select_with_parens() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_with_parensContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def select_no_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_no_parensContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_with_parens - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_with_parens" ): - listener.enterSelect_with_parens(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_with_parens" ): - listener.exitSelect_with_parens(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_with_parens" ): - return visitor.visitSelect_with_parens(self) - else: - return visitor.visitChildren(self) - - - - - def select_with_parens(self): - - localctx = PostgreSQLParser.Select_with_parensContext(self, self._ctx, self.state) - self.enterRule(localctx, 962, self.RULE_select_with_parens) - try: - self.state = 7937 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,417,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 7929 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7930 - self.select_no_parens() - self.state = 7931 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 7933 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 7934 - self.select_with_parens() - self.state = 7935 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_no_parensContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def select_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_clauseContext,0) - - - def opt_sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_sort_clauseContext,0) - - - def for_locking_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.For_locking_clauseContext,0) - - - def opt_select_limit(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_select_limitContext,0) - - - def select_limit(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_limitContext,0) - - - def opt_for_locking_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_for_locking_clauseContext,0) - - - def with_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.With_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_no_parens - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_no_parens" ): - listener.enterSelect_no_parens(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_no_parens" ): - listener.exitSelect_no_parens(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_no_parens" ): - return visitor.visitSelect_no_parens(self) - else: - return visitor.visitChildren(self) - - - - - def select_no_parens(self): - - localctx = PostgreSQLParser.Select_no_parensContext(self, self._ctx, self.state) - self.enterRule(localctx, 964, self.RULE_select_no_parens) - try: - self.state = 7960 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 88, 92, 415]: - self.enterOuterAlt(localctx, 1) - self.state = 7939 - self.select_clause() - self.state = 7940 - self.opt_sort_clause() - self.state = 7947 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,418,self._ctx) - if la_ == 1: - self.state = 7941 - self.for_locking_clause() - self.state = 7942 - self.opt_select_limit() - - elif la_ == 2: - self.state = 7944 - self.select_limit() - self.state = 7945 - self.opt_for_locking_clause() - - - pass - elif token in [105]: - self.enterOuterAlt(localctx, 2) - self.state = 7949 - self.with_clause() - self.state = 7950 - self.select_clause() - self.state = 7951 - self.opt_sort_clause() - self.state = 7958 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,419,self._ctx) - if la_ == 1: - self.state = 7952 - self.for_locking_clause() - self.state = 7953 - self.opt_select_limit() - - elif la_ == 2: - self.state = 7955 - self.select_limit() - self.state = 7956 - self.opt_for_locking_clause() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def simple_select_intersect(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Simple_select_intersectContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Simple_select_intersectContext,i) - - - def all_or_distinct(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.All_or_distinctContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.All_or_distinctContext,i) - - - def UNION(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.UNION) - else: - return self.getToken(PostgreSQLParser.UNION, i) - - def EXCEPT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.EXCEPT) - else: - return self.getToken(PostgreSQLParser.EXCEPT, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_clause" ): - listener.enterSelect_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_clause" ): - listener.exitSelect_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_clause" ): - return visitor.visitSelect_clause(self) - else: - return visitor.visitChildren(self) - - - - - def select_clause(self): - - localctx = PostgreSQLParser.Select_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 966, self.RULE_select_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7962 - self.simple_select_intersect() - self.state = 7969 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==59 or _la==97: - self.state = 7963 - _la = self._input.LA(1) - if not(_la==59 or _la==97): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 7964 - self.all_or_distinct() - self.state = 7965 - self.simple_select_intersect() - self.state = 7971 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Simple_select_intersectContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def simple_select_pramary(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Simple_select_pramaryContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Simple_select_pramaryContext,i) - - - def INTERSECT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.INTERSECT) - else: - return self.getToken(PostgreSQLParser.INTERSECT, i) - - def all_or_distinct(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.All_or_distinctContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.All_or_distinctContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_simple_select_intersect - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimple_select_intersect" ): - listener.enterSimple_select_intersect(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimple_select_intersect" ): - listener.exitSimple_select_intersect(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimple_select_intersect" ): - return visitor.visitSimple_select_intersect(self) - else: - return visitor.visitChildren(self) - - - - - def simple_select_intersect(self): - - localctx = PostgreSQLParser.Simple_select_intersectContext(self, self._ctx, self.state) - self.enterRule(localctx, 968, self.RULE_simple_select_intersect) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 7972 - self.simple_select_pramary() - self.state = 7979 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==70: - self.state = 7973 - self.match(PostgreSQLParser.INTERSECT) - self.state = 7974 - self.all_or_distinct() - self.state = 7975 - self.simple_select_pramary() - self.state = 7981 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Simple_select_pramaryContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SELECT(self): - return self.getToken(PostgreSQLParser.SELECT, 0) - - def into_clause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Into_clauseContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Into_clauseContext,i) - - - def from_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.From_clauseContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def group_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Group_clauseContext,0) - - - def having_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Having_clauseContext,0) - - - def window_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Window_clauseContext,0) - - - def opt_all_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_all_clauseContext,0) - - - def opt_target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_target_listContext,0) - - - def distinct_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Distinct_clauseContext,0) - - - def target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Target_listContext,0) - - - def values_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Values_clauseContext,0) - - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_simple_select_pramary - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimple_select_pramary" ): - listener.enterSimple_select_pramary(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimple_select_pramary" ): - listener.exitSimple_select_pramary(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimple_select_pramary" ): - return visitor.visitSimple_select_pramary(self) - else: - return visitor.visitChildren(self) - - - - - def simple_select_pramary(self): - - localctx = PostgreSQLParser.Simple_select_pramaryContext(self, self._ctx, self.state) - self.enterRule(localctx, 970, self.RULE_simple_select_pramary) - try: - self.state = 8003 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [88]: - self.enterOuterAlt(localctx, 1) - self.state = 7982 - self.match(PostgreSQLParser.SELECT) - self.state = 7990 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [-1, 2, 3, 7, 9, 12, 13, 28, 29, 30, 31, 32, 33, 35, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 57, 59, 60, 61, 62, 64, 65, 66, 67, 70, 71, 74, 75, 76, 77, 78, 79, 80, 83, 87, 88, 89, 92, 96, 97, 98, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 668, 671]: - self.state = 7983 - self.opt_all_clause() - self.state = 7984 - self.into_clause() - self.state = 7985 - self.opt_target_list() - pass - elif token in [56]: - self.state = 7987 - self.distinct_clause() - self.state = 7988 - self.target_list() - pass - else: - raise NoViableAltException(self) - - self.state = 7992 - self.into_clause() - self.state = 7993 - self.from_clause() - self.state = 7994 - self.where_clause() - self.state = 7995 - self.group_clause() - self.state = 7996 - self.having_clause() - self.state = 7997 - self.window_clause() - pass - elif token in [415]: - self.enterOuterAlt(localctx, 2) - self.state = 7999 - self.values_clause() - pass - elif token in [92]: - self.enterOuterAlt(localctx, 3) - self.state = 8000 - self.match(PostgreSQLParser.TABLE) - self.state = 8001 - self.relation_expr() - pass - elif token in [2]: - self.enterOuterAlt(localctx, 4) - self.state = 8002 - self.select_with_parens() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class With_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def cte_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Cte_listContext,0) - - - def RECURSIVE(self): - return self.getToken(PostgreSQLParser.RECURSIVE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_with_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWith_clause" ): - listener.enterWith_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWith_clause" ): - listener.exitWith_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWith_clause" ): - return visitor.visitWith_clause(self) - else: - return visitor.visitChildren(self) - - - - - def with_clause(self): - - localctx = PostgreSQLParser.With_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 972, self.RULE_with_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8005 - self.match(PostgreSQLParser.WITH) - self.state = 8007 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,425,self._ctx) - if la_ == 1: - self.state = 8006 - self.match(PostgreSQLParser.RECURSIVE) - - - self.state = 8009 - self.cte_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cte_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def common_table_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Common_table_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Common_table_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cte_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCte_list" ): - listener.enterCte_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCte_list" ): - listener.exitCte_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCte_list" ): - return visitor.visitCte_list(self) - else: - return visitor.visitChildren(self) - - - - - def cte_list(self): - - localctx = PostgreSQLParser.Cte_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 974, self.RULE_cte_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8011 - self.common_table_expr() - self.state = 8016 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8012 - self.match(PostgreSQLParser.COMMA) - self.state = 8013 - self.common_table_expr() - self.state = 8018 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Common_table_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def name(self): - return self.getTypedRuleContext(PostgreSQLParser.NameContext,0) - - - def opt_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_name_listContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def opt_materialized(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_materializedContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def preparablestmt(self): - return self.getTypedRuleContext(PostgreSQLParser.PreparablestmtContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_common_table_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCommon_table_expr" ): - listener.enterCommon_table_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCommon_table_expr" ): - listener.exitCommon_table_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCommon_table_expr" ): - return visitor.visitCommon_table_expr(self) - else: - return visitor.visitChildren(self) - - - - - def common_table_expr(self): - - localctx = PostgreSQLParser.Common_table_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 976, self.RULE_common_table_expr) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8019 - self.name() - self.state = 8020 - self.opt_name_list() - self.state = 8021 - self.match(PostgreSQLParser.AS) - self.state = 8022 - self.opt_materialized() - self.state = 8023 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8024 - self.preparablestmt() - self.state = 8025 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_materializedContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_materialized - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_materialized" ): - listener.enterOpt_materialized(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_materialized" ): - listener.exitOpt_materialized(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_materialized" ): - return visitor.visitOpt_materialized(self) - else: - return visitor.visitChildren(self) - - - - - def opt_materialized(self): - - localctx = PostgreSQLParser.Opt_materializedContext(self, self._ctx, self.state) - self.enterRule(localctx, 978, self.RULE_opt_materialized) - try: - self.state = 8031 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [251]: - self.enterOuterAlt(localctx, 1) - self.state = 8027 - self.match(PostgreSQLParser.MATERIALIZED) - pass - elif token in [77]: - self.enterOuterAlt(localctx, 2) - self.state = 8028 - self.match(PostgreSQLParser.NOT) - self.state = 8029 - self.match(PostgreSQLParser.MATERIALIZED) - pass - elif token in [2]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_with_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def with_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.With_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_with_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_with_clause" ): - listener.enterOpt_with_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_with_clause" ): - listener.exitOpt_with_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_with_clause" ): - return visitor.visitOpt_with_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_with_clause(self): - - localctx = PostgreSQLParser.Opt_with_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 980, self.RULE_opt_with_clause) - try: - self.state = 8035 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [105]: - self.enterOuterAlt(localctx, 1) - self.state = 8033 - self.with_clause() - pass - elif token in [182, 232, 362]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Into_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def opt_strict(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_strictContext,0) - - - def opttempTableName(self): - return self.getTypedRuleContext(PostgreSQLParser.OpttempTableNameContext,0) - - - def into_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Into_targetContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_into_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInto_clause" ): - listener.enterInto_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInto_clause" ): - listener.exitInto_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInto_clause" ): - return visitor.visitInto_clause(self) - else: - return visitor.visitChildren(self) - - - - - def into_clause(self): - - localctx = PostgreSQLParser.Into_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 982, self.RULE_into_clause) - try: - self.state = 8045 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,430,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8037 - self.match(PostgreSQLParser.INTO) - self.state = 8042 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,429,self._ctx) - if la_ == 1: - self.state = 8038 - self.opt_strict() - self.state = 8039 - self.opttempTableName() - pass - - elif la_ == 2: - self.state = 8041 - self.into_target() - pass - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_strictContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def STRICT_P(self): - return self.getToken(PostgreSQLParser.STRICT_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_strict - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_strict" ): - listener.enterOpt_strict(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_strict" ): - listener.exitOpt_strict(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_strict" ): - return visitor.visitOpt_strict(self) - else: - return visitor.visitChildren(self) - - - - - def opt_strict(self): - - localctx = PostgreSQLParser.Opt_strictContext(self, self._ctx, self.state) - self.enterRule(localctx, 984, self.RULE_opt_strict) - try: - self.state = 8049 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,431,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8048 - self.match(PostgreSQLParser.STRICT_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttempTableNameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_table(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_tableContext,0) - - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def TEMPORARY(self): - return self.getToken(PostgreSQLParser.TEMPORARY, 0) - - def TEMP(self): - return self.getToken(PostgreSQLParser.TEMP, 0) - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def GLOBAL(self): - return self.getToken(PostgreSQLParser.GLOBAL, 0) - - def UNLOGGED(self): - return self.getToken(PostgreSQLParser.UNLOGGED, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttempTableName - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttempTableName" ): - listener.enterOpttempTableName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttempTableName" ): - listener.exitOpttempTableName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttempTableName" ): - return visitor.visitOpttempTableName(self) - else: - return visitor.visitChildren(self) - - - - - def opttempTableName(self): - - localctx = PostgreSQLParser.OpttempTableNameContext(self, self._ctx, self.state) - self.enterRule(localctx, 986, self.RULE_opttempTableName) - self._la = 0 # Token type - try: - self.state = 8065 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,433,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8052 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==213 or _la==245: - self.state = 8051 - _la = self._input.LA(1) - if not(_la==213 or _la==245): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - self.state = 8054 - _la = self._input.LA(1) - if not(_la==345 or _la==347): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8055 - self.opt_table() - self.state = 8056 - self.qualified_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8058 - self.match(PostgreSQLParser.UNLOGGED) - self.state = 8059 - self.opt_table() - self.state = 8060 - self.qualified_name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 8062 - self.match(PostgreSQLParser.TABLE) - self.state = 8063 - self.qualified_name() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 8064 - self.qualified_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_tableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_table - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_table" ): - listener.enterOpt_table(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_table" ): - listener.exitOpt_table(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_table" ): - return visitor.visitOpt_table(self) - else: - return visitor.visitChildren(self) - - - - - def opt_table(self): - - localctx = PostgreSQLParser.Opt_tableContext(self, self._ctx, self.state) - self.enterRule(localctx, 988, self.RULE_opt_table) - try: - self.state = 8069 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,434,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8067 - self.match(PostgreSQLParser.TABLE) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class All_or_distinctContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_all_or_distinct - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAll_or_distinct" ): - listener.enterAll_or_distinct(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAll_or_distinct" ): - listener.exitAll_or_distinct(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAll_or_distinct" ): - return visitor.visitAll_or_distinct(self) - else: - return visitor.visitChildren(self) - - - - - def all_or_distinct(self): - - localctx = PostgreSQLParser.All_or_distinctContext(self, self._ctx, self.state) - self.enterRule(localctx, 990, self.RULE_all_or_distinct) - try: - self.state = 8074 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [30]: - self.enterOuterAlt(localctx, 1) - self.state = 8071 - self.match(PostgreSQLParser.ALL) - pass - elif token in [56]: - self.enterOuterAlt(localctx, 2) - self.state = 8072 - self.match(PostgreSQLParser.DISTINCT) - pass - elif token in [2, 88, 92, 415]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Distinct_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_distinct_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDistinct_clause" ): - listener.enterDistinct_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDistinct_clause" ): - listener.exitDistinct_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDistinct_clause" ): - return visitor.visitDistinct_clause(self) - else: - return visitor.visitChildren(self) - - - - - def distinct_clause(self): - - localctx = PostgreSQLParser.Distinct_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 992, self.RULE_distinct_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8076 - self.match(PostgreSQLParser.DISTINCT) - self.state = 8082 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==80: - self.state = 8077 - self.match(PostgreSQLParser.ON) - self.state = 8078 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8079 - self.expr_list() - self.state = 8080 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_all_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_all_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_all_clause" ): - listener.enterOpt_all_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_all_clause" ): - listener.exitOpt_all_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_all_clause" ): - return visitor.visitOpt_all_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_all_clause(self): - - localctx = PostgreSQLParser.Opt_all_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 994, self.RULE_opt_all_clause) - try: - self.state = 8086 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [30]: - self.enterOuterAlt(localctx, 1) - self.state = 8084 - self.match(PostgreSQLParser.ALL) - pass - elif token in [-1, 2, 3, 7, 9, 12, 13, 28, 29, 31, 32, 33, 35, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 57, 59, 60, 61, 62, 64, 65, 66, 67, 70, 71, 74, 75, 76, 77, 78, 79, 80, 83, 87, 88, 89, 92, 96, 97, 98, 99, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 668, 671]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_sort_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Sort_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_sort_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_sort_clause" ): - listener.enterOpt_sort_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_sort_clause" ): - listener.exitOpt_sort_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_sort_clause" ): - return visitor.visitOpt_sort_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_sort_clause(self): - - localctx = PostgreSQLParser.Opt_sort_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 996, self.RULE_opt_sort_clause) - try: - self.state = 8090 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [83]: - self.enterOuterAlt(localctx, 1) - self.state = 8088 - self.sort_clause() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 62, 65, 71, 74, 79, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 292, 294, 298, 299, 301, 306, 310, 312, 313, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 481, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sort_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ORDER(self): - return self.getToken(PostgreSQLParser.ORDER, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def sortby_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Sortby_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sort_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSort_clause" ): - listener.enterSort_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSort_clause" ): - listener.exitSort_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSort_clause" ): - return visitor.visitSort_clause(self) - else: - return visitor.visitChildren(self) - - - - - def sort_clause(self): - - localctx = PostgreSQLParser.Sort_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 998, self.RULE_sort_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8092 - self.match(PostgreSQLParser.ORDER) - self.state = 8093 - self.match(PostgreSQLParser.BY) - self.state = 8094 - self.sortby_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sortby_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sortby(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.SortbyContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.SortbyContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sortby_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSortby_list" ): - listener.enterSortby_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSortby_list" ): - listener.exitSortby_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSortby_list" ): - return visitor.visitSortby_list(self) - else: - return visitor.visitChildren(self) - - - - - def sortby_list(self): - - localctx = PostgreSQLParser.Sortby_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1000, self.RULE_sortby_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8096 - self.sortby() - self.state = 8101 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8097 - self.match(PostgreSQLParser.COMMA) - self.state = 8098 - self.sortby() - self.state = 8103 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SortbyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def opt_nulls_order(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_nulls_orderContext,0) - - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def qual_all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_all_opContext,0) - - - def opt_asc_desc(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_asc_descContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sortby - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSortby" ): - listener.enterSortby(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSortby" ): - listener.exitSortby(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSortby" ): - return visitor.visitSortby(self) - else: - return visitor.visitChildren(self) - - - - - def sortby(self): - - localctx = PostgreSQLParser.SortbyContext(self, self._ctx, self.state) - self.enterRule(localctx, 1002, self.RULE_sortby) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8104 - self.a_expr() - self.state = 8108 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.state = 8105 - self.match(PostgreSQLParser.USING) - self.state = 8106 - self.qual_all_op() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 37, 46, 55, 57, 61, 62, 65, 71, 74, 79, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 266, 283, 292, 294, 298, 299, 301, 306, 310, 312, 313, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 481, 519, 668]: - self.state = 8107 - self.opt_asc_desc() - pass - else: - raise NoViableAltException(self) - - self.state = 8110 - self.opt_nulls_order() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_limitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def limit_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Limit_clauseContext,0) - - - def offset_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Offset_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_limit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_limit" ): - listener.enterSelect_limit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_limit" ): - listener.exitSelect_limit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_limit" ): - return visitor.visitSelect_limit(self) - else: - return visitor.visitChildren(self) - - - - - def select_limit(self): - - localctx = PostgreSQLParser.Select_limitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1004, self.RULE_select_limit) - self._la = 0 # Token type - try: - self.state = 8120 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [61, 74]: - self.enterOuterAlt(localctx, 1) - self.state = 8112 - self.limit_clause() - self.state = 8114 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==79: - self.state = 8113 - self.offset_clause() - - - pass - elif token in [79]: - self.enterOuterAlt(localctx, 2) - self.state = 8116 - self.offset_clause() - self.state = 8118 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,442,self._ctx) - if la_ == 1: - self.state = 8117 - self.limit_clause() - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_select_limitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def select_limit(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_limitContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_select_limit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_select_limit" ): - listener.enterOpt_select_limit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_select_limit" ): - listener.exitOpt_select_limit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_select_limit" ): - return visitor.visitOpt_select_limit(self) - else: - return visitor.visitChildren(self) - - - - - def opt_select_limit(self): - - localctx = PostgreSQLParser.Opt_select_limitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1006, self.RULE_opt_select_limit) - try: - self.state = 8124 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,444,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8122 - self.select_limit() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Limit_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LIMIT(self): - return self.getToken(PostgreSQLParser.LIMIT, 0) - - def select_limit_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_limit_valueContext,0) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def select_offset_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_offset_valueContext,0) - - - def FETCH(self): - return self.getToken(PostgreSQLParser.FETCH, 0) - - def first_or_next(self): - return self.getTypedRuleContext(PostgreSQLParser.First_or_nextContext,0) - - - def select_fetch_first_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_fetch_first_valueContext,0) - - - def row_or_rows(self): - return self.getTypedRuleContext(PostgreSQLParser.Row_or_rowsContext,0) - - - def ONLY(self): - return self.getToken(PostgreSQLParser.ONLY, 0) - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def TIES(self): - return self.getToken(PostgreSQLParser.TIES, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_limit_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLimit_clause" ): - listener.enterLimit_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLimit_clause" ): - listener.exitLimit_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLimit_clause" ): - return visitor.visitLimit_clause(self) - else: - return visitor.visitChildren(self) - - - - - def limit_clause(self): - - localctx = PostgreSQLParser.Limit_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1008, self.RULE_limit_clause) - self._la = 0 # Token type - try: - self.state = 8149 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [74]: - self.enterOuterAlt(localctx, 1) - self.state = 8126 - self.match(PostgreSQLParser.LIMIT) - self.state = 8127 - self.select_limit_value() - self.state = 8130 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 8128 - self.match(PostgreSQLParser.COMMA) - self.state = 8129 - self.select_offset_value() - - - pass - elif token in [61]: - self.enterOuterAlt(localctx, 2) - self.state = 8132 - self.match(PostgreSQLParser.FETCH) - self.state = 8133 - self.first_or_next() - self.state = 8147 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,448,self._ctx) - if la_ == 1: - self.state = 8134 - self.select_fetch_first_value() - self.state = 8135 - self.row_or_rows() - self.state = 8139 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [81]: - self.state = 8136 - self.match(PostgreSQLParser.ONLY) - pass - elif token in [105]: - self.state = 8137 - self.match(PostgreSQLParser.WITH) - self.state = 8138 - self.match(PostgreSQLParser.TIES) - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 2: - self.state = 8141 - self.row_or_rows() - self.state = 8145 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [81]: - self.state = 8142 - self.match(PostgreSQLParser.ONLY) - pass - elif token in [105]: - self.state = 8143 - self.match(PostgreSQLParser.WITH) - self.state = 8144 - self.match(PostgreSQLParser.TIES) - pass - else: - raise NoViableAltException(self) - - pass - - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Offset_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OFFSET(self): - return self.getToken(PostgreSQLParser.OFFSET, 0) - - def select_offset_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_offset_valueContext,0) - - - def select_fetch_first_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_fetch_first_valueContext,0) - - - def row_or_rows(self): - return self.getTypedRuleContext(PostgreSQLParser.Row_or_rowsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_offset_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOffset_clause" ): - listener.enterOffset_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOffset_clause" ): - listener.exitOffset_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOffset_clause" ): - return visitor.visitOffset_clause(self) - else: - return visitor.visitChildren(self) - - - - - def offset_clause(self): - - localctx = PostgreSQLParser.Offset_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1010, self.RULE_offset_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8151 - self.match(PostgreSQLParser.OFFSET) - self.state = 8156 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,450,self._ctx) - if la_ == 1: - self.state = 8152 - self.select_offset_value() - pass - - elif la_ == 2: - self.state = 8153 - self.select_fetch_first_value() - self.state = 8154 - self.row_or_rows() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_limit_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_limit_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_limit_value" ): - listener.enterSelect_limit_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_limit_value" ): - listener.exitSelect_limit_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_limit_value" ): - return visitor.visitSelect_limit_value(self) - else: - return visitor.visitChildren(self) - - - - - def select_limit_value(self): - - localctx = PostgreSQLParser.Select_limit_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 1012, self.RULE_select_limit_value) - try: - self.state = 8160 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 8158 - self.a_expr() - pass - elif token in [30]: - self.enterOuterAlt(localctx, 2) - self.state = 8159 - self.match(PostgreSQLParser.ALL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_offset_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_offset_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_offset_value" ): - listener.enterSelect_offset_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_offset_value" ): - listener.exitSelect_offset_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_offset_value" ): - return visitor.visitSelect_offset_value(self) - else: - return visitor.visitChildren(self) - - - - - def select_offset_value(self): - - localctx = PostgreSQLParser.Select_offset_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 1014, self.RULE_select_offset_value) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8162 - self.a_expr() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Select_fetch_first_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def i_or_f_const(self): - return self.getTypedRuleContext(PostgreSQLParser.I_or_f_constContext,0) - - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_select_fetch_first_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSelect_fetch_first_value" ): - listener.enterSelect_fetch_first_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSelect_fetch_first_value" ): - listener.exitSelect_fetch_first_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSelect_fetch_first_value" ): - return visitor.visitSelect_fetch_first_value(self) - else: - return visitor.visitChildren(self) - - - - - def select_fetch_first_value(self): - - localctx = PostgreSQLParser.Select_fetch_first_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 1016, self.RULE_select_fetch_first_value) - try: - self.state = 8169 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 28, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 8164 - self.c_expr() - pass - elif token in [12]: - self.enterOuterAlt(localctx, 2) - self.state = 8165 - self.match(PostgreSQLParser.PLUS) - self.state = 8166 - self.i_or_f_const() - pass - elif token in [13]: - self.enterOuterAlt(localctx, 3) - self.state = 8167 - self.match(PostgreSQLParser.MINUS) - self.state = 8168 - self.i_or_f_const() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class I_or_f_constContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def fconst(self): - return self.getTypedRuleContext(PostgreSQLParser.FconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_i_or_f_const - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterI_or_f_const" ): - listener.enterI_or_f_const(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitI_or_f_const" ): - listener.exitI_or_f_const(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitI_or_f_const" ): - return visitor.visitI_or_f_const(self) - else: - return visitor.visitChildren(self) - - - - - def i_or_f_const(self): - - localctx = PostgreSQLParser.I_or_f_constContext(self, self._ctx, self.state) - self.enterRule(localctx, 1018, self.RULE_i_or_f_const) - try: - self.state = 8173 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [658]: - self.enterOuterAlt(localctx, 1) - self.state = 8171 - self.iconst() - pass - elif token in [660]: - self.enterOuterAlt(localctx, 2) - self.state = 8172 - self.fconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Row_or_rowsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_row_or_rows - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRow_or_rows" ): - listener.enterRow_or_rows(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRow_or_rows" ): - listener.exitRow_or_rows(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRow_or_rows" ): - return visitor.visitRow_or_rows(self) - else: - return visitor.visitChildren(self) - - - - - def row_or_rows(self): - - localctx = PostgreSQLParser.Row_or_rowsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1020, self.RULE_row_or_rows) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8175 - _la = self._input.LA(1) - if not(_la==313 or _la==407): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class First_or_nextContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_first_or_next - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFirst_or_next" ): - listener.enterFirst_or_next(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFirst_or_next" ): - listener.exitFirst_or_next(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFirst_or_next" ): - return visitor.visitFirst_or_next(self) - else: - return visitor.visitChildren(self) - - - - - def first_or_next(self): - - localctx = PostgreSQLParser.First_or_nextContext(self, self._ctx, self.state) - self.enterRule(localctx, 1022, self.RULE_first_or_next) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8177 - _la = self._input.LA(1) - if not(_la==207 or _la==261): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Group_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def group_by_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Group_by_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_group_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGroup_clause" ): - listener.enterGroup_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGroup_clause" ): - listener.exitGroup_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroup_clause" ): - return visitor.visitGroup_clause(self) - else: - return visitor.visitChildren(self) - - - - - def group_clause(self): - - localctx = PostgreSQLParser.Group_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1024, self.RULE_group_clause) - try: - self.state = 8183 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [66]: - self.enterOuterAlt(localctx, 1) - self.state = 8179 - self.match(PostgreSQLParser.GROUP_P) - self.state = 8180 - self.match(PostgreSQLParser.BY) - self.state = 8181 - self.group_by_list() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 67, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 104, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Group_by_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def group_by_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Group_by_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Group_by_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_group_by_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGroup_by_list" ): - listener.enterGroup_by_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGroup_by_list" ): - listener.exitGroup_by_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroup_by_list" ): - return visitor.visitGroup_by_list(self) - else: - return visitor.visitChildren(self) - - - - - def group_by_list(self): - - localctx = PostgreSQLParser.Group_by_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1026, self.RULE_group_by_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8185 - self.group_by_item() - self.state = 8190 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,455,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8186 - self.match(PostgreSQLParser.COMMA) - self.state = 8187 - self.group_by_item() - self.state = 8192 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,455,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Group_by_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def empty_grouping_set(self): - return self.getTypedRuleContext(PostgreSQLParser.Empty_grouping_setContext,0) - - - def cube_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Cube_clauseContext,0) - - - def rollup_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Rollup_clauseContext,0) - - - def grouping_sets_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Grouping_sets_clauseContext,0) - - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_group_by_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGroup_by_item" ): - listener.enterGroup_by_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGroup_by_item" ): - listener.exitGroup_by_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGroup_by_item" ): - return visitor.visitGroup_by_item(self) - else: - return visitor.visitChildren(self) - - - - - def group_by_item(self): - - localctx = PostgreSQLParser.Group_by_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1028, self.RULE_group_by_item) - try: - self.state = 8198 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,456,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8193 - self.empty_grouping_set() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8194 - self.cube_clause() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 8195 - self.rollup_clause() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 8196 - self.grouping_sets_clause() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 8197 - self.a_expr() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Empty_grouping_setContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_empty_grouping_set - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterEmpty_grouping_set" ): - listener.enterEmpty_grouping_set(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitEmpty_grouping_set" ): - listener.exitEmpty_grouping_set(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitEmpty_grouping_set" ): - return visitor.visitEmpty_grouping_set(self) - else: - return visitor.visitChildren(self) - - - - - def empty_grouping_set(self): - - localctx = PostgreSQLParser.Empty_grouping_setContext(self, self._ctx, self.state) - self.enterRule(localctx, 1030, self.RULE_empty_grouping_set) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8200 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8201 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Rollup_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROLLUP(self): - return self.getToken(PostgreSQLParser.ROLLUP, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rollup_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRollup_clause" ): - listener.enterRollup_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRollup_clause" ): - listener.exitRollup_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRollup_clause" ): - return visitor.visitRollup_clause(self) - else: - return visitor.visitChildren(self) - - - - - def rollup_clause(self): - - localctx = PostgreSQLParser.Rollup_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1032, self.RULE_rollup_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8203 - self.match(PostgreSQLParser.ROLLUP) - self.state = 8204 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8205 - self.expr_list() - self.state = 8206 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cube_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CUBE(self): - return self.getToken(PostgreSQLParser.CUBE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cube_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCube_clause" ): - listener.enterCube_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCube_clause" ): - listener.exitCube_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCube_clause" ): - return visitor.visitCube_clause(self) - else: - return visitor.visitChildren(self) - - - - - def cube_clause(self): - - localctx = PostgreSQLParser.Cube_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1034, self.RULE_cube_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8208 - self.match(PostgreSQLParser.CUBE) - self.state = 8209 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8210 - self.expr_list() - self.state = 8211 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Grouping_sets_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GROUPING(self): - return self.getToken(PostgreSQLParser.GROUPING, 0) - - def SETS(self): - return self.getToken(PostgreSQLParser.SETS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def group_by_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Group_by_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_grouping_sets_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGrouping_sets_clause" ): - listener.enterGrouping_sets_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGrouping_sets_clause" ): - listener.exitGrouping_sets_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGrouping_sets_clause" ): - return visitor.visitGrouping_sets_clause(self) - else: - return visitor.visitChildren(self) - - - - - def grouping_sets_clause(self): - - localctx = PostgreSQLParser.Grouping_sets_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1036, self.RULE_grouping_sets_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8213 - self.match(PostgreSQLParser.GROUPING) - self.state = 8214 - self.match(PostgreSQLParser.SETS) - self.state = 8215 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8216 - self.group_by_list() - self.state = 8217 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Having_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def HAVING(self): - return self.getToken(PostgreSQLParser.HAVING, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_having_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterHaving_clause" ): - listener.enterHaving_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitHaving_clause" ): - listener.exitHaving_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitHaving_clause" ): - return visitor.visitHaving_clause(self) - else: - return visitor.visitChildren(self) - - - - - def having_clause(self): - - localctx = PostgreSQLParser.Having_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1038, self.RULE_having_clause) - try: - self.state = 8222 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [67]: - self.enterOuterAlt(localctx, 1) - self.state = 8219 - self.match(PostgreSQLParser.HAVING) - self.state = 8220 - self.a_expr() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 104, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_locking_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def for_locking_items(self): - return self.getTypedRuleContext(PostgreSQLParser.For_locking_itemsContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def READ(self): - return self.getToken(PostgreSQLParser.READ, 0) - - def ONLY(self): - return self.getToken(PostgreSQLParser.ONLY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_locking_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_locking_clause" ): - listener.enterFor_locking_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_locking_clause" ): - listener.exitFor_locking_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_locking_clause" ): - return visitor.visitFor_locking_clause(self) - else: - return visitor.visitChildren(self) - - - - - def for_locking_clause(self): - - localctx = PostgreSQLParser.For_locking_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1040, self.RULE_for_locking_clause) - try: - self.state = 8228 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,458,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8224 - self.for_locking_items() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8225 - self.match(PostgreSQLParser.FOR) - self.state = 8226 - self.match(PostgreSQLParser.READ) - self.state = 8227 - self.match(PostgreSQLParser.ONLY) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_for_locking_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def for_locking_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.For_locking_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_for_locking_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_for_locking_clause" ): - listener.enterOpt_for_locking_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_for_locking_clause" ): - listener.exitOpt_for_locking_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_for_locking_clause" ): - return visitor.visitOpt_for_locking_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_for_locking_clause(self): - - localctx = PostgreSQLParser.Opt_for_locking_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1042, self.RULE_opt_for_locking_clause) - try: - self.state = 8232 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - self.state = 8230 - self.for_locking_clause() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_locking_itemsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def for_locking_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.For_locking_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.For_locking_itemContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_locking_items - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_locking_items" ): - listener.enterFor_locking_items(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_locking_items" ): - listener.exitFor_locking_items(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_locking_items" ): - return visitor.visitFor_locking_items(self) - else: - return visitor.visitChildren(self) - - - - - def for_locking_items(self): - - localctx = PostgreSQLParser.For_locking_itemsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1044, self.RULE_for_locking_items) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8235 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 8234 - self.for_locking_item() - self.state = 8237 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==62): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_locking_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def for_locking_strength(self): - return self.getTypedRuleContext(PostgreSQLParser.For_locking_strengthContext,0) - - - def locked_rels_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Locked_rels_listContext,0) - - - def opt_nowait_or_skip(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_nowait_or_skipContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_locking_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_locking_item" ): - listener.enterFor_locking_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_locking_item" ): - listener.exitFor_locking_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_locking_item" ): - return visitor.visitFor_locking_item(self) - else: - return visitor.visitChildren(self) - - - - - def for_locking_item(self): - - localctx = PostgreSQLParser.For_locking_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1046, self.RULE_for_locking_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8239 - self.for_locking_strength() - self.state = 8240 - self.locked_rels_list() - self.state = 8241 - self.opt_nowait_or_skip() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_locking_strengthContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def SHARE(self): - return self.getToken(PostgreSQLParser.SHARE, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def KEY(self): - return self.getToken(PostgreSQLParser.KEY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_locking_strength - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_locking_strength" ): - listener.enterFor_locking_strength(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_locking_strength" ): - listener.exitFor_locking_strength(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_locking_strength" ): - return visitor.visitFor_locking_strength(self) - else: - return visitor.visitChildren(self) - - - - - def for_locking_strength(self): - - localctx = PostgreSQLParser.For_locking_strengthContext(self, self._ctx, self.state) - self.enterRule(localctx, 1048, self.RULE_for_locking_strength) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8243 - self.match(PostgreSQLParser.FOR) - self.state = 8253 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [262, 362]: - self.state = 8246 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==262: - self.state = 8244 - self.match(PostgreSQLParser.NO) - self.state = 8245 - self.match(PostgreSQLParser.KEY) - - - self.state = 8248 - self.match(PostgreSQLParser.UPDATE) - pass - elif token in [236, 327]: - self.state = 8250 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==236: - self.state = 8249 - self.match(PostgreSQLParser.KEY) - - - self.state = 8252 - self.match(PostgreSQLParser.SHARE) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Locked_rels_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def qualified_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_name_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_locked_rels_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLocked_rels_list" ): - listener.enterLocked_rels_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLocked_rels_list" ): - listener.exitLocked_rels_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLocked_rels_list" ): - return visitor.visitLocked_rels_list(self) - else: - return visitor.visitChildren(self) - - - - - def locked_rels_list(self): - - localctx = PostgreSQLParser.Locked_rels_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1050, self.RULE_locked_rels_list) - try: - self.state = 8258 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [268]: - self.enterOuterAlt(localctx, 1) - self.state = 8255 - self.match(PostgreSQLParser.OF) - self.state = 8256 - self.qualified_name_list() - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 62, 65, 71, 74, 79, 80, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 265, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 465, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Values_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VALUES(self): - return self.getToken(PostgreSQLParser.VALUES, 0) - - def OPEN_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OPEN_PAREN) - else: - return self.getToken(PostgreSQLParser.OPEN_PAREN, i) - - def expr_list(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Expr_listContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,i) - - - def CLOSE_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CLOSE_PAREN) - else: - return self.getToken(PostgreSQLParser.CLOSE_PAREN, i) - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_values_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterValues_clause" ): - listener.enterValues_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitValues_clause" ): - listener.exitValues_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitValues_clause" ): - return visitor.visitValues_clause(self) - else: - return visitor.visitChildren(self) - - - - - def values_clause(self): - - localctx = PostgreSQLParser.Values_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1052, self.RULE_values_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8260 - self.match(PostgreSQLParser.VALUES) - self.state = 8261 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8262 - self.expr_list() - self.state = 8263 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8271 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8264 - self.match(PostgreSQLParser.COMMA) - self.state = 8265 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8266 - self.expr_list() - self.state = 8267 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8273 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class From_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def from_list(self): - return self.getTypedRuleContext(PostgreSQLParser.From_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_from_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrom_clause" ): - listener.enterFrom_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrom_clause" ): - listener.exitFrom_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrom_clause" ): - return visitor.visitFrom_clause(self) - else: - return visitor.visitChildren(self) - - - - - def from_clause(self): - - localctx = PostgreSQLParser.From_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1054, self.RULE_from_clause) - try: - self.state = 8277 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [64]: - self.enterOuterAlt(localctx, 1) - self.state = 8274 - self.match(PostgreSQLParser.FROM) - self.state = 8275 - self.from_list() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 66, 67, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 103, 104, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class From_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def non_ansi_join(self): - return self.getTypedRuleContext(PostgreSQLParser.Non_ansi_joinContext,0) - - - def table_ref(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Table_refContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Table_refContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_from_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrom_list" ): - listener.enterFrom_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrom_list" ): - listener.exitFrom_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrom_list" ): - return visitor.visitFrom_list(self) - else: - return visitor.visitChildren(self) - - - - - def from_list(self): - - localctx = PostgreSQLParser.From_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1056, self.RULE_from_list) - try: - self.state = 8288 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,468,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8279 - self.non_ansi_join() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8280 - self.table_ref() - self.state = 8285 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,467,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8281 - self.match(PostgreSQLParser.COMMA) - self.state = 8282 - self.table_ref() - self.state = 8287 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,467,self._ctx) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Non_ansi_joinContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def table_ref(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Table_refContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Table_refContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_non_ansi_join - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNon_ansi_join" ): - listener.enterNon_ansi_join(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNon_ansi_join" ): - listener.exitNon_ansi_join(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNon_ansi_join" ): - return visitor.visitNon_ansi_join(self) - else: - return visitor.visitChildren(self) - - - - - def non_ansi_join(self): - - localctx = PostgreSQLParser.Non_ansi_joinContext(self, self._ctx, self.state) - self.enterRule(localctx, 1058, self.RULE_non_ansi_join) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8290 - self.table_ref() - self.state = 8293 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 8291 - self.match(PostgreSQLParser.COMMA) - self.state = 8292 - self.table_ref() - - else: - raise NoViableAltException(self) - self.state = 8295 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,469,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_refContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def opt_alias_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_alias_clauseContext,0) - - - def func_table(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_tableContext,0) - - - def func_alias_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_alias_clauseContext,0) - - - def xmltable(self): - return self.getTypedRuleContext(PostgreSQLParser.XmltableContext,0) - - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def LATERAL_P(self): - return self.getToken(PostgreSQLParser.LATERAL_P, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def table_ref(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Table_refContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Table_refContext,i) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def CROSS(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CROSS) - else: - return self.getToken(PostgreSQLParser.CROSS, i) - - def JOIN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.JOIN) - else: - return self.getToken(PostgreSQLParser.JOIN, i) - - def NATURAL(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.NATURAL) - else: - return self.getToken(PostgreSQLParser.NATURAL, i) - - def join_qual(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Join_qualContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Join_qualContext,i) - - - def tablesample_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Tablesample_clauseContext,0) - - - def join_type(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Join_typeContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Join_typeContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_ref - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_ref" ): - listener.enterTable_ref(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_ref" ): - listener.exitTable_ref(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_ref" ): - return visitor.visitTable_ref(self) - else: - return visitor.visitChildren(self) - - - - - def table_ref(self): - - localctx = PostgreSQLParser.Table_refContext(self, self._ctx, self.state) - self.enterRule(localctx, 1060, self.RULE_table_ref) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8346 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,475,self._ctx) - if la_ == 1: - self.state = 8297 - self.relation_expr() - self.state = 8298 - self.opt_alias_clause() - self.state = 8300 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==472: - self.state = 8299 - self.tablesample_clause() - - - pass - - elif la_ == 2: - self.state = 8302 - self.func_table() - self.state = 8303 - self.func_alias_clause() - pass - - elif la_ == 3: - self.state = 8305 - self.xmltable() - self.state = 8306 - self.opt_alias_clause() - pass - - elif la_ == 4: - self.state = 8308 - self.select_with_parens() - self.state = 8309 - self.opt_alias_clause() - pass - - elif la_ == 5: - self.state = 8311 - self.match(PostgreSQLParser.LATERAL_P) - self.state = 8321 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,471,self._ctx) - if la_ == 1: - self.state = 8312 - self.xmltable() - self.state = 8313 - self.opt_alias_clause() - pass - - elif la_ == 2: - self.state = 8315 - self.func_table() - self.state = 8316 - self.func_alias_clause() - pass - - elif la_ == 3: - self.state = 8318 - self.select_with_parens() - self.state = 8319 - self.opt_alias_clause() - pass - - - pass - - elif la_ == 6: - self.state = 8323 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8324 - self.table_ref() - self.state = 8341 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [110]: - self.state = 8325 - self.match(PostgreSQLParser.CROSS) - self.state = 8326 - self.match(PostgreSQLParser.JOIN) - self.state = 8327 - self.table_ref() - pass - elif token in [121]: - self.state = 8328 - self.match(PostgreSQLParser.NATURAL) - self.state = 8330 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 8261) != 0): - self.state = 8329 - self.join_type() - - - self.state = 8332 - self.match(PostgreSQLParser.JOIN) - self.state = 8333 - self.table_ref() - pass - elif token in [113, 115, 118, 119, 126]: - self.state = 8335 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 8261) != 0): - self.state = 8334 - self.join_type() - - - self.state = 8337 - self.match(PostgreSQLParser.JOIN) - self.state = 8338 - self.table_ref() - self.state = 8339 - self.join_qual() - pass - elif token in [3]: - pass - else: - pass - self.state = 8343 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8344 - self.opt_alias_clause() - pass - - - self.state = 8366 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,479,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8364 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [110]: - self.state = 8348 - self.match(PostgreSQLParser.CROSS) - self.state = 8349 - self.match(PostgreSQLParser.JOIN) - self.state = 8350 - self.table_ref() - pass - elif token in [121]: - self.state = 8351 - self.match(PostgreSQLParser.NATURAL) - self.state = 8353 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 8261) != 0): - self.state = 8352 - self.join_type() - - - self.state = 8355 - self.match(PostgreSQLParser.JOIN) - self.state = 8356 - self.table_ref() - pass - elif token in [113, 115, 118, 119, 126]: - self.state = 8358 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 8261) != 0): - self.state = 8357 - self.join_type() - - - self.state = 8360 - self.match(PostgreSQLParser.JOIN) - self.state = 8361 - self.table_ref() - self.state = 8362 - self.join_qual() - pass - else: - raise NoViableAltException(self) - - self.state = 8368 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,479,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Alias_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_alias_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAlias_clause" ): - listener.enterAlias_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAlias_clause" ): - listener.exitAlias_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAlias_clause" ): - return visitor.visitAlias_clause(self) - else: - return visitor.visitChildren(self) - - - - - def alias_clause(self): - - localctx = PostgreSQLParser.Alias_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1062, self.RULE_alias_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8370 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==36: - self.state = 8369 - self.match(PostgreSQLParser.AS) - - - self.state = 8372 - self.colid() - self.state = 8377 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,481,self._ctx) - if la_ == 1: - self.state = 8373 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8374 - self.name_list() - self.state = 8375 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_alias_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def table_alias_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_alias_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_alias_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_alias_clause" ): - listener.enterOpt_alias_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_alias_clause" ): - listener.exitOpt_alias_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_alias_clause" ): - return visitor.visitOpt_alias_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_alias_clause(self): - - localctx = PostgreSQLParser.Opt_alias_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1064, self.RULE_opt_alias_clause) - try: - self.state = 8381 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,482,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8379 - self.table_alias_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_alias_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def table_alias(self): - return self.getTypedRuleContext(PostgreSQLParser.Table_aliasContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_alias_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_alias_clause" ): - listener.enterTable_alias_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_alias_clause" ): - listener.exitTable_alias_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_alias_clause" ): - return visitor.visitTable_alias_clause(self) - else: - return visitor.visitChildren(self) - - - - - def table_alias_clause(self): - - localctx = PostgreSQLParser.Table_alias_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1066, self.RULE_table_alias_clause) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8384 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==36: - self.state = 8383 - self.match(PostgreSQLParser.AS) - - - self.state = 8386 - self.table_alias() - self.state = 8391 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,484,self._ctx) - if la_ == 1: - self.state = 8387 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8388 - self.name_list() - self.state = 8389 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_alias_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def alias_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Alias_clauseContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def tablefuncelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TablefuncelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_alias_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_alias_clause" ): - listener.enterFunc_alias_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_alias_clause" ): - listener.exitFunc_alias_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_alias_clause" ): - return visitor.visitFunc_alias_clause(self) - else: - return visitor.visitChildren(self) - - - - - def func_alias_clause(self): - - localctx = PostgreSQLParser.Func_alias_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1068, self.RULE_func_alias_clause) - self._la = 0 # Token type - try: - self.state = 8406 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,487,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8393 - self.alias_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8399 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.state = 8394 - self.match(PostgreSQLParser.AS) - self.state = 8396 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 2459027012145119232) != 0) or ((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & -113665638399) != 0) or ((((_la - 156)) & ~0x3f) == 0 and ((1 << (_la - 156)) & -1) != 0) or ((((_la - 220)) & ~0x3f) == 0 and ((1 << (_la - 220)) & -9663676417) != 0) or ((((_la - 284)) & ~0x3f) == 0 and ((1 << (_la - 284)) & -1) != 0) or ((((_la - 348)) & ~0x3f) == 0 and ((1 << (_la - 348)) & -1) != 0) or ((((_la - 412)) & ~0x3f) == 0 and ((1 << (_la - 412)) & -1152925902653358081) != 0) or ((((_la - 476)) & ~0x3f) == 0 and ((1 << (_la - 476)) & -8796764110849) != 0) or ((((_la - 540)) & ~0x3f) == 0 and ((1 << (_la - 540)) & -1) != 0) or ((((_la - 604)) & ~0x3f) == 0 and ((1 << (_la - 604)) & 432345718846390271) != 0): - self.state = 8395 - self.colid() - - - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 8398 - self.colid() - pass - else: - raise NoViableAltException(self) - - self.state = 8401 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8402 - self.tablefuncelementlist() - self.state = 8403 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Join_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FULL(self): - return self.getToken(PostgreSQLParser.FULL, 0) - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def INNER_P(self): - return self.getToken(PostgreSQLParser.INNER_P, 0) - - def OUTER_P(self): - return self.getToken(PostgreSQLParser.OUTER_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_join_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterJoin_type" ): - listener.enterJoin_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitJoin_type" ): - listener.exitJoin_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoin_type" ): - return visitor.visitJoin_type(self) - else: - return visitor.visitChildren(self) - - - - - def join_type(self): - - localctx = PostgreSQLParser.Join_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1070, self.RULE_join_type) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8408 - _la = self._input.LA(1) - if not(((((_la - 113)) & ~0x3f) == 0 and ((1 << (_la - 113)) & 8261) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8410 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==123: - self.state = 8409 - self.match(PostgreSQLParser.OUTER_P) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Join_qualContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Name_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_join_qual - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterJoin_qual" ): - listener.enterJoin_qual(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitJoin_qual" ): - listener.exitJoin_qual(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitJoin_qual" ): - return visitor.visitJoin_qual(self) - else: - return visitor.visitChildren(self) - - - - - def join_qual(self): - - localctx = PostgreSQLParser.Join_qualContext(self, self._ctx, self.state) - self.enterRule(localctx, 1072, self.RULE_join_qual) - try: - self.state = 8419 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [100]: - self.enterOuterAlt(localctx, 1) - self.state = 8412 - self.match(PostgreSQLParser.USING) - self.state = 8413 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8414 - self.name_list() - self.state = 8415 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [80]: - self.enterOuterAlt(localctx, 2) - self.state = 8417 - self.match(PostgreSQLParser.ON) - self.state = 8418 - self.a_expr() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Relation_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def ONLY(self): - return self.getToken(PostgreSQLParser.ONLY, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_relation_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRelation_expr" ): - listener.enterRelation_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRelation_expr" ): - listener.exitRelation_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRelation_expr" ): - return visitor.visitRelation_expr(self) - else: - return visitor.visitChildren(self) - - - - - def relation_expr(self): - - localctx = PostgreSQLParser.Relation_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1074, self.RULE_relation_expr) - self._la = 0 # Token type - try: - self.state = 8433 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 8421 - self.qualified_name() - self.state = 8423 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==9: - self.state = 8422 - self.match(PostgreSQLParser.STAR) - - - pass - elif token in [81]: - self.enterOuterAlt(localctx, 2) - self.state = 8425 - self.match(PostgreSQLParser.ONLY) - self.state = 8431 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 8426 - self.qualified_name() - pass - elif token in [2]: - self.state = 8427 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8428 - self.qualified_name() - self.state = 8429 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Relation_expr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def relation_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Relation_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_relation_expr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRelation_expr_list" ): - listener.enterRelation_expr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRelation_expr_list" ): - listener.exitRelation_expr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRelation_expr_list" ): - return visitor.visitRelation_expr_list(self) - else: - return visitor.visitChildren(self) - - - - - def relation_expr_list(self): - - localctx = PostgreSQLParser.Relation_expr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1076, self.RULE_relation_expr_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8435 - self.relation_expr() - self.state = 8440 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8436 - self.match(PostgreSQLParser.COMMA) - self.state = 8437 - self.relation_expr() - self.state = 8442 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Relation_expr_opt_aliasContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def relation_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Relation_exprContext,0) - - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_relation_expr_opt_alias - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRelation_expr_opt_alias" ): - listener.enterRelation_expr_opt_alias(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRelation_expr_opt_alias" ): - listener.exitRelation_expr_opt_alias(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRelation_expr_opt_alias" ): - return visitor.visitRelation_expr_opt_alias(self) - else: - return visitor.visitChildren(self) - - - - - def relation_expr_opt_alias(self): - - localctx = PostgreSQLParser.Relation_expr_opt_aliasContext(self, self._ctx, self.state) - self.enterRule(localctx, 1078, self.RULE_relation_expr_opt_alias) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8443 - self.relation_expr() - self.state = 8448 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,495,self._ctx) - if la_ == 1: - self.state = 8445 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==36: - self.state = 8444 - self.match(PostgreSQLParser.AS) - - - self.state = 8447 - self.colid() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Tablesample_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def TABLESAMPLE(self): - return self.getToken(PostgreSQLParser.TABLESAMPLE, 0) - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def opt_repeatable_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_repeatable_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablesample_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablesample_clause" ): - listener.enterTablesample_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablesample_clause" ): - listener.exitTablesample_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablesample_clause" ): - return visitor.visitTablesample_clause(self) - else: - return visitor.visitChildren(self) - - - - - def tablesample_clause(self): - - localctx = PostgreSQLParser.Tablesample_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1080, self.RULE_tablesample_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8450 - self.match(PostgreSQLParser.TABLESAMPLE) - self.state = 8451 - self.func_name() - self.state = 8452 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8453 - self.expr_list() - self.state = 8454 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8455 - self.opt_repeatable_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_repeatable_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REPEATABLE(self): - return self.getToken(PostgreSQLParser.REPEATABLE, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_repeatable_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_repeatable_clause" ): - listener.enterOpt_repeatable_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_repeatable_clause" ): - listener.exitOpt_repeatable_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_repeatable_clause" ): - return visitor.visitOpt_repeatable_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_repeatable_clause(self): - - localctx = PostgreSQLParser.Opt_repeatable_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1082, self.RULE_opt_repeatable_clause) - try: - self.state = 8463 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [303]: - self.enterOuterAlt(localctx, 1) - self.state = 8457 - self.match(PostgreSQLParser.REPEATABLE) - self.state = 8458 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8459 - self.a_expr() - self.state = 8460 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 66, 67, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 103, 104, 105, 110, 113, 115, 118, 119, 121, 126, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_tableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_expr_windowless(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_windowlessContext,0) - - - def opt_ordinality(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_ordinalityContext,0) - - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def rowsfrom_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Rowsfrom_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_table - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_table" ): - listener.enterFunc_table(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_table" ): - listener.exitFunc_table(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_table" ): - return visitor.visitFunc_table(self) - else: - return visitor.visitChildren(self) - - - - - def func_table(self): - - localctx = PostgreSQLParser.Func_tableContext(self, self._ctx, self.state) - self.enterRule(localctx, 1084, self.RULE_func_table) - try: - self.state = 8475 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,497,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8465 - self.func_expr_windowless() - self.state = 8466 - self.opt_ordinality() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8468 - self.match(PostgreSQLParser.ROWS) - self.state = 8469 - self.match(PostgreSQLParser.FROM) - self.state = 8470 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8471 - self.rowsfrom_list() - self.state = 8472 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8473 - self.opt_ordinality() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Rowsfrom_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_expr_windowless(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_windowlessContext,0) - - - def opt_col_def_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_col_def_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsfrom_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsfrom_item" ): - listener.enterRowsfrom_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsfrom_item" ): - listener.exitRowsfrom_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsfrom_item" ): - return visitor.visitRowsfrom_item(self) - else: - return visitor.visitChildren(self) - - - - - def rowsfrom_item(self): - - localctx = PostgreSQLParser.Rowsfrom_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1086, self.RULE_rowsfrom_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8477 - self.func_expr_windowless() - self.state = 8478 - self.opt_col_def_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Rowsfrom_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def rowsfrom_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Rowsfrom_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Rowsfrom_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rowsfrom_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRowsfrom_list" ): - listener.enterRowsfrom_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRowsfrom_list" ): - listener.exitRowsfrom_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRowsfrom_list" ): - return visitor.visitRowsfrom_list(self) - else: - return visitor.visitChildren(self) - - - - - def rowsfrom_list(self): - - localctx = PostgreSQLParser.Rowsfrom_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1088, self.RULE_rowsfrom_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8480 - self.rowsfrom_item() - self.state = 8485 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8481 - self.match(PostgreSQLParser.COMMA) - self.state = 8482 - self.rowsfrom_item() - self.state = 8487 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_col_def_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def tablefuncelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TablefuncelementlistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_col_def_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_col_def_list" ): - listener.enterOpt_col_def_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_col_def_list" ): - listener.exitOpt_col_def_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_col_def_list" ): - return visitor.visitOpt_col_def_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_col_def_list(self): - - localctx = PostgreSQLParser.Opt_col_def_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1090, self.RULE_opt_col_def_list) - try: - self.state = 8494 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [36]: - self.enterOuterAlt(localctx, 1) - self.state = 8488 - self.match(PostgreSQLParser.AS) - self.state = 8489 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8490 - self.tablefuncelementlist() - self.state = 8491 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [3, 6]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_ordinalityContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def ORDINALITY(self): - return self.getToken(PostgreSQLParser.ORDINALITY, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_ordinality - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_ordinality" ): - listener.enterOpt_ordinality(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_ordinality" ): - listener.exitOpt_ordinality(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_ordinality" ): - return visitor.visitOpt_ordinality(self) - else: - return visitor.visitChildren(self) - - - - - def opt_ordinality(self): - - localctx = PostgreSQLParser.Opt_ordinalityContext(self, self._ctx, self.state) - self.enterRule(localctx, 1092, self.RULE_opt_ordinality) - try: - self.state = 8499 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,500,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8496 - self.match(PostgreSQLParser.WITH) - self.state = 8497 - self.match(PostgreSQLParser.ORDINALITY) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Where_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHERE(self): - return self.getToken(PostgreSQLParser.WHERE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_where_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhere_clause" ): - listener.enterWhere_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhere_clause" ): - listener.exitWhere_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhere_clause" ): - return visitor.visitWhere_clause(self) - else: - return visitor.visitChildren(self) - - - - - def where_clause(self): - - localctx = PostgreSQLParser.Where_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1094, self.RULE_where_clause) - try: - self.state = 8504 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [103]: - self.enterOuterAlt(localctx, 1) - self.state = 8501 - self.match(PostgreSQLParser.WHERE) - self.state = 8502 - self.a_expr() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 66, 67, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 104, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Where_or_current_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHERE(self): - return self.getToken(PostgreSQLParser.WHERE, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def cursor_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_nameContext,0) - - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_where_or_current_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhere_or_current_clause" ): - listener.enterWhere_or_current_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhere_or_current_clause" ): - listener.exitWhere_or_current_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhere_or_current_clause" ): - return visitor.visitWhere_or_current_clause(self) - else: - return visitor.visitChildren(self) - - - - - def where_or_current_clause(self): - - localctx = PostgreSQLParser.Where_or_current_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1096, self.RULE_where_or_current_clause) - try: - self.state = 8514 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [103]: - self.enterOuterAlt(localctx, 1) - self.state = 8506 - self.match(PostgreSQLParser.WHERE) - self.state = 8511 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,502,self._ctx) - if la_ == 1: - self.state = 8507 - self.match(PostgreSQLParser.CURRENT_P) - self.state = 8508 - self.match(PostgreSQLParser.OF) - self.state = 8509 - self.cursor_name() - pass - - elif la_ == 2: - self.state = 8510 - self.a_expr() - pass - - - pass - elif token in [-1, 2, 3, 7, 31, 32, 46, 57, 61, 65, 71, 87, 88, 92, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class OpttablefuncelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tablefuncelementlist(self): - return self.getTypedRuleContext(PostgreSQLParser.TablefuncelementlistContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opttablefuncelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpttablefuncelementlist" ): - listener.enterOpttablefuncelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpttablefuncelementlist" ): - listener.exitOpttablefuncelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpttablefuncelementlist" ): - return visitor.visitOpttablefuncelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def opttablefuncelementlist(self): - - localctx = PostgreSQLParser.OpttablefuncelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 1098, self.RULE_opttablefuncelementlist) - try: - self.state = 8518 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 8516 - self.tablefuncelementlist() - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TablefuncelementlistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def tablefuncelement(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TablefuncelementContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TablefuncelementContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablefuncelementlist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablefuncelementlist" ): - listener.enterTablefuncelementlist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablefuncelementlist" ): - listener.exitTablefuncelementlist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablefuncelementlist" ): - return visitor.visitTablefuncelementlist(self) - else: - return visitor.visitChildren(self) - - - - - def tablefuncelementlist(self): - - localctx = PostgreSQLParser.TablefuncelementlistContext(self, self._ctx, self.state) - self.enterRule(localctx, 1100, self.RULE_tablefuncelementlist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8520 - self.tablefuncelement() - self.state = 8525 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8521 - self.match(PostgreSQLParser.COMMA) - self.state = 8522 - self.tablefuncelement() - self.state = 8527 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TablefuncelementContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def opt_collate_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_collate_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_tablefuncelement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTablefuncelement" ): - listener.enterTablefuncelement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTablefuncelement" ): - listener.exitTablefuncelement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTablefuncelement" ): - return visitor.visitTablefuncelement(self) - else: - return visitor.visitChildren(self) - - - - - def tablefuncelement(self): - - localctx = PostgreSQLParser.TablefuncelementContext(self, self._ctx, self.state) - self.enterRule(localctx, 1102, self.RULE_tablefuncelement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8528 - self.colid() - self.state = 8529 - self.typename() - self.state = 8530 - self.opt_collate_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class XmltableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def XMLTABLE(self): - return self.getToken(PostgreSQLParser.XMLTABLE, 0) - - def OPEN_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OPEN_PAREN) - else: - return self.getToken(PostgreSQLParser.OPEN_PAREN, i) - - def CLOSE_PAREN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CLOSE_PAREN) - else: - return self.getToken(PostgreSQLParser.CLOSE_PAREN, i) - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def xmlexists_argument(self): - return self.getTypedRuleContext(PostgreSQLParser.Xmlexists_argumentContext,0) - - - def COLUMNS(self): - return self.getToken(PostgreSQLParser.COLUMNS, 0) - - def xmltable_column_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Xmltable_column_listContext,0) - - - def XMLNAMESPACES(self): - return self.getToken(PostgreSQLParser.XMLNAMESPACES, 0) - - def xml_namespace_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_namespace_listContext,0) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmltable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmltable" ): - listener.enterXmltable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmltable" ): - listener.exitXmltable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmltable" ): - return visitor.visitXmltable(self) - else: - return visitor.visitChildren(self) - - - - - def xmltable(self): - - localctx = PostgreSQLParser.XmltableContext(self, self._ctx, self.state) - self.enterRule(localctx, 1104, self.RULE_xmltable) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8532 - self.match(PostgreSQLParser.XMLTABLE) - self.state = 8533 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8549 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,506,self._ctx) - if la_ == 1: - self.state = 8534 - self.c_expr() - self.state = 8535 - self.xmlexists_argument() - self.state = 8536 - self.match(PostgreSQLParser.COLUMNS) - self.state = 8537 - self.xmltable_column_list() - pass - - elif la_ == 2: - self.state = 8539 - self.match(PostgreSQLParser.XMLNAMESPACES) - self.state = 8540 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8541 - self.xml_namespace_list() - self.state = 8542 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 8543 - self.match(PostgreSQLParser.COMMA) - self.state = 8544 - self.c_expr() - self.state = 8545 - self.xmlexists_argument() - self.state = 8546 - self.match(PostgreSQLParser.COLUMNS) - self.state = 8547 - self.xmltable_column_list() - pass - - - self.state = 8551 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xmltable_column_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def xmltable_column_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Xmltable_column_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Xmltable_column_elContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmltable_column_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmltable_column_list" ): - listener.enterXmltable_column_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmltable_column_list" ): - listener.exitXmltable_column_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmltable_column_list" ): - return visitor.visitXmltable_column_list(self) - else: - return visitor.visitChildren(self) - - - - - def xmltable_column_list(self): - - localctx = PostgreSQLParser.Xmltable_column_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1106, self.RULE_xmltable_column_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8553 - self.xmltable_column_el() - self.state = 8558 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8554 - self.match(PostgreSQLParser.COMMA) - self.state = 8555 - self.xmltable_column_el() - self.state = 8560 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xmltable_column_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def ORDINALITY(self): - return self.getToken(PostgreSQLParser.ORDINALITY, 0) - - def xmltable_column_option_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Xmltable_column_option_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmltable_column_el - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmltable_column_el" ): - listener.enterXmltable_column_el(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmltable_column_el" ): - listener.exitXmltable_column_el(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmltable_column_el" ): - return visitor.visitXmltable_column_el(self) - else: - return visitor.visitChildren(self) - - - - - def xmltable_column_el(self): - - localctx = PostgreSQLParser.Xmltable_column_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1108, self.RULE_xmltable_column_el) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8561 - self.colid() - self.state = 8568 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 8562 - self.typename() - self.state = 8564 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 33)) & ~0x3f) == 0 and ((1 << (_la - 33)) & 576513529147825157) != 0) or ((((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 74346914954363009) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 56295003965620233) != 0) or ((((_la - 272)) & ~0x3f) == 0 and ((1 << (_la - 272)) & 18068292027564033) != 0) or _la==353 or ((((_la - 433)) & ~0x3f) == 0 and ((1 << (_la - 433)) & -144097595889811453) != 0) or ((((_la - 497)) & ~0x3f) == 0 and ((1 << (_la - 497)) & 12516927) != 0) or ((((_la - 636)) & ~0x3f) == 0 and ((1 << (_la - 636)) & 100663331) != 0): - self.state = 8563 - self.xmltable_column_option_list() - - - pass - elif token in [62]: - self.state = 8566 - self.match(PostgreSQLParser.FOR) - self.state = 8567 - self.match(PostgreSQLParser.ORDINALITY) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xmltable_column_option_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def xmltable_column_option_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Xmltable_column_option_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Xmltable_column_option_elContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmltable_column_option_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmltable_column_option_list" ): - listener.enterXmltable_column_option_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmltable_column_option_list" ): - listener.exitXmltable_column_option_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmltable_column_option_list" ): - return visitor.visitXmltable_column_option_list(self) - else: - return visitor.visitChildren(self) - - - - - def xmltable_column_option_list(self): - - localctx = PostgreSQLParser.Xmltable_column_option_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1110, self.RULE_xmltable_column_option_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8571 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 8570 - self.xmltable_column_option_el() - self.state = 8573 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (((((_la - 33)) & ~0x3f) == 0 and ((1 << (_la - 33)) & 576513529147825157) != 0) or ((((_la - 116)) & ~0x3f) == 0 and ((1 << (_la - 116)) & 74346914954363009) != 0) or ((((_la - 207)) & ~0x3f) == 0 and ((1 << (_la - 207)) & 56295003965620233) != 0) or ((((_la - 272)) & ~0x3f) == 0 and ((1 << (_la - 272)) & 18068292027564033) != 0) or _la==353 or ((((_la - 433)) & ~0x3f) == 0 and ((1 << (_la - 433)) & -144097595889811453) != 0) or ((((_la - 497)) & ~0x3f) == 0 and ((1 << (_la - 497)) & 12516927) != 0) or ((((_la - 636)) & ~0x3f) == 0 and ((1 << (_la - 636)) & 100663331) != 0)): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xmltable_column_option_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmltable_column_option_el - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmltable_column_option_el" ): - listener.enterXmltable_column_option_el(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmltable_column_option_el" ): - listener.exitXmltable_column_option_el(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmltable_column_option_el" ): - return visitor.visitXmltable_column_option_el(self) - else: - return visitor.visitChildren(self) - - - - - def xmltable_column_option_el(self): - - localctx = PostgreSQLParser.Xmltable_column_option_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1112, self.RULE_xmltable_column_option_el) - try: - self.state = 8583 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,511,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8575 - self.match(PostgreSQLParser.DEFAULT) - self.state = 8576 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8577 - self.identifier() - self.state = 8578 - self.a_expr() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 8580 - self.match(PostgreSQLParser.NOT) - self.state = 8581 - self.match(PostgreSQLParser.NULL_P) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 8582 - self.match(PostgreSQLParser.NULL_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_namespace_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def xml_namespace_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Xml_namespace_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Xml_namespace_elContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_namespace_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_namespace_list" ): - listener.enterXml_namespace_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_namespace_list" ): - listener.exitXml_namespace_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_namespace_list" ): - return visitor.visitXml_namespace_list(self) - else: - return visitor.visitChildren(self) - - - - - def xml_namespace_list(self): - - localctx = PostgreSQLParser.Xml_namespace_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1114, self.RULE_xml_namespace_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8585 - self.xml_namespace_el() - self.state = 8590 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 8586 - self.match(PostgreSQLParser.COMMA) - self.state = 8587 - self.xml_namespace_el() - self.state = 8592 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_namespace_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def b_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.B_exprContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_namespace_el - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_namespace_el" ): - listener.enterXml_namespace_el(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_namespace_el" ): - listener.exitXml_namespace_el(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_namespace_el" ): - return visitor.visitXml_namespace_el(self) - else: - return visitor.visitChildren(self) - - - - - def xml_namespace_el(self): - - localctx = PostgreSQLParser.Xml_namespace_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1116, self.RULE_xml_namespace_el) - try: - self.state = 8599 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,513,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8593 - self.b_expr(0) - self.state = 8594 - self.match(PostgreSQLParser.AS) - self.state = 8595 - self.collabel() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8597 - self.match(PostgreSQLParser.DEFAULT) - self.state = 8598 - self.b_expr(0) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class TypenameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def simpletypename(self): - return self.getTypedRuleContext(PostgreSQLParser.SimpletypenameContext,0) - - - def opt_array_bounds(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_array_boundsContext,0) - - - def ARRAY(self): - return self.getToken(PostgreSQLParser.ARRAY, 0) - - def SETOF(self): - return self.getToken(PostgreSQLParser.SETOF, 0) - - def OPEN_BRACKET(self): - return self.getToken(PostgreSQLParser.OPEN_BRACKET, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_BRACKET(self): - return self.getToken(PostgreSQLParser.CLOSE_BRACKET, 0) - - def qualified_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,0) - - - def PERCENT(self): - return self.getToken(PostgreSQLParser.PERCENT, 0) - - def ROWTYPE(self): - return self.getToken(PostgreSQLParser.ROWTYPE, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_typename - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTypename" ): - listener.enterTypename(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTypename" ): - listener.exitTypename(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTypename" ): - return visitor.visitTypename(self) - else: - return visitor.visitChildren(self) - - - - - def typename(self): - - localctx = PostgreSQLParser.TypenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1118, self.RULE_typename) - self._la = 0 # Token type - try: - self.state = 8619 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,517,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8602 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==408: - self.state = 8601 - self.match(PostgreSQLParser.SETOF) - - - self.state = 8604 - self.simpletypename() - self.state = 8613 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,516,self._ctx) - if la_ == 1: - self.state = 8605 - self.opt_array_bounds() - pass - - elif la_ == 2: - self.state = 8606 - self.match(PostgreSQLParser.ARRAY) - self.state = 8611 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,515,self._ctx) - if la_ == 1: - self.state = 8607 - self.match(PostgreSQLParser.OPEN_BRACKET) - self.state = 8608 - self.iconst() - self.state = 8609 - self.match(PostgreSQLParser.CLOSE_BRACKET) - - - pass - - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8615 - self.qualified_name() - self.state = 8616 - self.match(PostgreSQLParser.PERCENT) - self.state = 8617 - _la = self._input.LA(1) - if not(_la==353 or _la==477): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_array_boundsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_BRACKET(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OPEN_BRACKET) - else: - return self.getToken(PostgreSQLParser.OPEN_BRACKET, i) - - def CLOSE_BRACKET(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CLOSE_BRACKET) - else: - return self.getToken(PostgreSQLParser.CLOSE_BRACKET, i) - - def iconst(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.IconstContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_array_bounds - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_array_bounds" ): - listener.enterOpt_array_bounds(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_array_bounds" ): - listener.exitOpt_array_bounds(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_array_bounds" ): - return visitor.visitOpt_array_bounds(self) - else: - return visitor.visitChildren(self) - - - - - def opt_array_bounds(self): - - localctx = PostgreSQLParser.Opt_array_boundsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1120, self.RULE_opt_array_bounds) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8628 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,519,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8621 - self.match(PostgreSQLParser.OPEN_BRACKET) - self.state = 8623 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==658: - self.state = 8622 - self.iconst() - - - self.state = 8625 - self.match(PostgreSQLParser.CLOSE_BRACKET) - self.state = 8630 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,519,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SimpletypenameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def generictype(self): - return self.getTypedRuleContext(PostgreSQLParser.GenerictypeContext,0) - - - def numeric(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericContext,0) - - - def bit(self): - return self.getTypedRuleContext(PostgreSQLParser.BitContext,0) - - - def character(self): - return self.getTypedRuleContext(PostgreSQLParser.CharacterContext,0) - - - def constdatetime(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstdatetimeContext,0) - - - def constinterval(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstintervalContext,0) - - - def opt_interval(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_intervalContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_simpletypename - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSimpletypename" ): - listener.enterSimpletypename(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSimpletypename" ): - listener.exitSimpletypename(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSimpletypename" ): - return visitor.visitSimpletypename(self) - else: - return visitor.visitChildren(self) - - - - - def simpletypename(self): - - localctx = PostgreSQLParser.SimpletypenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1122, self.RULE_simpletypename) - try: - self.state = 8644 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,521,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8631 - self.generictype() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8632 - self.numeric() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 8633 - self.bit() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 8634 - self.character() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 8635 - self.constdatetime() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 8636 - self.constinterval() - self.state = 8642 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,520,self._ctx) - if la_ == 1: - self.state = 8637 - self.opt_interval() - pass - - elif la_ == 2: - self.state = 8638 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8639 - self.iconst() - self.state = 8640 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConsttypenameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def numeric(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericContext,0) - - - def constbit(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstbitContext,0) - - - def constcharacter(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstcharacterContext,0) - - - def constdatetime(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstdatetimeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_consttypename - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConsttypename" ): - listener.enterConsttypename(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConsttypename" ): - listener.exitConsttypename(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConsttypename" ): - return visitor.visitConsttypename(self) - else: - return visitor.visitChildren(self) - - - - - def consttypename(self): - - localctx = PostgreSQLParser.ConsttypenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1124, self.RULE_consttypename) - try: - self.state = 8650 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [190, 381, 383, 387, 388, 391, 394, 395, 402, 406, 409]: - self.enterOuterAlt(localctx, 1) - self.state = 8646 - self.numeric() - pass - elif token in [382]: - self.enterOuterAlt(localctx, 2) - self.state = 8647 - self.constbit() - pass - elif token in [384, 385, 398, 399, 416]: - self.enterOuterAlt(localctx, 3) - self.state = 8648 - self.constcharacter() - pass - elif token in [411, 412]: - self.enterOuterAlt(localctx, 4) - self.state = 8649 - self.constdatetime() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class GenerictypeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_type_modifiers(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_type_modifiersContext,0) - - - def builtin_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Builtin_function_nameContext,0) - - - def type_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_function_nameContext,0) - - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def attrs(self): - return self.getTypedRuleContext(PostgreSQLParser.AttrsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_generictype - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGenerictype" ): - listener.enterGenerictype(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGenerictype" ): - listener.exitGenerictype(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGenerictype" ): - return visitor.visitGenerictype(self) - else: - return visitor.visitChildren(self) - - - - - def generictype(self): - - localctx = PostgreSQLParser.GenerictypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1126, self.RULE_generictype) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8656 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [304, 418, 419, 420, 421, 422, 423, 424, 504, 513, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635]: - self.state = 8652 - self.builtin_function_name() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 471, 472, 473, 475, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.state = 8653 - self.type_function_name() - pass - elif token in [119]: - self.state = 8654 - self.match(PostgreSQLParser.LEFT) - pass - elif token in [126]: - self.state = 8655 - self.match(PostgreSQLParser.RIGHT) - pass - else: - raise NoViableAltException(self) - - self.state = 8659 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,524,self._ctx) - if la_ == 1: - self.state = 8658 - self.attrs() - - - self.state = 8661 - self.opt_type_modifiers() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_type_modifiersContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_type_modifiers - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_type_modifiers" ): - listener.enterOpt_type_modifiers(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_type_modifiers" ): - listener.exitOpt_type_modifiers(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_type_modifiers" ): - return visitor.visitOpt_type_modifiers(self) - else: - return visitor.visitChildren(self) - - - - - def opt_type_modifiers(self): - - localctx = PostgreSQLParser.Opt_type_modifiersContext(self, self._ctx, self.state) - self.enterRule(localctx, 1128, self.RULE_opt_type_modifiers) - try: - self.state = 8668 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,525,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8663 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8664 - self.expr_list() - self.state = 8665 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NumericContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INT_P(self): - return self.getToken(PostgreSQLParser.INT_P, 0) - - def INTEGER(self): - return self.getToken(PostgreSQLParser.INTEGER, 0) - - def SMALLINT(self): - return self.getToken(PostgreSQLParser.SMALLINT, 0) - - def BIGINT(self): - return self.getToken(PostgreSQLParser.BIGINT, 0) - - def REAL(self): - return self.getToken(PostgreSQLParser.REAL, 0) - - def FLOAT_P(self): - return self.getToken(PostgreSQLParser.FLOAT_P, 0) - - def opt_float(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_floatContext,0) - - - def DOUBLE_P(self): - return self.getToken(PostgreSQLParser.DOUBLE_P, 0) - - def PRECISION(self): - return self.getToken(PostgreSQLParser.PRECISION, 0) - - def DECIMAL_P(self): - return self.getToken(PostgreSQLParser.DECIMAL_P, 0) - - def opt_type_modifiers(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_type_modifiersContext,0) - - - def DEC(self): - return self.getToken(PostgreSQLParser.DEC, 0) - - def NUMERIC(self): - return self.getToken(PostgreSQLParser.NUMERIC, 0) - - def BOOLEAN_P(self): - return self.getToken(PostgreSQLParser.BOOLEAN_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_numeric - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNumeric" ): - listener.enterNumeric(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNumeric" ): - listener.exitNumeric(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNumeric" ): - return visitor.visitNumeric(self) - else: - return visitor.visitChildren(self) - - - - - def numeric(self): - - localctx = PostgreSQLParser.NumericContext(self, self._ctx, self.state) - self.enterRule(localctx, 1130, self.RULE_numeric) - try: - self.state = 8686 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [394]: - self.enterOuterAlt(localctx, 1) - self.state = 8670 - self.match(PostgreSQLParser.INT_P) - pass - elif token in [395]: - self.enterOuterAlt(localctx, 2) - self.state = 8671 - self.match(PostgreSQLParser.INTEGER) - pass - elif token in [409]: - self.enterOuterAlt(localctx, 3) - self.state = 8672 - self.match(PostgreSQLParser.SMALLINT) - pass - elif token in [381]: - self.enterOuterAlt(localctx, 4) - self.state = 8673 - self.match(PostgreSQLParser.BIGINT) - pass - elif token in [406]: - self.enterOuterAlt(localctx, 5) - self.state = 8674 - self.match(PostgreSQLParser.REAL) - pass - elif token in [391]: - self.enterOuterAlt(localctx, 6) - self.state = 8675 - self.match(PostgreSQLParser.FLOAT_P) - self.state = 8676 - self.opt_float() - pass - elif token in [190]: - self.enterOuterAlt(localctx, 7) - self.state = 8677 - self.match(PostgreSQLParser.DOUBLE_P) - self.state = 8678 - self.match(PostgreSQLParser.PRECISION) - pass - elif token in [388]: - self.enterOuterAlt(localctx, 8) - self.state = 8679 - self.match(PostgreSQLParser.DECIMAL_P) - self.state = 8680 - self.opt_type_modifiers() - pass - elif token in [387]: - self.enterOuterAlt(localctx, 9) - self.state = 8681 - self.match(PostgreSQLParser.DEC) - self.state = 8682 - self.opt_type_modifiers() - pass - elif token in [402]: - self.enterOuterAlt(localctx, 10) - self.state = 8683 - self.match(PostgreSQLParser.NUMERIC) - self.state = 8684 - self.opt_type_modifiers() - pass - elif token in [383]: - self.enterOuterAlt(localctx, 11) - self.state = 8685 - self.match(PostgreSQLParser.BOOLEAN_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_floatContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_float - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_float" ): - listener.enterOpt_float(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_float" ): - listener.exitOpt_float(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_float" ): - return visitor.visitOpt_float(self) - else: - return visitor.visitChildren(self) - - - - - def opt_float(self): - - localctx = PostgreSQLParser.Opt_floatContext(self, self._ctx, self.state) - self.enterRule(localctx, 1132, self.RULE_opt_float) - try: - self.state = 8693 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,527,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8688 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8689 - self.iconst() - self.state = 8690 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def bitwithlength(self): - return self.getTypedRuleContext(PostgreSQLParser.BitwithlengthContext,0) - - - def bitwithoutlength(self): - return self.getTypedRuleContext(PostgreSQLParser.BitwithoutlengthContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_bit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBit" ): - listener.enterBit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBit" ): - listener.exitBit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBit" ): - return visitor.visitBit(self) - else: - return visitor.visitChildren(self) - - - - - def bit(self): - - localctx = PostgreSQLParser.BitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1134, self.RULE_bit) - try: - self.state = 8697 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,528,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8695 - self.bitwithlength() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8696 - self.bitwithoutlength() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstbitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def bitwithlength(self): - return self.getTypedRuleContext(PostgreSQLParser.BitwithlengthContext,0) - - - def bitwithoutlength(self): - return self.getTypedRuleContext(PostgreSQLParser.BitwithoutlengthContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constbit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstbit" ): - listener.enterConstbit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstbit" ): - listener.exitConstbit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstbit" ): - return visitor.visitConstbit(self) - else: - return visitor.visitChildren(self) - - - - - def constbit(self): - - localctx = PostgreSQLParser.ConstbitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1136, self.RULE_constbit) - try: - self.state = 8701 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,529,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8699 - self.bitwithlength() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8700 - self.bitwithoutlength() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BitwithlengthContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BIT(self): - return self.getToken(PostgreSQLParser.BIT, 0) - - def opt_varying(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_varyingContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_bitwithlength - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBitwithlength" ): - listener.enterBitwithlength(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBitwithlength" ): - listener.exitBitwithlength(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBitwithlength" ): - return visitor.visitBitwithlength(self) - else: - return visitor.visitChildren(self) - - - - - def bitwithlength(self): - - localctx = PostgreSQLParser.BitwithlengthContext(self, self._ctx, self.state) - self.enterRule(localctx, 1138, self.RULE_bitwithlength) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8703 - self.match(PostgreSQLParser.BIT) - self.state = 8704 - self.opt_varying() - self.state = 8705 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8706 - self.expr_list() - self.state = 8707 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BitwithoutlengthContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BIT(self): - return self.getToken(PostgreSQLParser.BIT, 0) - - def opt_varying(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_varyingContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_bitwithoutlength - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBitwithoutlength" ): - listener.enterBitwithoutlength(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBitwithoutlength" ): - listener.exitBitwithoutlength(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBitwithoutlength" ): - return visitor.visitBitwithoutlength(self) - else: - return visitor.visitChildren(self) - - - - - def bitwithoutlength(self): - - localctx = PostgreSQLParser.BitwithoutlengthContext(self, self._ctx, self.state) - self.enterRule(localctx, 1140, self.RULE_bitwithoutlength) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8709 - self.match(PostgreSQLParser.BIT) - self.state = 8710 - self.opt_varying() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CharacterContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def character_c(self): - return self.getTypedRuleContext(PostgreSQLParser.Character_cContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_character - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCharacter" ): - listener.enterCharacter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCharacter" ): - listener.exitCharacter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCharacter" ): - return visitor.visitCharacter(self) - else: - return visitor.visitChildren(self) - - - - - def character(self): - - localctx = PostgreSQLParser.CharacterContext(self, self._ctx, self.state) - self.enterRule(localctx, 1142, self.RULE_character) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8712 - self.character_c() - self.state = 8717 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,530,self._ctx) - if la_ == 1: - self.state = 8713 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8714 - self.iconst() - self.state = 8715 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstcharacterContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def character_c(self): - return self.getTypedRuleContext(PostgreSQLParser.Character_cContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constcharacter - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstcharacter" ): - listener.enterConstcharacter(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstcharacter" ): - listener.exitConstcharacter(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstcharacter" ): - return visitor.visitConstcharacter(self) - else: - return visitor.visitChildren(self) - - - - - def constcharacter(self): - - localctx = PostgreSQLParser.ConstcharacterContext(self, self._ctx, self.state) - self.enterRule(localctx, 1144, self.RULE_constcharacter) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8719 - self.character_c() - self.state = 8724 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==2: - self.state = 8720 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8721 - self.iconst() - self.state = 8722 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Character_cContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_varying(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_varyingContext,0) - - - def CHARACTER(self): - return self.getToken(PostgreSQLParser.CHARACTER, 0) - - def CHAR_P(self): - return self.getToken(PostgreSQLParser.CHAR_P, 0) - - def NCHAR(self): - return self.getToken(PostgreSQLParser.NCHAR, 0) - - def VARCHAR(self): - return self.getToken(PostgreSQLParser.VARCHAR, 0) - - def NATIONAL(self): - return self.getToken(PostgreSQLParser.NATIONAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_character_c - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCharacter_c" ): - listener.enterCharacter_c(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCharacter_c" ): - listener.exitCharacter_c(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCharacter_c" ): - return visitor.visitCharacter_c(self) - else: - return visitor.visitChildren(self) - - - - - def character_c(self): - - localctx = PostgreSQLParser.Character_cContext(self, self._ctx, self.state) - self.enterRule(localctx, 1146, self.RULE_character_c) - self._la = 0 # Token type - try: - self.state = 8732 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [384, 385, 399]: - self.enterOuterAlt(localctx, 1) - self.state = 8726 - _la = self._input.LA(1) - if not(((((_la - 384)) & ~0x3f) == 0 and ((1 << (_la - 384)) & 32771) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8727 - self.opt_varying() - pass - elif token in [416]: - self.enterOuterAlt(localctx, 2) - self.state = 8728 - self.match(PostgreSQLParser.VARCHAR) - pass - elif token in [398]: - self.enterOuterAlt(localctx, 3) - self.state = 8729 - self.match(PostgreSQLParser.NATIONAL) - self.state = 8730 - _la = self._input.LA(1) - if not(_la==384 or _la==385): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8731 - self.opt_varying() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_varyingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VARYING(self): - return self.getToken(PostgreSQLParser.VARYING, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_varying - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_varying" ): - listener.enterOpt_varying(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_varying" ): - listener.exitOpt_varying(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_varying" ): - return visitor.visitOpt_varying(self) - else: - return visitor.visitChildren(self) - - - - - def opt_varying(self): - - localctx = PostgreSQLParser.Opt_varyingContext(self, self._ctx, self.state) - self.enterRule(localctx, 1148, self.RULE_opt_varying) - try: - self.state = 8736 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,533,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8734 - self.match(PostgreSQLParser.VARYING) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstdatetimeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_timezone(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_timezoneContext,0) - - - def TIMESTAMP(self): - return self.getToken(PostgreSQLParser.TIMESTAMP, 0) - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constdatetime - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstdatetime" ): - listener.enterConstdatetime(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstdatetime" ): - listener.exitConstdatetime(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstdatetime" ): - return visitor.visitConstdatetime(self) - else: - return visitor.visitChildren(self) - - - - - def constdatetime(self): - - localctx = PostgreSQLParser.ConstdatetimeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1150, self.RULE_constdatetime) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8738 - _la = self._input.LA(1) - if not(_la==411 or _la==412): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8743 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,534,self._ctx) - if la_ == 1: - self.state = 8739 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8740 - self.iconst() - self.state = 8741 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - self.state = 8745 - self.opt_timezone() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ConstintervalContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTERVAL(self): - return self.getToken(PostgreSQLParser.INTERVAL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_constinterval - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterConstinterval" ): - listener.enterConstinterval(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitConstinterval" ): - listener.exitConstinterval(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitConstinterval" ): - return visitor.visitConstinterval(self) - else: - return visitor.visitChildren(self) - - - - - def constinterval(self): - - localctx = PostgreSQLParser.ConstintervalContext(self, self._ctx, self.state) - self.enterRule(localctx, 1152, self.RULE_constinterval) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8747 - self.match(PostgreSQLParser.INTERVAL) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_timezoneContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_timezone - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_timezone" ): - listener.enterOpt_timezone(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_timezone" ): - listener.exitOpt_timezone(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_timezone" ): - return visitor.visitOpt_timezone(self) - else: - return visitor.visitChildren(self) - - - - - def opt_timezone(self): - - localctx = PostgreSQLParser.Opt_timezoneContext(self, self._ctx, self.state) - self.enterRule(localctx, 1154, self.RULE_opt_timezone) - try: - self.state = 8756 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,535,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8749 - self.match(PostgreSQLParser.WITH) - self.state = 8750 - self.match(PostgreSQLParser.TIME) - self.state = 8751 - self.match(PostgreSQLParser.ZONE) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8752 - self.match(PostgreSQLParser.WITHOUT) - self.state = 8753 - self.match(PostgreSQLParser.TIME) - self.state = 8754 - self.match(PostgreSQLParser.ZONE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_intervalContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def YEAR_P(self): - return self.getToken(PostgreSQLParser.YEAR_P, 0) - - def MONTH_P(self): - return self.getToken(PostgreSQLParser.MONTH_P, 0) - - def DAY_P(self): - return self.getToken(PostgreSQLParser.DAY_P, 0) - - def HOUR_P(self): - return self.getToken(PostgreSQLParser.HOUR_P, 0) - - def MINUTE_P(self): - return self.getToken(PostgreSQLParser.MINUTE_P, 0) - - def interval_second(self): - return self.getTypedRuleContext(PostgreSQLParser.Interval_secondContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_interval - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_interval" ): - listener.enterOpt_interval(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_interval" ): - listener.exitOpt_interval(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_interval" ): - return visitor.visitOpt_interval(self) - else: - return visitor.visitChildren(self) - - - - - def opt_interval(self): - - localctx = PostgreSQLParser.Opt_intervalContext(self, self._ctx, self.state) - self.enterRule(localctx, 1156, self.RULE_opt_interval) - try: - self.state = 8784 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,538,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8758 - self.match(PostgreSQLParser.YEAR_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 8759 - self.match(PostgreSQLParser.MONTH_P) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 8760 - self.match(PostgreSQLParser.DAY_P) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 8761 - self.match(PostgreSQLParser.HOUR_P) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 8762 - self.match(PostgreSQLParser.MINUTE_P) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 8763 - self.interval_second() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 8764 - self.match(PostgreSQLParser.YEAR_P) - self.state = 8765 - self.match(PostgreSQLParser.TO) - self.state = 8766 - self.match(PostgreSQLParser.MONTH_P) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 8767 - self.match(PostgreSQLParser.DAY_P) - self.state = 8768 - self.match(PostgreSQLParser.TO) - self.state = 8772 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [218]: - self.state = 8769 - self.match(PostgreSQLParser.HOUR_P) - pass - elif token in [254]: - self.state = 8770 - self.match(PostgreSQLParser.MINUTE_P) - pass - elif token in [319]: - self.state = 8771 - self.interval_second() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 8774 - self.match(PostgreSQLParser.HOUR_P) - self.state = 8775 - self.match(PostgreSQLParser.TO) - self.state = 8778 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [254]: - self.state = 8776 - self.match(PostgreSQLParser.MINUTE_P) - pass - elif token in [319]: - self.state = 8777 - self.interval_second() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 8780 - self.match(PostgreSQLParser.MINUTE_P) - self.state = 8781 - self.match(PostgreSQLParser.TO) - self.state = 8782 - self.interval_second() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Interval_secondContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SECOND_P(self): - return self.getToken(PostgreSQLParser.SECOND_P, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_interval_second - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInterval_second" ): - listener.enterInterval_second(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInterval_second" ): - listener.exitInterval_second(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInterval_second" ): - return visitor.visitInterval_second(self) - else: - return visitor.visitChildren(self) - - - - - def interval_second(self): - - localctx = PostgreSQLParser.Interval_secondContext(self, self._ctx, self.state) - self.enterRule(localctx, 1158, self.RULE_interval_second) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8786 - self.match(PostgreSQLParser.SECOND_P) - self.state = 8791 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,539,self._ctx) - if la_ == 1: - self.state = 8787 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8788 - self.iconst() - self.state = 8789 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_escapeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ESCAPE(self): - return self.getToken(PostgreSQLParser.ESCAPE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_escape - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_escape" ): - listener.enterOpt_escape(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_escape" ): - listener.exitOpt_escape(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_escape" ): - return visitor.visitOpt_escape(self) - else: - return visitor.visitChildren(self) - - - - - def opt_escape(self): - - localctx = PostgreSQLParser.Opt_escapeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1160, self.RULE_opt_escape) - try: - self.state = 8796 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,540,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 8793 - self.match(PostgreSQLParser.ESCAPE) - self.state = 8794 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_qual(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_qualContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr" ): - listener.enterA_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr" ): - listener.exitA_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr" ): - return visitor.visitA_expr(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr(self): - - localctx = PostgreSQLParser.A_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1162, self.RULE_a_expr) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8798 - self.a_expr_qual() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_qualContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_lessless(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_lesslessContext,0) - - - def qual_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_opContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_qual - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_qual" ): - listener.enterA_expr_qual(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_qual" ): - listener.exitA_expr_qual(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_qual" ): - return visitor.visitA_expr_qual(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_qual(self): - - localctx = PostgreSQLParser.A_expr_qualContext(self, self._ctx, self.state) - self.enterRule(localctx, 1164, self.RULE_a_expr_qual) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8800 - self.a_expr_lessless() - self.state = 8802 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,541,self._ctx) - if la_ == 1: - self.state = 8801 - self.qual_op() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_lesslessContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_or(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_orContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_orContext,i) - - - def LESS_LESS(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.LESS_LESS) - else: - return self.getToken(PostgreSQLParser.LESS_LESS, i) - - def GREATER_GREATER(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.GREATER_GREATER) - else: - return self.getToken(PostgreSQLParser.GREATER_GREATER, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_lessless - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_lessless" ): - listener.enterA_expr_lessless(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_lessless" ): - listener.exitA_expr_lessless(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_lessless" ): - return visitor.visitA_expr_lessless(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_lessless(self): - - localctx = PostgreSQLParser.A_expr_lesslessContext(self, self._ctx, self.state) - self.enterRule(localctx, 1166, self.RULE_a_expr_lessless) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8804 - self.a_expr_or() - self.state = 8809 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,542,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8805 - _la = self._input.LA(1) - if not(_la==18 or _la==19): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8806 - self.a_expr_or() - self.state = 8811 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,542,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_orContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_and(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_andContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_andContext,i) - - - def OR(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OR) - else: - return self.getToken(PostgreSQLParser.OR, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_or - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_or" ): - listener.enterA_expr_or(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_or" ): - listener.exitA_expr_or(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_or" ): - return visitor.visitA_expr_or(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_or(self): - - localctx = PostgreSQLParser.A_expr_orContext(self, self._ctx, self.state) - self.enterRule(localctx, 1168, self.RULE_a_expr_or) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8812 - self.a_expr_and() - self.state = 8817 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,543,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8813 - self.match(PostgreSQLParser.OR) - self.state = 8814 - self.a_expr_and() - self.state = 8819 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,543,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_andContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_between(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_betweenContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_betweenContext,i) - - - def AND(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.AND) - else: - return self.getToken(PostgreSQLParser.AND, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_and - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_and" ): - listener.enterA_expr_and(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_and" ): - listener.exitA_expr_and(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_and" ): - return visitor.visitA_expr_and(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_and(self): - - localctx = PostgreSQLParser.A_expr_andContext(self, self._ctx, self.state) - self.enterRule(localctx, 1170, self.RULE_a_expr_and) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8820 - self.a_expr_between() - self.state = 8825 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,544,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8821 - self.match(PostgreSQLParser.AND) - self.state = 8822 - self.a_expr_between() - self.state = 8827 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,544,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_betweenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_in(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_inContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_inContext,i) - - - def BETWEEN(self): - return self.getToken(PostgreSQLParser.BETWEEN, 0) - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def SYMMETRIC(self): - return self.getToken(PostgreSQLParser.SYMMETRIC, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_between - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_between" ): - listener.enterA_expr_between(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_between" ): - listener.exitA_expr_between(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_between" ): - return visitor.visitA_expr_between(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_between(self): - - localctx = PostgreSQLParser.A_expr_betweenContext(self, self._ctx, self.state) - self.enterRule(localctx, 1172, self.RULE_a_expr_between) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8828 - self.a_expr_in() - self.state = 8840 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,547,self._ctx) - if la_ == 1: - self.state = 8830 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 8829 - self.match(PostgreSQLParser.NOT) - - - self.state = 8832 - self.match(PostgreSQLParser.BETWEEN) - self.state = 8834 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==91: - self.state = 8833 - self.match(PostgreSQLParser.SYMMETRIC) - - - self.state = 8836 - self.a_expr_in() - self.state = 8837 - self.match(PostgreSQLParser.AND) - self.state = 8838 - self.a_expr_in() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_inContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_unary_not(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_unary_notContext,0) - - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def in_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.In_exprContext,0) - - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_in - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_in" ): - listener.enterA_expr_in(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_in" ): - listener.exitA_expr_in(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_in" ): - return visitor.visitA_expr_in(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_in(self): - - localctx = PostgreSQLParser.A_expr_inContext(self, self._ctx, self.state) - self.enterRule(localctx, 1174, self.RULE_a_expr_in) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8842 - self.a_expr_unary_not() - self.state = 8848 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,549,self._ctx) - if la_ == 1: - self.state = 8844 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 8843 - self.match(PostgreSQLParser.NOT) - - - self.state = 8846 - self.match(PostgreSQLParser.IN_P) - self.state = 8847 - self.in_expr() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_unary_notContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_isnull(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_isnullContext,0) - - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_unary_not - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_unary_not" ): - listener.enterA_expr_unary_not(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_unary_not" ): - listener.exitA_expr_unary_not(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_unary_not" ): - return visitor.visitA_expr_unary_not(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_unary_not(self): - - localctx = PostgreSQLParser.A_expr_unary_notContext(self, self._ctx, self.state) - self.enterRule(localctx, 1176, self.RULE_a_expr_unary_not) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8851 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 8850 - self.match(PostgreSQLParser.NOT) - - - self.state = 8853 - self.a_expr_isnull() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_isnullContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_is_not(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_is_notContext,0) - - - def ISNULL(self): - return self.getToken(PostgreSQLParser.ISNULL, 0) - - def NOTNULL(self): - return self.getToken(PostgreSQLParser.NOTNULL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_isnull - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_isnull" ): - listener.enterA_expr_isnull(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_isnull" ): - listener.exitA_expr_isnull(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_isnull" ): - return visitor.visitA_expr_isnull(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_isnull(self): - - localctx = PostgreSQLParser.A_expr_isnullContext(self, self._ctx, self.state) - self.enterRule(localctx, 1178, self.RULE_a_expr_isnull) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8855 - self.a_expr_is_not() - self.state = 8857 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,551,self._ctx) - if la_ == 1: - self.state = 8856 - _la = self._input.LA(1) - if not(_la==117 or _la==122): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_is_notContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_compare(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_compareContext,0) - - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def TRUE_P(self): - return self.getToken(PostgreSQLParser.TRUE_P, 0) - - def FALSE_P(self): - return self.getToken(PostgreSQLParser.FALSE_P, 0) - - def UNKNOWN(self): - return self.getToken(PostgreSQLParser.UNKNOWN, 0) - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def DOCUMENT_P(self): - return self.getToken(PostgreSQLParser.DOCUMENT_P, 0) - - def NORMALIZED(self): - return self.getToken(PostgreSQLParser.NORMALIZED, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def unicode_normal_form(self): - return self.getTypedRuleContext(PostgreSQLParser.Unicode_normal_formContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_is_not - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_is_not" ): - listener.enterA_expr_is_not(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_is_not" ): - listener.exitA_expr_is_not(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_is_not" ): - return visitor.visitA_expr_is_not(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_is_not(self): - - localctx = PostgreSQLParser.A_expr_is_notContext(self, self._ctx, self.state) - self.enterRule(localctx, 1180, self.RULE_a_expr_is_not) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8859 - self.a_expr_compare() - self.state = 8883 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,555,self._ctx) - if la_ == 1: - self.state = 8860 - self.match(PostgreSQLParser.IS) - self.state = 8862 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 8861 - self.match(PostgreSQLParser.NOT) - - - self.state = 8881 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [78]: - self.state = 8864 - self.match(PostgreSQLParser.NULL_P) - pass - elif token in [96]: - self.state = 8865 - self.match(PostgreSQLParser.TRUE_P) - pass - elif token in [60]: - self.state = 8866 - self.match(PostgreSQLParser.FALSE_P) - pass - elif token in [358]: - self.state = 8867 - self.match(PostgreSQLParser.UNKNOWN) - pass - elif token in [56]: - self.state = 8868 - self.match(PostgreSQLParser.DISTINCT) - self.state = 8869 - self.match(PostgreSQLParser.FROM) - self.state = 8870 - self.a_expr() - pass - elif token in [268]: - self.state = 8871 - self.match(PostgreSQLParser.OF) - self.state = 8872 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8873 - self.type_list() - self.state = 8874 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [188]: - self.state = 8876 - self.match(PostgreSQLParser.DOCUMENT_P) - pass - elif token in [478, 483, 484, 485, 486]: - self.state = 8878 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 483)) & ~0x3f) == 0 and ((1 << (_la - 483)) & 15) != 0): - self.state = 8877 - self.unicode_normal_form() - - - self.state = 8880 - self.match(PostgreSQLParser.NORMALIZED) - pass - else: - raise NoViableAltException(self) - - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_compareContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_like(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_likeContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_likeContext,i) - - - def subquery_Op(self): - return self.getTypedRuleContext(PostgreSQLParser.Subquery_OpContext,0) - - - def sub_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Sub_typeContext,0) - - - def LT(self): - return self.getToken(PostgreSQLParser.LT, 0) - - def GT(self): - return self.getToken(PostgreSQLParser.GT, 0) - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def LESS_EQUALS(self): - return self.getToken(PostgreSQLParser.LESS_EQUALS, 0) - - def GREATER_EQUALS(self): - return self.getToken(PostgreSQLParser.GREATER_EQUALS, 0) - - def NOT_EQUALS(self): - return self.getToken(PostgreSQLParser.NOT_EQUALS, 0) - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_compare - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_compare" ): - listener.enterA_expr_compare(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_compare" ): - listener.exitA_expr_compare(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_compare" ): - return visitor.visitA_expr_compare(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_compare(self): - - localctx = PostgreSQLParser.A_expr_compareContext(self, self._ctx, self.state) - self.enterRule(localctx, 1182, self.RULE_a_expr_compare) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8885 - self.a_expr_like() - self.state = 8897 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,557,self._ctx) - if la_ == 1: - self.state = 8886 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 44237824) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8887 - self.a_expr_like() - - elif la_ == 2: - self.state = 8888 - self.subquery_Op() - self.state = 8889 - self.sub_type() - self.state = 8895 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,556,self._ctx) - if la_ == 1: - self.state = 8890 - self.select_with_parens() - pass - - elif la_ == 2: - self.state = 8891 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 8892 - self.a_expr() - self.state = 8893 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_likeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_qual_op(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_qual_opContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_qual_opContext,i) - - - def opt_escape(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_escapeContext,0) - - - def LIKE(self): - return self.getToken(PostgreSQLParser.LIKE, 0) - - def ILIKE(self): - return self.getToken(PostgreSQLParser.ILIKE, 0) - - def SIMILAR(self): - return self.getToken(PostgreSQLParser.SIMILAR, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_like - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_like" ): - listener.enterA_expr_like(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_like" ): - listener.exitA_expr_like(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_like" ): - return visitor.visitA_expr_like(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_like(self): - - localctx = PostgreSQLParser.A_expr_likeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1184, self.RULE_a_expr_like) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8899 - self.a_expr_qual_op() - self.state = 8912 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,560,self._ctx) - if la_ == 1: - self.state = 8901 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 8900 - self.match(PostgreSQLParser.NOT) - - - self.state = 8907 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [120]: - self.state = 8903 - self.match(PostgreSQLParser.LIKE) - pass - elif token in [114]: - self.state = 8904 - self.match(PostgreSQLParser.ILIKE) - pass - elif token in [127]: - self.state = 8905 - self.match(PostgreSQLParser.SIMILAR) - self.state = 8906 - self.match(PostgreSQLParser.TO) - pass - else: - raise NoViableAltException(self) - - self.state = 8909 - self.a_expr_qual_op() - self.state = 8910 - self.opt_escape() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_qual_opContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_unary_qualop(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_unary_qualopContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_unary_qualopContext,i) - - - def qual_op(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Qual_opContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Qual_opContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_qual_op - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_qual_op" ): - listener.enterA_expr_qual_op(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_qual_op" ): - listener.exitA_expr_qual_op(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_qual_op" ): - return visitor.visitA_expr_qual_op(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_qual_op(self): - - localctx = PostgreSQLParser.A_expr_qual_opContext(self, self._ctx, self.state) - self.enterRule(localctx, 1186, self.RULE_a_expr_qual_op) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8914 - self.a_expr_unary_qualop() - self.state = 8920 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,561,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8915 - self.qual_op() - self.state = 8916 - self.a_expr_unary_qualop() - self.state = 8922 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,561,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_unary_qualopContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_add(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_addContext,0) - - - def qual_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_opContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_unary_qualop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_unary_qualop" ): - listener.enterA_expr_unary_qualop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_unary_qualop" ): - listener.exitA_expr_unary_qualop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_unary_qualop" ): - return visitor.visitA_expr_unary_qualop(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_unary_qualop(self): - - localctx = PostgreSQLParser.A_expr_unary_qualopContext(self, self._ctx, self.state) - self.enterRule(localctx, 1188, self.RULE_a_expr_unary_qualop) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8924 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,562,self._ctx) - if la_ == 1: - self.state = 8923 - self.qual_op() - - - self.state = 8926 - self.a_expr_add() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_addContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_mul(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_mulContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_mulContext,i) - - - def MINUS(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.MINUS) - else: - return self.getToken(PostgreSQLParser.MINUS, i) - - def PLUS(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.PLUS) - else: - return self.getToken(PostgreSQLParser.PLUS, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_add - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_add" ): - listener.enterA_expr_add(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_add" ): - listener.exitA_expr_add(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_add" ): - return visitor.visitA_expr_add(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_add(self): - - localctx = PostgreSQLParser.A_expr_addContext(self, self._ctx, self.state) - self.enterRule(localctx, 1190, self.RULE_a_expr_add) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8928 - self.a_expr_mul() - self.state = 8933 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,563,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8929 - _la = self._input.LA(1) - if not(_la==12 or _la==13): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8930 - self.a_expr_mul() - self.state = 8935 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,563,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_mulContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_caret(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_expr_caretContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_expr_caretContext,i) - - - def STAR(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.STAR) - else: - return self.getToken(PostgreSQLParser.STAR, i) - - def SLASH(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.SLASH) - else: - return self.getToken(PostgreSQLParser.SLASH, i) - - def PERCENT(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.PERCENT) - else: - return self.getToken(PostgreSQLParser.PERCENT, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_mul - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_mul" ): - listener.enterA_expr_mul(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_mul" ): - listener.exitA_expr_mul(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_mul" ): - return visitor.visitA_expr_mul(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_mul(self): - - localctx = PostgreSQLParser.A_expr_mulContext(self, self._ctx, self.state) - self.enterRule(localctx, 1192, self.RULE_a_expr_mul) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8936 - self.a_expr_caret() - self.state = 8941 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,564,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 8937 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 134234624) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8938 - self.a_expr_caret() - self.state = 8943 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,564,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_caretContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_unary_sign(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_unary_signContext,0) - - - def CARET(self): - return self.getToken(PostgreSQLParser.CARET, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_caret - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_caret" ): - listener.enterA_expr_caret(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_caret" ): - listener.exitA_expr_caret(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_caret" ): - return visitor.visitA_expr_caret(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_caret(self): - - localctx = PostgreSQLParser.A_expr_caretContext(self, self._ctx, self.state) - self.enterRule(localctx, 1194, self.RULE_a_expr_caret) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8944 - self.a_expr_unary_sign() - self.state = 8947 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,565,self._ctx) - if la_ == 1: - self.state = 8945 - self.match(PostgreSQLParser.CARET) - self.state = 8946 - self.a_expr() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_unary_signContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_at_time_zone(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_at_time_zoneContext,0) - - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_unary_sign - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_unary_sign" ): - listener.enterA_expr_unary_sign(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_unary_sign" ): - listener.exitA_expr_unary_sign(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_unary_sign" ): - return visitor.visitA_expr_unary_sign(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_unary_sign(self): - - localctx = PostgreSQLParser.A_expr_unary_signContext(self, self._ctx, self.state) - self.enterRule(localctx, 1196, self.RULE_a_expr_unary_sign) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8950 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==12 or _la==13: - self.state = 8949 - _la = self._input.LA(1) - if not(_la==12 or _la==13): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - self.state = 8952 - self.a_expr_at_time_zone() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_at_time_zoneContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_collate(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_collateContext,0) - - - def AT(self): - return self.getToken(PostgreSQLParser.AT, 0) - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_at_time_zone - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_at_time_zone" ): - listener.enterA_expr_at_time_zone(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_at_time_zone" ): - listener.exitA_expr_at_time_zone(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_at_time_zone" ): - return visitor.visitA_expr_at_time_zone(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_at_time_zone(self): - - localctx = PostgreSQLParser.A_expr_at_time_zoneContext(self, self._ctx, self.state) - self.enterRule(localctx, 1198, self.RULE_a_expr_at_time_zone) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8954 - self.a_expr_collate() - self.state = 8959 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,567,self._ctx) - if la_ == 1: - self.state = 8955 - self.match(PostgreSQLParser.AT) - self.state = 8956 - self.match(PostgreSQLParser.TIME) - self.state = 8957 - self.match(PostgreSQLParser.ZONE) - self.state = 8958 - self.a_expr() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_collateContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr_typecast(self): - return self.getTypedRuleContext(PostgreSQLParser.A_expr_typecastContext,0) - - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_collate - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_collate" ): - listener.enterA_expr_collate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_collate" ): - listener.exitA_expr_collate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_collate" ): - return visitor.visitA_expr_collate(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_collate(self): - - localctx = PostgreSQLParser.A_expr_collateContext(self, self._ctx, self.state) - self.enterRule(localctx, 1200, self.RULE_a_expr_collate) - try: - self.enterOuterAlt(localctx, 1) - self.state = 8961 - self.a_expr_typecast() - self.state = 8964 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,568,self._ctx) - if la_ == 1: - self.state = 8962 - self.match(PostgreSQLParser.COLLATE) - self.state = 8963 - self.any_name() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class A_expr_typecastContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def TYPECAST(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.TYPECAST) - else: - return self.getToken(PostgreSQLParser.TYPECAST, i) - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_a_expr_typecast - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterA_expr_typecast" ): - listener.enterA_expr_typecast(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitA_expr_typecast" ): - listener.exitA_expr_typecast(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitA_expr_typecast" ): - return visitor.visitA_expr_typecast(self) - else: - return visitor.visitChildren(self) - - - - - def a_expr_typecast(self): - - localctx = PostgreSQLParser.A_expr_typecastContext(self, self._ctx, self.state) - self.enterRule(localctx, 1202, self.RULE_a_expr_typecast) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8966 - self.c_expr() - self.state = 8971 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==26: - self.state = 8967 - self.match(PostgreSQLParser.TYPECAST) - self.state = 8968 - self.typename() - self.state = 8973 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class B_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def b_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.B_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.B_exprContext,i) - - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def qual_op(self): - return self.getTypedRuleContext(PostgreSQLParser.Qual_opContext,0) - - - def CARET(self): - return self.getToken(PostgreSQLParser.CARET, 0) - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def SLASH(self): - return self.getToken(PostgreSQLParser.SLASH, 0) - - def PERCENT(self): - return self.getToken(PostgreSQLParser.PERCENT, 0) - - def LT(self): - return self.getToken(PostgreSQLParser.LT, 0) - - def GT(self): - return self.getToken(PostgreSQLParser.GT, 0) - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def LESS_EQUALS(self): - return self.getToken(PostgreSQLParser.LESS_EQUALS, 0) - - def GREATER_EQUALS(self): - return self.getToken(PostgreSQLParser.GREATER_EQUALS, 0) - - def NOT_EQUALS(self): - return self.getToken(PostgreSQLParser.NOT_EQUALS, 0) - - def TYPECAST(self): - return self.getToken(PostgreSQLParser.TYPECAST, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def type_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def DOCUMENT_P(self): - return self.getToken(PostgreSQLParser.DOCUMENT_P, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_b_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterB_expr" ): - listener.enterB_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitB_expr" ): - listener.exitB_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitB_expr" ): - return visitor.visitB_expr(self) - else: - return visitor.visitChildren(self) - - - - def b_expr(self, _p:int=0): - _parentctx = self._ctx - _parentState = self.state - localctx = PostgreSQLParser.B_exprContext(self, self._ctx, _parentState) - _prevctx = localctx - _startState = 1204 - self.enterRecursionRule(localctx, 1204, self.RULE_b_expr, _p) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 8981 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,570,self._ctx) - if la_ == 1: - self.state = 8975 - self.c_expr() - pass - - elif la_ == 2: - self.state = 8976 - _la = self._input.LA(1) - if not(_la==12 or _la==13): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8977 - self.b_expr(9) - pass - - elif la_ == 3: - self.state = 8978 - self.qual_op() - self.state = 8979 - self.b_expr(3) - pass - - - self._ctx.stop = self._input.LT(-1) - self.state = 9022 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,574,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - if self._parseListeners is not None: - self.triggerExitRuleEvent() - _prevctx = localctx - self.state = 9020 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,573,self._ctx) - if la_ == 1: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8983 - if not self.precpred(self._ctx, 8): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") - self.state = 8984 - self.match(PostgreSQLParser.CARET) - self.state = 8985 - self.b_expr(9) - pass - - elif la_ == 2: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8986 - if not self.precpred(self._ctx, 7): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 7)") - self.state = 8987 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 134234624) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8988 - self.b_expr(8) - pass - - elif la_ == 3: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8989 - if not self.precpred(self._ctx, 6): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") - self.state = 8990 - _la = self._input.LA(1) - if not(_la==12 or _la==13): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8991 - self.b_expr(7) - pass - - elif la_ == 4: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8992 - if not self.precpred(self._ctx, 5): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 8993 - self.qual_op() - self.state = 8994 - self.b_expr(6) - pass - - elif la_ == 5: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8996 - if not self.precpred(self._ctx, 4): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") - self.state = 8997 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 44237824) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 8998 - self.b_expr(5) - pass - - elif la_ == 6: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 8999 - if not self.precpred(self._ctx, 10): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 10)") - self.state = 9000 - self.match(PostgreSQLParser.TYPECAST) - self.state = 9001 - self.typename() - pass - - elif la_ == 7: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 9002 - if not self.precpred(self._ctx, 2): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") - self.state = 9003 - self.qual_op() - pass - - elif la_ == 8: - localctx = PostgreSQLParser.B_exprContext(self, _parentctx, _parentState) - self.pushNewRecursionContext(localctx, _startState, self.RULE_b_expr) - self.state = 9004 - if not self.precpred(self._ctx, 1): - from antlr4.error.Errors import FailedPredicateException - raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") - self.state = 9005 - self.match(PostgreSQLParser.IS) - self.state = 9007 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==77: - self.state = 9006 - self.match(PostgreSQLParser.NOT) - - - self.state = 9018 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [56]: - self.state = 9009 - self.match(PostgreSQLParser.DISTINCT) - self.state = 9010 - self.match(PostgreSQLParser.FROM) - self.state = 9011 - self.b_expr(0) - pass - elif token in [268]: - self.state = 9012 - self.match(PostgreSQLParser.OF) - self.state = 9013 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9014 - self.type_list() - self.state = 9015 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [188]: - self.state = 9017 - self.match(PostgreSQLParser.DOCUMENT_P) - pass - else: - raise NoViableAltException(self) - - pass - - - self.state = 9024 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,574,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.unrollRecursionContexts(_parentctx) - return localctx - - - class C_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_c_expr - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class C_expr_existsContext(C_exprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.C_exprContext - super().__init__(parser) - self.copyFrom(ctx) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterC_expr_exists" ): - listener.enterC_expr_exists(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitC_expr_exists" ): - listener.exitC_expr_exists(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitC_expr_exists" ): - return visitor.visitC_expr_exists(self) - else: - return visitor.visitChildren(self) - - - class C_expr_caseContext(C_exprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.C_exprContext - super().__init__(parser) - self.copyFrom(ctx) - - def case_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Case_exprContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterC_expr_case" ): - listener.enterC_expr_case(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitC_expr_case" ): - listener.exitC_expr_case(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitC_expr_case" ): - return visitor.visitC_expr_case(self) - else: - return visitor.visitChildren(self) - - - class C_expr_exprContext(C_exprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.C_exprContext - super().__init__(parser) - self.a_expr_in_parens = None # A_exprContext - self.copyFrom(ctx) - - def ARRAY(self): - return self.getToken(PostgreSQLParser.ARRAY, 0) - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - def array_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Array_exprContext,0) - - def PARAM(self): - return self.getToken(PostgreSQLParser.PARAM, 0) - def opt_indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_indirectionContext,0) - - def GROUPING(self): - return self.getToken(PostgreSQLParser.GROUPING, 0) - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - def UNIQUE(self): - return self.getToken(PostgreSQLParser.UNIQUE, 0) - def columnref(self): - return self.getTypedRuleContext(PostgreSQLParser.ColumnrefContext,0) - - def aexprconst(self): - return self.getTypedRuleContext(PostgreSQLParser.AexprconstContext,0) - - def plsqlvariablename(self): - return self.getTypedRuleContext(PostgreSQLParser.PlsqlvariablenameContext,0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - def func_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_exprContext,0) - - def indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.IndirectionContext,0) - - def explicit_row(self): - return self.getTypedRuleContext(PostgreSQLParser.Explicit_rowContext,0) - - def implicit_row(self): - return self.getTypedRuleContext(PostgreSQLParser.Implicit_rowContext,0) - - def row(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.RowContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.RowContext,i) - - def OVERLAPS(self): - return self.getToken(PostgreSQLParser.OVERLAPS, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterC_expr_expr" ): - listener.enterC_expr_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitC_expr_expr" ): - listener.exitC_expr_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitC_expr_expr" ): - return visitor.visitC_expr_expr(self) - else: - return visitor.visitChildren(self) - - - - def c_expr(self): - - localctx = PostgreSQLParser.C_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1206, self.RULE_c_expr) - try: - self.state = 9061 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,577,self._ctx) - if la_ == 1: - localctx = PostgreSQLParser.C_expr_existsContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 9025 - self.match(PostgreSQLParser.EXISTS) - self.state = 9026 - self.select_with_parens() - pass - - elif la_ == 2: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 9027 - self.match(PostgreSQLParser.ARRAY) - self.state = 9030 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 9028 - self.select_with_parens() - pass - elif token in [4]: - self.state = 9029 - self.array_expr() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 3: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 3) - self.state = 9032 - self.match(PostgreSQLParser.PARAM) - self.state = 9033 - self.opt_indirection() - pass - - elif la_ == 4: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 4) - self.state = 9034 - self.match(PostgreSQLParser.GROUPING) - self.state = 9035 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9036 - self.expr_list() - self.state = 9037 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 5: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 5) - self.state = 9039 - self.match(PostgreSQLParser.UNIQUE) - self.state = 9040 - self.select_with_parens() - pass - - elif la_ == 6: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 6) - self.state = 9041 - self.columnref() - pass - - elif la_ == 7: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 7) - self.state = 9042 - self.aexprconst() - pass - - elif la_ == 8: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 8) - self.state = 9043 - self.plsqlvariablename() - pass - - elif la_ == 9: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 9) - self.state = 9044 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9045 - localctx.a_expr_in_parens = self.a_expr() - self.state = 9046 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 9047 - self.opt_indirection() - pass - - elif la_ == 10: - localctx = PostgreSQLParser.C_expr_caseContext(self, localctx) - self.enterOuterAlt(localctx, 10) - self.state = 9049 - self.case_expr() - pass - - elif la_ == 11: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 11) - self.state = 9050 - self.func_expr() - pass - - elif la_ == 12: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 12) - self.state = 9051 - self.select_with_parens() - self.state = 9053 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,576,self._ctx) - if la_ == 1: - self.state = 9052 - self.indirection() - - - pass - - elif la_ == 13: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 13) - self.state = 9055 - self.explicit_row() - pass - - elif la_ == 14: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 14) - self.state = 9056 - self.implicit_row() - pass - - elif la_ == 15: - localctx = PostgreSQLParser.C_expr_exprContext(self, localctx) - self.enterOuterAlt(localctx, 15) - self.state = 9057 - self.row() - self.state = 9058 - self.match(PostgreSQLParser.OVERLAPS) - self.state = 9059 - self.row() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PlsqlvariablenameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PLSQLVARIABLENAME(self): - return self.getToken(PostgreSQLParser.PLSQLVARIABLENAME, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsqlvariablename - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsqlvariablename" ): - listener.enterPlsqlvariablename(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsqlvariablename" ): - listener.exitPlsqlvariablename(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsqlvariablename" ): - return visitor.visitPlsqlvariablename(self) - else: - return visitor.visitChildren(self) - - - - - def plsqlvariablename(self): - - localctx = PostgreSQLParser.PlsqlvariablenameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1208, self.RULE_plsqlvariablename) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9063 - self.match(PostgreSQLParser.PLSQLVARIABLENAME) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_applicationContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def func_arg_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_arg_listContext,0) - - - def opt_sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_sort_clauseContext,0) - - - def VARIADIC(self): - return self.getToken(PostgreSQLParser.VARIADIC, 0) - - def func_arg_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_arg_exprContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_application - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_application" ): - listener.enterFunc_application(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_application" ): - listener.exitFunc_application(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_application" ): - return visitor.visitFunc_application(self) - else: - return visitor.visitChildren(self) - - - - - def func_application(self): - - localctx = PostgreSQLParser.Func_applicationContext(self, self._ctx, self.state) - self.enterRule(localctx, 1210, self.RULE_func_application) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9065 - self.func_name() - self.state = 9066 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9085 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.state = 9067 - self.func_arg_list() - self.state = 9071 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 9068 - self.match(PostgreSQLParser.COMMA) - self.state = 9069 - self.match(PostgreSQLParser.VARIADIC) - self.state = 9070 - self.func_arg_expr() - - - self.state = 9073 - self.opt_sort_clause() - pass - elif token in [101]: - self.state = 9075 - self.match(PostgreSQLParser.VARIADIC) - self.state = 9076 - self.func_arg_expr() - self.state = 9077 - self.opt_sort_clause() - pass - elif token in [30, 56]: - self.state = 9079 - _la = self._input.LA(1) - if not(_la==30 or _la==56): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 9080 - self.func_arg_list() - self.state = 9081 - self.opt_sort_clause() - pass - elif token in [9]: - self.state = 9083 - self.match(PostgreSQLParser.STAR) - pass - elif token in [3]: - pass - else: - raise NoViableAltException(self) - - self.state = 9087 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_application(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_applicationContext,0) - - - def within_group_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Within_group_clauseContext,0) - - - def filter_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Filter_clauseContext,0) - - - def over_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Over_clauseContext,0) - - - def func_expr_common_subexpr(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_common_subexprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_expr" ): - listener.enterFunc_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_expr" ): - listener.exitFunc_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_expr" ): - return visitor.visitFunc_expr(self) - else: - return visitor.visitChildren(self) - - - - - def func_expr(self): - - localctx = PostgreSQLParser.Func_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1212, self.RULE_func_expr) - try: - self.state = 9095 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,580,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9089 - self.func_application() - self.state = 9090 - self.within_group_clause() - self.state = 9091 - self.filter_clause() - self.state = 9092 - self.over_clause() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9094 - self.func_expr_common_subexpr() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_expr_windowlessContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_application(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_applicationContext,0) - - - def func_expr_common_subexpr(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_expr_common_subexprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_expr_windowless - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_expr_windowless" ): - listener.enterFunc_expr_windowless(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_expr_windowless" ): - listener.exitFunc_expr_windowless(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_expr_windowless" ): - return visitor.visitFunc_expr_windowless(self) - else: - return visitor.visitChildren(self) - - - - - def func_expr_windowless(self): - - localctx = PostgreSQLParser.Func_expr_windowlessContext(self, self._ctx, self.state) - self.enterRule(localctx, 1214, self.RULE_func_expr_windowless) - try: - self.state = 9099 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,581,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9097 - self.func_application() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9098 - self.func_expr_common_subexpr() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_expr_common_subexprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def CURRENT_DATE(self): - return self.getToken(PostgreSQLParser.CURRENT_DATE, 0) - - def CURRENT_TIME(self): - return self.getToken(PostgreSQLParser.CURRENT_TIME, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def CURRENT_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.CURRENT_TIMESTAMP, 0) - - def LOCALTIME(self): - return self.getToken(PostgreSQLParser.LOCALTIME, 0) - - def LOCALTIMESTAMP(self): - return self.getToken(PostgreSQLParser.LOCALTIMESTAMP, 0) - - def CURRENT_ROLE(self): - return self.getToken(PostgreSQLParser.CURRENT_ROLE, 0) - - def CURRENT_USER(self): - return self.getToken(PostgreSQLParser.CURRENT_USER, 0) - - def SESSION_USER(self): - return self.getToken(PostgreSQLParser.SESSION_USER, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def CURRENT_CATALOG(self): - return self.getToken(PostgreSQLParser.CURRENT_CATALOG, 0) - - def CURRENT_SCHEMA(self): - return self.getToken(PostgreSQLParser.CURRENT_SCHEMA, 0) - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def EXTRACT(self): - return self.getToken(PostgreSQLParser.EXTRACT, 0) - - def extract_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Extract_listContext,0) - - - def NORMALIZE(self): - return self.getToken(PostgreSQLParser.NORMALIZE, 0) - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def unicode_normal_form(self): - return self.getTypedRuleContext(PostgreSQLParser.Unicode_normal_formContext,0) - - - def OVERLAY(self): - return self.getToken(PostgreSQLParser.OVERLAY, 0) - - def overlay_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Overlay_listContext,0) - - - def POSITION(self): - return self.getToken(PostgreSQLParser.POSITION, 0) - - def position_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Position_listContext,0) - - - def SUBSTRING(self): - return self.getToken(PostgreSQLParser.SUBSTRING, 0) - - def substr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Substr_listContext,0) - - - def TREAT(self): - return self.getToken(PostgreSQLParser.TREAT, 0) - - def TRIM(self): - return self.getToken(PostgreSQLParser.TRIM, 0) - - def trim_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Trim_listContext,0) - - - def BOTH(self): - return self.getToken(PostgreSQLParser.BOTH, 0) - - def LEADING(self): - return self.getToken(PostgreSQLParser.LEADING, 0) - - def TRAILING(self): - return self.getToken(PostgreSQLParser.TRAILING, 0) - - def NULLIF(self): - return self.getToken(PostgreSQLParser.NULLIF, 0) - - def COALESCE(self): - return self.getToken(PostgreSQLParser.COALESCE, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def GREATEST(self): - return self.getToken(PostgreSQLParser.GREATEST, 0) - - def LEAST(self): - return self.getToken(PostgreSQLParser.LEAST, 0) - - def XMLCONCAT(self): - return self.getToken(PostgreSQLParser.XMLCONCAT, 0) - - def XMLELEMENT(self): - return self.getToken(PostgreSQLParser.XMLELEMENT, 0) - - def NAME_P(self): - return self.getToken(PostgreSQLParser.NAME_P, 0) - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def xml_attributes(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_attributesContext,0) - - - def XMLEXISTS(self): - return self.getToken(PostgreSQLParser.XMLEXISTS, 0) - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def xmlexists_argument(self): - return self.getTypedRuleContext(PostgreSQLParser.Xmlexists_argumentContext,0) - - - def XMLFOREST(self): - return self.getToken(PostgreSQLParser.XMLFOREST, 0) - - def xml_attribute_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_attribute_listContext,0) - - - def XMLPARSE(self): - return self.getToken(PostgreSQLParser.XMLPARSE, 0) - - def document_or_content(self): - return self.getTypedRuleContext(PostgreSQLParser.Document_or_contentContext,0) - - - def xml_whitespace_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_whitespace_optionContext,0) - - - def XMLPI(self): - return self.getToken(PostgreSQLParser.XMLPI, 0) - - def XMLROOT(self): - return self.getToken(PostgreSQLParser.XMLROOT, 0) - - def XML_P(self): - return self.getToken(PostgreSQLParser.XML_P, 0) - - def xml_root_version(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_root_versionContext,0) - - - def opt_xml_root_standalone(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_xml_root_standaloneContext,0) - - - def XMLSERIALIZE(self): - return self.getToken(PostgreSQLParser.XMLSERIALIZE, 0) - - def simpletypename(self): - return self.getTypedRuleContext(PostgreSQLParser.SimpletypenameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_expr_common_subexpr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_expr_common_subexpr" ): - listener.enterFunc_expr_common_subexpr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_expr_common_subexpr" ): - listener.exitFunc_expr_common_subexpr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_expr_common_subexpr" ): - return visitor.visitFunc_expr_common_subexpr(self) - else: - return visitor.visitChildren(self) - - - - - def func_expr_common_subexpr(self): - - localctx = PostgreSQLParser.Func_expr_common_subexprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1216, self.RULE_func_expr_common_subexpr) - self._la = 0 # Token type - try: - self.state = 9278 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [108]: - self.enterOuterAlt(localctx, 1) - self.state = 9101 - self.match(PostgreSQLParser.COLLATION) - self.state = 9102 - self.match(PostgreSQLParser.FOR) - self.state = 9103 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9104 - self.a_expr() - self.state = 9105 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [48]: - self.enterOuterAlt(localctx, 2) - self.state = 9107 - self.match(PostgreSQLParser.CURRENT_DATE) - pass - elif token in [50]: - self.enterOuterAlt(localctx, 3) - self.state = 9108 - self.match(PostgreSQLParser.CURRENT_TIME) - self.state = 9113 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,582,self._ctx) - if la_ == 1: - self.state = 9109 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9110 - self.iconst() - self.state = 9111 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - pass - elif token in [51]: - self.enterOuterAlt(localctx, 4) - self.state = 9115 - self.match(PostgreSQLParser.CURRENT_TIMESTAMP) - self.state = 9120 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,583,self._ctx) - if la_ == 1: - self.state = 9116 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9117 - self.iconst() - self.state = 9118 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - pass - elif token in [75]: - self.enterOuterAlt(localctx, 5) - self.state = 9122 - self.match(PostgreSQLParser.LOCALTIME) - self.state = 9127 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,584,self._ctx) - if la_ == 1: - self.state = 9123 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9124 - self.iconst() - self.state = 9125 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - pass - elif token in [76]: - self.enterOuterAlt(localctx, 6) - self.state = 9129 - self.match(PostgreSQLParser.LOCALTIMESTAMP) - self.state = 9134 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,585,self._ctx) - if la_ == 1: - self.state = 9130 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9131 - self.iconst() - self.state = 9132 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - pass - elif token in [49]: - self.enterOuterAlt(localctx, 7) - self.state = 9136 - self.match(PostgreSQLParser.CURRENT_ROLE) - pass - elif token in [52]: - self.enterOuterAlt(localctx, 8) - self.state = 9137 - self.match(PostgreSQLParser.CURRENT_USER) - pass - elif token in [89]: - self.enterOuterAlt(localctx, 9) - self.state = 9138 - self.match(PostgreSQLParser.SESSION_USER) - pass - elif token in [99]: - self.enterOuterAlt(localctx, 10) - self.state = 9139 - self.match(PostgreSQLParser.USER) - pass - elif token in [47]: - self.enterOuterAlt(localctx, 11) - self.state = 9140 - self.match(PostgreSQLParser.CURRENT_CATALOG) - pass - elif token in [111]: - self.enterOuterAlt(localctx, 12) - self.state = 9141 - self.match(PostgreSQLParser.CURRENT_SCHEMA) - pass - elif token in [41]: - self.enterOuterAlt(localctx, 13) - self.state = 9142 - self.match(PostgreSQLParser.CAST) - self.state = 9143 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9144 - self.a_expr() - self.state = 9145 - self.match(PostgreSQLParser.AS) - self.state = 9146 - self.typename() - self.state = 9147 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [390]: - self.enterOuterAlt(localctx, 14) - self.state = 9149 - self.match(PostgreSQLParser.EXTRACT) - self.state = 9150 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9151 - self.extract_list() - self.state = 9152 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [489]: - self.enterOuterAlt(localctx, 15) - self.state = 9154 - self.match(PostgreSQLParser.NORMALIZE) - self.state = 9155 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9156 - self.a_expr() - self.state = 9159 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 9157 - self.match(PostgreSQLParser.COMMA) - self.state = 9158 - self.unicode_normal_form() - - - self.state = 9161 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [403]: - self.enterOuterAlt(localctx, 16) - self.state = 9163 - self.match(PostgreSQLParser.OVERLAY) - self.state = 9164 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9165 - self.overlay_list() - self.state = 9166 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [404]: - self.enterOuterAlt(localctx, 17) - self.state = 9168 - self.match(PostgreSQLParser.POSITION) - self.state = 9169 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9170 - self.position_list() - self.state = 9171 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [410]: - self.enterOuterAlt(localctx, 18) - self.state = 9173 - self.match(PostgreSQLParser.SUBSTRING) - self.state = 9174 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9175 - self.substr_list() - self.state = 9176 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [413]: - self.enterOuterAlt(localctx, 19) - self.state = 9178 - self.match(PostgreSQLParser.TREAT) - self.state = 9179 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9180 - self.a_expr() - self.state = 9181 - self.match(PostgreSQLParser.AS) - self.state = 9182 - self.typename() - self.state = 9183 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [414]: - self.enterOuterAlt(localctx, 20) - self.state = 9185 - self.match(PostgreSQLParser.TRIM) - self.state = 9186 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9188 - self._errHandler.sync(self) - _la = self._input.LA(1) - if ((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & 72057611217797121) != 0): - self.state = 9187 - _la = self._input.LA(1) - if not(((((_la - 39)) & ~0x3f) == 0 and ((1 << (_la - 39)) & 72057611217797121) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - - - self.state = 9190 - self.trim_list() - self.state = 9191 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [401]: - self.enterOuterAlt(localctx, 21) - self.state = 9193 - self.match(PostgreSQLParser.NULLIF) - self.state = 9194 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9195 - self.a_expr() - self.state = 9196 - self.match(PostgreSQLParser.COMMA) - self.state = 9197 - self.a_expr() - self.state = 9198 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [386]: - self.enterOuterAlt(localctx, 22) - self.state = 9200 - self.match(PostgreSQLParser.COALESCE) - self.state = 9201 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9202 - self.expr_list() - self.state = 9203 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [392]: - self.enterOuterAlt(localctx, 23) - self.state = 9205 - self.match(PostgreSQLParser.GREATEST) - self.state = 9206 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9207 - self.expr_list() - self.state = 9208 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [397]: - self.enterOuterAlt(localctx, 24) - self.state = 9210 - self.match(PostgreSQLParser.LEAST) - self.state = 9211 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9212 - self.expr_list() - self.state = 9213 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [425]: - self.enterOuterAlt(localctx, 25) - self.state = 9215 - self.match(PostgreSQLParser.XMLCONCAT) - self.state = 9216 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9217 - self.expr_list() - self.state = 9218 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [426]: - self.enterOuterAlt(localctx, 26) - self.state = 9220 - self.match(PostgreSQLParser.XMLELEMENT) - self.state = 9221 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9222 - self.match(PostgreSQLParser.NAME_P) - self.state = 9223 - self.collabel() - self.state = 9229 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 9224 - self.match(PostgreSQLParser.COMMA) - self.state = 9227 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,588,self._ctx) - if la_ == 1: - self.state = 9225 - self.xml_attributes() - pass - - elif la_ == 2: - self.state = 9226 - self.expr_list() - pass - - - - - self.state = 9231 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [427]: - self.enterOuterAlt(localctx, 27) - self.state = 9233 - self.match(PostgreSQLParser.XMLEXISTS) - self.state = 9234 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9235 - self.c_expr() - self.state = 9236 - self.xmlexists_argument() - self.state = 9237 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [428]: - self.enterOuterAlt(localctx, 28) - self.state = 9239 - self.match(PostgreSQLParser.XMLFOREST) - self.state = 9240 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9241 - self.xml_attribute_list() - self.state = 9242 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [429]: - self.enterOuterAlt(localctx, 29) - self.state = 9244 - self.match(PostgreSQLParser.XMLPARSE) - self.state = 9245 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9246 - self.document_or_content() - self.state = 9247 - self.a_expr() - self.state = 9248 - self.xml_whitespace_option() - self.state = 9249 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [430]: - self.enterOuterAlt(localctx, 30) - self.state = 9251 - self.match(PostgreSQLParser.XMLPI) - self.state = 9252 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9253 - self.match(PostgreSQLParser.NAME_P) - self.state = 9254 - self.collabel() - self.state = 9257 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==6: - self.state = 9255 - self.match(PostgreSQLParser.COMMA) - self.state = 9256 - self.a_expr() - - - self.state = 9259 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [431]: - self.enterOuterAlt(localctx, 31) - self.state = 9261 - self.match(PostgreSQLParser.XMLROOT) - self.state = 9262 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9263 - self.match(PostgreSQLParser.XML_P) - self.state = 9264 - self.a_expr() - self.state = 9265 - self.match(PostgreSQLParser.COMMA) - self.state = 9266 - self.xml_root_version() - self.state = 9267 - self.opt_xml_root_standalone() - self.state = 9268 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [432]: - self.enterOuterAlt(localctx, 32) - self.state = 9270 - self.match(PostgreSQLParser.XMLSERIALIZE) - self.state = 9271 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9272 - self.document_or_content() - self.state = 9273 - self.a_expr() - self.state = 9274 - self.match(PostgreSQLParser.AS) - self.state = 9275 - self.simpletypename() - self.state = 9276 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_root_versionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def VERSION_P(self): - return self.getToken(PostgreSQLParser.VERSION_P, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_root_version - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_root_version" ): - listener.enterXml_root_version(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_root_version" ): - listener.exitXml_root_version(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_root_version" ): - return visitor.visitXml_root_version(self) - else: - return visitor.visitChildren(self) - - - - - def xml_root_version(self): - - localctx = PostgreSQLParser.Xml_root_versionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1218, self.RULE_xml_root_version) - try: - self.state = 9285 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,592,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9280 - self.match(PostgreSQLParser.VERSION_P) - self.state = 9281 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9282 - self.match(PostgreSQLParser.VERSION_P) - self.state = 9283 - self.match(PostgreSQLParser.NO) - self.state = 9284 - self.match(PostgreSQLParser.VALUE_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_xml_root_standaloneContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def STANDALONE_P(self): - return self.getToken(PostgreSQLParser.STANDALONE_P, 0) - - def YES_P(self): - return self.getToken(PostgreSQLParser.YES_P, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_xml_root_standalone - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_xml_root_standalone" ): - listener.enterOpt_xml_root_standalone(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_xml_root_standalone" ): - listener.exitOpt_xml_root_standalone(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_xml_root_standalone" ): - return visitor.visitOpt_xml_root_standalone(self) - else: - return visitor.visitChildren(self) - - - - - def opt_xml_root_standalone(self): - - localctx = PostgreSQLParser.Opt_xml_root_standaloneContext(self, self._ctx, self.state) - self.enterRule(localctx, 1220, self.RULE_opt_xml_root_standalone) - try: - self.state = 9298 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,593,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9287 - self.match(PostgreSQLParser.COMMA) - self.state = 9288 - self.match(PostgreSQLParser.STANDALONE_P) - self.state = 9289 - self.match(PostgreSQLParser.YES_P) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9290 - self.match(PostgreSQLParser.COMMA) - self.state = 9291 - self.match(PostgreSQLParser.STANDALONE_P) - self.state = 9292 - self.match(PostgreSQLParser.NO) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9293 - self.match(PostgreSQLParser.COMMA) - self.state = 9294 - self.match(PostgreSQLParser.STANDALONE_P) - self.state = 9295 - self.match(PostgreSQLParser.NO) - self.state = 9296 - self.match(PostgreSQLParser.VALUE_P) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_attributesContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def XMLATTRIBUTES(self): - return self.getToken(PostgreSQLParser.XMLATTRIBUTES, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def xml_attribute_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Xml_attribute_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_attributes - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_attributes" ): - listener.enterXml_attributes(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_attributes" ): - listener.exitXml_attributes(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_attributes" ): - return visitor.visitXml_attributes(self) - else: - return visitor.visitChildren(self) - - - - - def xml_attributes(self): - - localctx = PostgreSQLParser.Xml_attributesContext(self, self._ctx, self.state) - self.enterRule(localctx, 1222, self.RULE_xml_attributes) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9300 - self.match(PostgreSQLParser.XMLATTRIBUTES) - self.state = 9301 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9302 - self.xml_attribute_list() - self.state = 9303 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_attribute_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def xml_attribute_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Xml_attribute_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Xml_attribute_elContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_attribute_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_attribute_list" ): - listener.enterXml_attribute_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_attribute_list" ): - listener.exitXml_attribute_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_attribute_list" ): - return visitor.visitXml_attribute_list(self) - else: - return visitor.visitChildren(self) - - - - - def xml_attribute_list(self): - - localctx = PostgreSQLParser.Xml_attribute_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1224, self.RULE_xml_attribute_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9305 - self.xml_attribute_el() - self.state = 9310 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9306 - self.match(PostgreSQLParser.COMMA) - self.state = 9307 - self.xml_attribute_el() - self.state = 9312 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_attribute_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_attribute_el - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_attribute_el" ): - listener.enterXml_attribute_el(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_attribute_el" ): - listener.exitXml_attribute_el(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_attribute_el" ): - return visitor.visitXml_attribute_el(self) - else: - return visitor.visitChildren(self) - - - - - def xml_attribute_el(self): - - localctx = PostgreSQLParser.Xml_attribute_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1226, self.RULE_xml_attribute_el) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9313 - self.a_expr() - self.state = 9316 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==36: - self.state = 9314 - self.match(PostgreSQLParser.AS) - self.state = 9315 - self.collabel() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Document_or_contentContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOCUMENT_P(self): - return self.getToken(PostgreSQLParser.DOCUMENT_P, 0) - - def CONTENT_P(self): - return self.getToken(PostgreSQLParser.CONTENT_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_document_or_content - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDocument_or_content" ): - listener.enterDocument_or_content(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDocument_or_content" ): - listener.exitDocument_or_content(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDocument_or_content" ): - return visitor.visitDocument_or_content(self) - else: - return visitor.visitChildren(self) - - - - - def document_or_content(self): - - localctx = PostgreSQLParser.Document_or_contentContext(self, self._ctx, self.state) - self.enterRule(localctx, 1228, self.RULE_document_or_content) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9318 - _la = self._input.LA(1) - if not(_la==166 or _la==188): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_whitespace_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PRESERVE(self): - return self.getToken(PostgreSQLParser.PRESERVE, 0) - - def WHITESPACE_P(self): - return self.getToken(PostgreSQLParser.WHITESPACE_P, 0) - - def STRIP_P(self): - return self.getToken(PostgreSQLParser.STRIP_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_whitespace_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_whitespace_option" ): - listener.enterXml_whitespace_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_whitespace_option" ): - listener.exitXml_whitespace_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_whitespace_option" ): - return visitor.visitXml_whitespace_option(self) - else: - return visitor.visitChildren(self) - - - - - def xml_whitespace_option(self): - - localctx = PostgreSQLParser.Xml_whitespace_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1230, self.RULE_xml_whitespace_option) - try: - self.state = 9325 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [285]: - self.enterOuterAlt(localctx, 1) - self.state = 9320 - self.match(PostgreSQLParser.PRESERVE) - self.state = 9321 - self.match(PostgreSQLParser.WHITESPACE_P) - pass - elif token in [340]: - self.enterOuterAlt(localctx, 2) - self.state = 9322 - self.match(PostgreSQLParser.STRIP_P) - self.state = 9323 - self.match(PostgreSQLParser.WHITESPACE_P) - pass - elif token in [3]: - self.enterOuterAlt(localctx, 3) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xmlexists_argumentContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PASSING(self): - return self.getToken(PostgreSQLParser.PASSING, 0) - - def c_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.C_exprContext,0) - - - def xml_passing_mech(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Xml_passing_mechContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Xml_passing_mechContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xmlexists_argument - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXmlexists_argument" ): - listener.enterXmlexists_argument(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXmlexists_argument" ): - listener.exitXmlexists_argument(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXmlexists_argument" ): - return visitor.visitXmlexists_argument(self) - else: - return visitor.visitChildren(self) - - - - - def xmlexists_argument(self): - - localctx = PostgreSQLParser.Xmlexists_argumentContext(self, self._ctx, self.state) - self.enterRule(localctx, 1232, self.RULE_xmlexists_argument) - try: - self.state = 9342 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,597,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9327 - self.match(PostgreSQLParser.PASSING) - self.state = 9328 - self.c_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9329 - self.match(PostgreSQLParser.PASSING) - self.state = 9330 - self.c_expr() - self.state = 9331 - self.xml_passing_mech() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9333 - self.match(PostgreSQLParser.PASSING) - self.state = 9334 - self.xml_passing_mech() - self.state = 9335 - self.c_expr() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9337 - self.match(PostgreSQLParser.PASSING) - self.state = 9338 - self.xml_passing_mech() - self.state = 9339 - self.c_expr() - self.state = 9340 - self.xml_passing_mech() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Xml_passing_mechContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def REF(self): - return self.getToken(PostgreSQLParser.REF, 0) - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xml_passing_mech - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXml_passing_mech" ): - listener.enterXml_passing_mech(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXml_passing_mech" ): - listener.exitXml_passing_mech(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXml_passing_mech" ): - return visitor.visitXml_passing_mech(self) - else: - return visitor.visitChildren(self) - - - - - def xml_passing_mech(self): - - localctx = PostgreSQLParser.Xml_passing_mechContext(self, self._ctx, self.state) - self.enterRule(localctx, 1234, self.RULE_xml_passing_mech) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9344 - self.match(PostgreSQLParser.BY) - self.state = 9345 - _la = self._input.LA(1) - if not(_la==297 or _la==450): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Within_group_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WITHIN(self): - return self.getToken(PostgreSQLParser.WITHIN, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Sort_clauseContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_within_group_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWithin_group_clause" ): - listener.enterWithin_group_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWithin_group_clause" ): - listener.exitWithin_group_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWithin_group_clause" ): - return visitor.visitWithin_group_clause(self) - else: - return visitor.visitChildren(self) - - - - - def within_group_clause(self): - - localctx = PostgreSQLParser.Within_group_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1236, self.RULE_within_group_clause) - try: - self.state = 9354 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,598,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9347 - self.match(PostgreSQLParser.WITHIN) - self.state = 9348 - self.match(PostgreSQLParser.GROUP_P) - self.state = 9349 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9350 - self.sort_clause() - self.state = 9351 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Filter_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FILTER(self): - return self.getToken(PostgreSQLParser.FILTER, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def WHERE(self): - return self.getToken(PostgreSQLParser.WHERE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_filter_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFilter_clause" ): - listener.enterFilter_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFilter_clause" ): - listener.exitFilter_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFilter_clause" ): - return visitor.visitFilter_clause(self) - else: - return visitor.visitChildren(self) - - - - - def filter_clause(self): - - localctx = PostgreSQLParser.Filter_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1238, self.RULE_filter_clause) - try: - self.state = 9363 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,599,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9356 - self.match(PostgreSQLParser.FILTER) - self.state = 9357 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9358 - self.match(PostgreSQLParser.WHERE) - self.state = 9359 - self.a_expr() - self.state = 9360 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Window_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WINDOW(self): - return self.getToken(PostgreSQLParser.WINDOW, 0) - - def window_definition_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Window_definition_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_window_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWindow_clause" ): - listener.enterWindow_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWindow_clause" ): - listener.exitWindow_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindow_clause" ): - return visitor.visitWindow_clause(self) - else: - return visitor.visitChildren(self) - - - - - def window_clause(self): - - localctx = PostgreSQLParser.Window_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1240, self.RULE_window_clause) - try: - self.state = 9368 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [104]: - self.enterOuterAlt(localctx, 1) - self.state = 9365 - self.match(PostgreSQLParser.WINDOW) - self.state = 9366 - self.window_definition_list() - pass - elif token in [-1, 2, 3, 6, 7, 31, 32, 46, 57, 59, 61, 62, 65, 70, 71, 74, 79, 80, 83, 87, 88, 92, 93, 97, 100, 102, 105, 129, 138, 146, 155, 157, 158, 159, 161, 169, 177, 178, 182, 187, 191, 202, 203, 232, 243, 244, 247, 253, 258, 264, 283, 294, 298, 299, 301, 306, 310, 312, 315, 320, 326, 328, 333, 351, 359, 362, 363, 415, 433, 444, 454, 519, 668]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Window_definition_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def window_definition(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Window_definitionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Window_definitionContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_window_definition_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWindow_definition_list" ): - listener.enterWindow_definition_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWindow_definition_list" ): - listener.exitWindow_definition_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindow_definition_list" ): - return visitor.visitWindow_definition_list(self) - else: - return visitor.visitChildren(self) - - - - - def window_definition_list(self): - - localctx = PostgreSQLParser.Window_definition_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1242, self.RULE_window_definition_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9370 - self.window_definition() - self.state = 9375 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,601,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 9371 - self.match(PostgreSQLParser.COMMA) - self.state = 9372 - self.window_definition() - self.state = 9377 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,601,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Window_definitionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def window_specification(self): - return self.getTypedRuleContext(PostgreSQLParser.Window_specificationContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_window_definition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWindow_definition" ): - listener.enterWindow_definition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWindow_definition" ): - listener.exitWindow_definition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindow_definition" ): - return visitor.visitWindow_definition(self) - else: - return visitor.visitChildren(self) - - - - - def window_definition(self): - - localctx = PostgreSQLParser.Window_definitionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1244, self.RULE_window_definition) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9378 - self.colid() - self.state = 9379 - self.match(PostgreSQLParser.AS) - self.state = 9380 - self.window_specification() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Over_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OVER(self): - return self.getToken(PostgreSQLParser.OVER, 0) - - def window_specification(self): - return self.getTypedRuleContext(PostgreSQLParser.Window_specificationContext,0) - - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_over_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOver_clause" ): - listener.enterOver_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOver_clause" ): - listener.exitOver_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOver_clause" ): - return visitor.visitOver_clause(self) - else: - return visitor.visitChildren(self) - - - - - def over_clause(self): - - localctx = PostgreSQLParser.Over_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1246, self.RULE_over_clause) - try: - self.state = 9388 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,603,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9382 - self.match(PostgreSQLParser.OVER) - self.state = 9385 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2]: - self.state = 9383 - self.window_specification() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 9384 - self.colid() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Window_specificationContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opt_existing_window_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_existing_window_nameContext,0) - - - def opt_partition_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_partition_clauseContext,0) - - - def opt_sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_sort_clauseContext,0) - - - def opt_frame_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_frame_clauseContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_window_specification - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWindow_specification" ): - listener.enterWindow_specification(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWindow_specification" ): - listener.exitWindow_specification(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWindow_specification" ): - return visitor.visitWindow_specification(self) - else: - return visitor.visitChildren(self) - - - - - def window_specification(self): - - localctx = PostgreSQLParser.Window_specificationContext(self, self._ctx, self.state) - self.enterRule(localctx, 1248, self.RULE_window_specification) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9390 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9391 - self.opt_existing_window_name() - self.state = 9392 - self.opt_partition_clause() - self.state = 9393 - self.opt_sort_clause() - self.state = 9394 - self.opt_frame_clause() - self.state = 9395 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_existing_window_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_existing_window_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_existing_window_name" ): - listener.enterOpt_existing_window_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_existing_window_name" ): - listener.exitOpt_existing_window_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_existing_window_name" ): - return visitor.visitOpt_existing_window_name(self) - else: - return visitor.visitChildren(self) - - - - - def opt_existing_window_name(self): - - localctx = PostgreSQLParser.Opt_existing_window_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1250, self.RULE_opt_existing_window_name) - try: - self.state = 9399 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,604,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9397 - self.colid() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_partition_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_partition_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_partition_clause" ): - listener.enterOpt_partition_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_partition_clause" ): - listener.exitOpt_partition_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_partition_clause" ): - return visitor.visitOpt_partition_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_partition_clause(self): - - localctx = PostgreSQLParser.Opt_partition_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1252, self.RULE_opt_partition_clause) - try: - self.state = 9405 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [278]: - self.enterOuterAlt(localctx, 1) - self.state = 9401 - self.match(PostgreSQLParser.PARTITION) - self.state = 9402 - self.match(PostgreSQLParser.BY) - self.state = 9403 - self.expr_list() - pass - elif token in [3, 83, 292, 313, 481]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_frame_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RANGE(self): - return self.getToken(PostgreSQLParser.RANGE, 0) - - def frame_extent(self): - return self.getTypedRuleContext(PostgreSQLParser.Frame_extentContext,0) - - - def opt_window_exclusion_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_window_exclusion_clauseContext,0) - - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def GROUPS(self): - return self.getToken(PostgreSQLParser.GROUPS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_frame_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_frame_clause" ): - listener.enterOpt_frame_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_frame_clause" ): - listener.exitOpt_frame_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_frame_clause" ): - return visitor.visitOpt_frame_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_frame_clause(self): - - localctx = PostgreSQLParser.Opt_frame_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1254, self.RULE_opt_frame_clause) - try: - self.state = 9420 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [292]: - self.enterOuterAlt(localctx, 1) - self.state = 9407 - self.match(PostgreSQLParser.RANGE) - self.state = 9408 - self.frame_extent() - self.state = 9409 - self.opt_window_exclusion_clause() - pass - elif token in [313]: - self.enterOuterAlt(localctx, 2) - self.state = 9411 - self.match(PostgreSQLParser.ROWS) - self.state = 9412 - self.frame_extent() - self.state = 9413 - self.opt_window_exclusion_clause() - pass - elif token in [481]: - self.enterOuterAlt(localctx, 3) - self.state = 9415 - self.match(PostgreSQLParser.GROUPS) - self.state = 9416 - self.frame_extent() - self.state = 9417 - self.opt_window_exclusion_clause() - pass - elif token in [3]: - self.enterOuterAlt(localctx, 4) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_extentContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def frame_bound(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Frame_boundContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Frame_boundContext,i) - - - def BETWEEN(self): - return self.getToken(PostgreSQLParser.BETWEEN, 0) - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_frame_extent - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_extent" ): - listener.enterFrame_extent(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_extent" ): - listener.exitFrame_extent(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_extent" ): - return visitor.visitFrame_extent(self) - else: - return visitor.visitChildren(self) - - - - - def frame_extent(self): - - localctx = PostgreSQLParser.Frame_extentContext(self, self._ctx, self.state) - self.enterRule(localctx, 1256, self.RULE_frame_extent) - try: - self.state = 9428 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,607,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9422 - self.frame_bound() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9423 - self.match(PostgreSQLParser.BETWEEN) - self.state = 9424 - self.frame_bound() - self.state = 9425 - self.match(PostgreSQLParser.AND) - self.state = 9426 - self.frame_bound() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Frame_boundContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def UNBOUNDED(self): - return self.getToken(PostgreSQLParser.UNBOUNDED, 0) - - def PRECEDING(self): - return self.getToken(PostgreSQLParser.PRECEDING, 0) - - def FOLLOWING(self): - return self.getToken(PostgreSQLParser.FOLLOWING, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_frame_bound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFrame_bound" ): - listener.enterFrame_bound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFrame_bound" ): - listener.exitFrame_bound(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFrame_bound" ): - return visitor.visitFrame_bound(self) - else: - return visitor.visitChildren(self) - - - - - def frame_bound(self): - - localctx = PostgreSQLParser.Frame_boundContext(self, self._ctx, self.state) - self.enterRule(localctx, 1258, self.RULE_frame_bound) - self._la = 0 # Token type - try: - self.state = 9437 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,608,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9430 - self.match(PostgreSQLParser.UNBOUNDED) - self.state = 9431 - _la = self._input.LA(1) - if not(_la==208 or _la==282): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9432 - self.match(PostgreSQLParser.CURRENT_P) - self.state = 9433 - self.match(PostgreSQLParser.ROW) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9434 - self.a_expr() - self.state = 9435 - _la = self._input.LA(1) - if not(_la==208 or _la==282): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_window_exclusion_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXCLUDE(self): - return self.getToken(PostgreSQLParser.EXCLUDE, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def TIES(self): - return self.getToken(PostgreSQLParser.TIES, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def OTHERS(self): - return self.getToken(PostgreSQLParser.OTHERS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_window_exclusion_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_window_exclusion_clause" ): - listener.enterOpt_window_exclusion_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_window_exclusion_clause" ): - listener.exitOpt_window_exclusion_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_window_exclusion_clause" ): - return visitor.visitOpt_window_exclusion_clause(self) - else: - return visitor.visitChildren(self) - - - - - def opt_window_exclusion_clause(self): - - localctx = PostgreSQLParser.Opt_window_exclusion_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1260, self.RULE_opt_window_exclusion_clause) - try: - self.state = 9449 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [199]: - self.enterOuterAlt(localctx, 1) - self.state = 9439 - self.match(PostgreSQLParser.EXCLUDE) - self.state = 9446 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [434]: - self.state = 9440 - self.match(PostgreSQLParser.CURRENT_P) - self.state = 9441 - self.match(PostgreSQLParser.ROW) - pass - elif token in [66]: - self.state = 9442 - self.match(PostgreSQLParser.GROUP_P) - pass - elif token in [467]: - self.state = 9443 - self.match(PostgreSQLParser.TIES) - pass - elif token in [262]: - self.state = 9444 - self.match(PostgreSQLParser.NO) - self.state = 9445 - self.match(PostgreSQLParser.OTHERS) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RowContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_row - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRow" ): - listener.enterRow(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRow" ): - listener.exitRow(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRow" ): - return visitor.visitRow(self) - else: - return visitor.visitChildren(self) - - - - - def row(self): - - localctx = PostgreSQLParser.RowContext(self, self._ctx, self.state) - self.enterRule(localctx, 1262, self.RULE_row) - self._la = 0 # Token type - try: - self.state = 9463 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [407]: - self.enterOuterAlt(localctx, 1) - self.state = 9451 - self.match(PostgreSQLParser.ROW) - self.state = 9452 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9454 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3620818277858553860) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & -2120073201) != 0) or ((((_la - 139)) & ~0x3f) == 0 and ((1 << (_la - 139)) & -1) != 0) or ((((_la - 203)) & ~0x3f) == 0 and ((1 << (_la - 203)) & -1266637395197953) != 0) or ((((_la - 267)) & ~0x3f) == 0 and ((1 << (_la - 267)) & -1) != 0) or ((((_la - 331)) & ~0x3f) == 0 and ((1 << (_la - 331)) & -1) != 0) or ((((_la - 395)) & ~0x3f) == 0 and ((1 << (_la - 395)) & -576460752303423489) != 0) or ((((_la - 459)) & ~0x3f) == 0 and ((1 << (_la - 459)) & -1153009465537069057) != 0) or ((((_la - 523)) & ~0x3f) == 0 and ((1 << (_la - 523)) & -1) != 0) or ((((_la - 587)) & ~0x3f) == 0 and ((1 << (_la - 587)) & -3150267939345661953) != 0) or ((((_la - 654)) & ~0x3f) == 0 and ((1 << (_la - 654)) & 131537) != 0): - self.state = 9453 - self.expr_list() - - - self.state = 9456 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - elif token in [2]: - self.enterOuterAlt(localctx, 2) - self.state = 9457 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9458 - self.expr_list() - self.state = 9459 - self.match(PostgreSQLParser.COMMA) - self.state = 9460 - self.a_expr() - self.state = 9461 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Explicit_rowContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_explicit_row - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExplicit_row" ): - listener.enterExplicit_row(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExplicit_row" ): - listener.exitExplicit_row(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExplicit_row" ): - return visitor.visitExplicit_row(self) - else: - return visitor.visitChildren(self) - - - - - def explicit_row(self): - - localctx = PostgreSQLParser.Explicit_rowContext(self, self._ctx, self.state) - self.enterRule(localctx, 1264, self.RULE_explicit_row) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9465 - self.match(PostgreSQLParser.ROW) - self.state = 9466 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9468 - self._errHandler.sync(self) - _la = self._input.LA(1) - if (((_la) & ~0x3f) == 0 and ((1 << _la) & 3620818277858553860) != 0) or ((((_la - 75)) & ~0x3f) == 0 and ((1 << (_la - 75)) & -2120073201) != 0) or ((((_la - 139)) & ~0x3f) == 0 and ((1 << (_la - 139)) & -1) != 0) or ((((_la - 203)) & ~0x3f) == 0 and ((1 << (_la - 203)) & -1266637395197953) != 0) or ((((_la - 267)) & ~0x3f) == 0 and ((1 << (_la - 267)) & -1) != 0) or ((((_la - 331)) & ~0x3f) == 0 and ((1 << (_la - 331)) & -1) != 0) or ((((_la - 395)) & ~0x3f) == 0 and ((1 << (_la - 395)) & -576460752303423489) != 0) or ((((_la - 459)) & ~0x3f) == 0 and ((1 << (_la - 459)) & -1153009465537069057) != 0) or ((((_la - 523)) & ~0x3f) == 0 and ((1 << (_la - 523)) & -1) != 0) or ((((_la - 587)) & ~0x3f) == 0 and ((1 << (_la - 587)) & -3150267939345661953) != 0) or ((((_la - 654)) & ~0x3f) == 0 and ((1 << (_la - 654)) & 131537) != 0): - self.state = 9467 - self.expr_list() - - - self.state = 9470 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Implicit_rowContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_implicit_row - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterImplicit_row" ): - listener.enterImplicit_row(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitImplicit_row" ): - listener.exitImplicit_row(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitImplicit_row" ): - return visitor.visitImplicit_row(self) - else: - return visitor.visitChildren(self) - - - - - def implicit_row(self): - - localctx = PostgreSQLParser.Implicit_rowContext(self, self._ctx, self.state) - self.enterRule(localctx, 1266, self.RULE_implicit_row) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9472 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9473 - self.expr_list() - self.state = 9474 - self.match(PostgreSQLParser.COMMA) - self.state = 9475 - self.a_expr() - self.state = 9476 - self.match(PostgreSQLParser.CLOSE_PAREN) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sub_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ANY(self): - return self.getToken(PostgreSQLParser.ANY, 0) - - def SOME(self): - return self.getToken(PostgreSQLParser.SOME, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sub_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSub_type" ): - listener.enterSub_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSub_type" ): - listener.exitSub_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSub_type" ): - return visitor.visitSub_type(self) - else: - return visitor.visitChildren(self) - - - - - def sub_type(self): - - localctx = PostgreSQLParser.Sub_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1268, self.RULE_sub_type) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9478 - _la = self._input.LA(1) - if not(((((_la - 30)) & ~0x3f) == 0 and ((1 << (_la - 30)) & 1152921504606846993) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class All_opContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Operator(self): - return self.getToken(PostgreSQLParser.Operator, 0) - - def mathop(self): - return self.getTypedRuleContext(PostgreSQLParser.MathopContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_all_op - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAll_op" ): - listener.enterAll_op(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAll_op" ): - listener.exitAll_op(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAll_op" ): - return visitor.visitAll_op(self) - else: - return visitor.visitChildren(self) - - - - - def all_op(self): - - localctx = PostgreSQLParser.All_opContext(self, self._ctx, self.state) - self.enterRule(localctx, 1270, self.RULE_all_op) - try: - self.state = 9482 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [29]: - self.enterOuterAlt(localctx, 1) - self.state = 9480 - self.match(PostgreSQLParser.Operator) - pass - elif token in [9, 10, 12, 13, 14, 15, 16, 17, 21, 23, 25, 27]: - self.enterOuterAlt(localctx, 2) - self.state = 9481 - self.mathop() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class MathopContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def SLASH(self): - return self.getToken(PostgreSQLParser.SLASH, 0) - - def PERCENT(self): - return self.getToken(PostgreSQLParser.PERCENT, 0) - - def CARET(self): - return self.getToken(PostgreSQLParser.CARET, 0) - - def LT(self): - return self.getToken(PostgreSQLParser.LT, 0) - - def GT(self): - return self.getToken(PostgreSQLParser.GT, 0) - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def LESS_EQUALS(self): - return self.getToken(PostgreSQLParser.LESS_EQUALS, 0) - - def GREATER_EQUALS(self): - return self.getToken(PostgreSQLParser.GREATER_EQUALS, 0) - - def NOT_EQUALS(self): - return self.getToken(PostgreSQLParser.NOT_EQUALS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_mathop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMathop" ): - listener.enterMathop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMathop" ): - listener.exitMathop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMathop" ): - return visitor.visitMathop(self) - else: - return visitor.visitChildren(self) - - - - - def mathop(self): - - localctx = PostgreSQLParser.MathopContext(self, self._ctx, self.state) - self.enterRule(localctx, 1272, self.RULE_mathop) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9484 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 178517504) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Qual_opContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Operator(self): - return self.getToken(PostgreSQLParser.Operator, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_qual_op - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQual_op" ): - listener.enterQual_op(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQual_op" ): - listener.exitQual_op(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQual_op" ): - return visitor.visitQual_op(self) - else: - return visitor.visitChildren(self) - - - - - def qual_op(self): - - localctx = PostgreSQLParser.Qual_opContext(self, self._ctx, self.state) - self.enterRule(localctx, 1274, self.RULE_qual_op) - try: - self.state = 9492 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [29]: - self.enterOuterAlt(localctx, 1) - self.state = 9486 - self.match(PostgreSQLParser.Operator) - pass - elif token in [271]: - self.enterOuterAlt(localctx, 2) - self.state = 9487 - self.match(PostgreSQLParser.OPERATOR) - self.state = 9488 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9489 - self.any_operator() - self.state = 9490 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Qual_all_opContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.All_opContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_qual_all_op - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQual_all_op" ): - listener.enterQual_all_op(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQual_all_op" ): - listener.exitQual_all_op(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQual_all_op" ): - return visitor.visitQual_all_op(self) - else: - return visitor.visitChildren(self) - - - - - def qual_all_op(self): - - localctx = PostgreSQLParser.Qual_all_opContext(self, self._ctx, self.state) - self.enterRule(localctx, 1276, self.RULE_qual_all_op) - try: - self.state = 9500 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [9, 10, 12, 13, 14, 15, 16, 17, 21, 23, 25, 27, 29]: - self.enterOuterAlt(localctx, 1) - self.state = 9494 - self.all_op() - pass - elif token in [271]: - self.enterOuterAlt(localctx, 2) - self.state = 9495 - self.match(PostgreSQLParser.OPERATOR) - self.state = 9496 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9497 - self.any_operator() - self.state = 9498 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Subquery_OpContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def all_op(self): - return self.getTypedRuleContext(PostgreSQLParser.All_opContext,0) - - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def any_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_operatorContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def LIKE(self): - return self.getToken(PostgreSQLParser.LIKE, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def ILIKE(self): - return self.getToken(PostgreSQLParser.ILIKE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_subquery_Op - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSubquery_Op" ): - listener.enterSubquery_Op(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSubquery_Op" ): - listener.exitSubquery_Op(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSubquery_Op" ): - return visitor.visitSubquery_Op(self) - else: - return visitor.visitChildren(self) - - - - - def subquery_Op(self): - - localctx = PostgreSQLParser.Subquery_OpContext(self, self._ctx, self.state) - self.enterRule(localctx, 1278, self.RULE_subquery_Op) - try: - self.state = 9514 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,617,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9502 - self.all_op() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9503 - self.match(PostgreSQLParser.OPERATOR) - self.state = 9504 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9505 - self.any_operator() - self.state = 9506 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9508 - self.match(PostgreSQLParser.LIKE) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9509 - self.match(PostgreSQLParser.NOT) - self.state = 9510 - self.match(PostgreSQLParser.LIKE) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9511 - self.match(PostgreSQLParser.ILIKE) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9512 - self.match(PostgreSQLParser.NOT) - self.state = 9513 - self.match(PostgreSQLParser.ILIKE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Expr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_expr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr_list" ): - listener.enterExpr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr_list" ): - listener.exitExpr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr_list" ): - return visitor.visitExpr_list(self) - else: - return visitor.visitChildren(self) - - - - - def expr_list(self): - - localctx = PostgreSQLParser.Expr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1280, self.RULE_expr_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9516 - self.a_expr() - self.state = 9521 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,618,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 9517 - self.match(PostgreSQLParser.COMMA) - self.state = 9518 - self.a_expr() - self.state = 9523 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,618,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_arg_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def func_arg_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Func_arg_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Func_arg_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_arg_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_arg_list" ): - listener.enterFunc_arg_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_arg_list" ): - listener.exitFunc_arg_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_arg_list" ): - return visitor.visitFunc_arg_list(self) - else: - return visitor.visitChildren(self) - - - - - def func_arg_list(self): - - localctx = PostgreSQLParser.Func_arg_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1282, self.RULE_func_arg_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9524 - self.func_arg_expr() - self.state = 9529 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,619,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 9525 - self.match(PostgreSQLParser.COMMA) - self.state = 9526 - self.func_arg_expr() - self.state = 9531 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,619,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_arg_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def param_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Param_nameContext,0) - - - def COLON_EQUALS(self): - return self.getToken(PostgreSQLParser.COLON_EQUALS, 0) - - def EQUALS_GREATER(self): - return self.getToken(PostgreSQLParser.EQUALS_GREATER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_arg_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_arg_expr" ): - listener.enterFunc_arg_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_arg_expr" ): - listener.exitFunc_arg_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_arg_expr" ): - return visitor.visitFunc_arg_expr(self) - else: - return visitor.visitChildren(self) - - - - - def func_arg_expr(self): - - localctx = PostgreSQLParser.Func_arg_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1284, self.RULE_func_arg_expr) - self._la = 0 # Token type - try: - self.state = 9537 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,620,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9532 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9533 - self.param_name() - self.state = 9534 - _la = self._input.LA(1) - if not(_la==20 or _la==22): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 9535 - self.a_expr() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Type_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typename(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.TypenameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_type_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterType_list" ): - listener.enterType_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitType_list" ): - listener.exitType_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitType_list" ): - return visitor.visitType_list(self) - else: - return visitor.visitChildren(self) - - - - - def type_list(self): - - localctx = PostgreSQLParser.Type_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1286, self.RULE_type_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9539 - self.typename() - self.state = 9544 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9540 - self.match(PostgreSQLParser.COMMA) - self.state = 9541 - self.typename() - self.state = 9546 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Array_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_BRACKET(self): - return self.getToken(PostgreSQLParser.OPEN_BRACKET, 0) - - def CLOSE_BRACKET(self): - return self.getToken(PostgreSQLParser.CLOSE_BRACKET, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def array_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Array_expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_array_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArray_expr" ): - listener.enterArray_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArray_expr" ): - listener.exitArray_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArray_expr" ): - return visitor.visitArray_expr(self) - else: - return visitor.visitChildren(self) - - - - - def array_expr(self): - - localctx = PostgreSQLParser.Array_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1288, self.RULE_array_expr) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9547 - self.match(PostgreSQLParser.OPEN_BRACKET) - self.state = 9550 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.state = 9548 - self.expr_list() - pass - elif token in [4]: - self.state = 9549 - self.array_expr_list() - pass - elif token in [5]: - pass - else: - pass - self.state = 9552 - self.match(PostgreSQLParser.CLOSE_BRACKET) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Array_expr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def array_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Array_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Array_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_array_expr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterArray_expr_list" ): - listener.enterArray_expr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitArray_expr_list" ): - listener.exitArray_expr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitArray_expr_list" ): - return visitor.visitArray_expr_list(self) - else: - return visitor.visitChildren(self) - - - - - def array_expr_list(self): - - localctx = PostgreSQLParser.Array_expr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1290, self.RULE_array_expr_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9554 - self.array_expr() - self.state = 9559 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9555 - self.match(PostgreSQLParser.COMMA) - self.state = 9556 - self.array_expr() - self.state = 9561 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Extract_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def extract_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Extract_argContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_extract_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExtract_list" ): - listener.enterExtract_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExtract_list" ): - listener.exitExtract_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExtract_list" ): - return visitor.visitExtract_list(self) - else: - return visitor.visitChildren(self) - - - - - def extract_list(self): - - localctx = PostgreSQLParser.Extract_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1292, self.RULE_extract_list) - try: - self.state = 9567 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 123, 130, 144, 153, 157, 161, 167, 172, 176, 207, 210, 218, 232, 240, 254, 257, 258, 261, 262, 272, 286, 300, 306, 312, 316, 317, 319, 326, 353, 377, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 645, 647, 649, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 9562 - self.extract_arg() - self.state = 9563 - self.match(PostgreSQLParser.FROM) - self.state = 9564 - self.a_expr() - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Extract_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def YEAR_P(self): - return self.getToken(PostgreSQLParser.YEAR_P, 0) - - def MONTH_P(self): - return self.getToken(PostgreSQLParser.MONTH_P, 0) - - def DAY_P(self): - return self.getToken(PostgreSQLParser.DAY_P, 0) - - def HOUR_P(self): - return self.getToken(PostgreSQLParser.HOUR_P, 0) - - def MINUTE_P(self): - return self.getToken(PostgreSQLParser.MINUTE_P, 0) - - def SECOND_P(self): - return self.getToken(PostgreSQLParser.SECOND_P, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_extract_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExtract_arg" ): - listener.enterExtract_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExtract_arg" ): - listener.exitExtract_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExtract_arg" ): - return visitor.visitExtract_arg(self) - else: - return visitor.visitChildren(self) - - - - - def extract_arg(self): - - localctx = PostgreSQLParser.Extract_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 1294, self.RULE_extract_arg) - try: - self.state = 9577 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 123, 130, 144, 153, 157, 161, 167, 172, 207, 210, 232, 240, 258, 261, 262, 272, 286, 300, 306, 312, 316, 317, 326, 353, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 9569 - self.identifier() - pass - elif token in [377]: - self.enterOuterAlt(localctx, 2) - self.state = 9570 - self.match(PostgreSQLParser.YEAR_P) - pass - elif token in [257]: - self.enterOuterAlt(localctx, 3) - self.state = 9571 - self.match(PostgreSQLParser.MONTH_P) - pass - elif token in [176]: - self.enterOuterAlt(localctx, 4) - self.state = 9572 - self.match(PostgreSQLParser.DAY_P) - pass - elif token in [218]: - self.enterOuterAlt(localctx, 5) - self.state = 9573 - self.match(PostgreSQLParser.HOUR_P) - pass - elif token in [254]: - self.enterOuterAlt(localctx, 6) - self.state = 9574 - self.match(PostgreSQLParser.MINUTE_P) - pass - elif token in [319]: - self.enterOuterAlt(localctx, 7) - self.state = 9575 - self.match(PostgreSQLParser.SECOND_P) - pass - elif token in [645, 647, 649, 671]: - self.enterOuterAlt(localctx, 8) - self.state = 9576 - self.sconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Unicode_normal_formContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NFC(self): - return self.getToken(PostgreSQLParser.NFC, 0) - - def NFD(self): - return self.getToken(PostgreSQLParser.NFD, 0) - - def NFKC(self): - return self.getToken(PostgreSQLParser.NFKC, 0) - - def NFKD(self): - return self.getToken(PostgreSQLParser.NFKD, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_unicode_normal_form - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnicode_normal_form" ): - listener.enterUnicode_normal_form(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnicode_normal_form" ): - listener.exitUnicode_normal_form(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnicode_normal_form" ): - return visitor.visitUnicode_normal_form(self) - else: - return visitor.visitChildren(self) - - - - - def unicode_normal_form(self): - - localctx = PostgreSQLParser.Unicode_normal_formContext(self, self._ctx, self.state) - self.enterRule(localctx, 1296, self.RULE_unicode_normal_form) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9579 - _la = self._input.LA(1) - if not(((((_la - 483)) & ~0x3f) == 0 and ((1 << (_la - 483)) & 15) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Overlay_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def PLACING(self): - return self.getToken(PostgreSQLParser.PLACING, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_overlay_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOverlay_list" ): - listener.enterOverlay_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOverlay_list" ): - listener.exitOverlay_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOverlay_list" ): - return visitor.visitOverlay_list(self) - else: - return visitor.visitChildren(self) - - - - - def overlay_list(self): - - localctx = PostgreSQLParser.Overlay_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1298, self.RULE_overlay_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9581 - self.a_expr() - self.state = 9582 - self.match(PostgreSQLParser.PLACING) - self.state = 9583 - self.a_expr() - self.state = 9584 - self.match(PostgreSQLParser.FROM) - self.state = 9585 - self.a_expr() - self.state = 9588 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==62: - self.state = 9586 - self.match(PostgreSQLParser.FOR) - self.state = 9587 - self.a_expr() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Position_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def b_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.B_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.B_exprContext,i) - - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_position_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPosition_list" ): - listener.enterPosition_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPosition_list" ): - listener.exitPosition_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPosition_list" ): - return visitor.visitPosition_list(self) - else: - return visitor.visitChildren(self) - - - - - def position_list(self): - - localctx = PostgreSQLParser.Position_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1300, self.RULE_position_list) - try: - self.state = 9595 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 9590 - self.b_expr(0) - self.state = 9591 - self.match(PostgreSQLParser.IN_P) - self.state = 9592 - self.b_expr(0) - pass - elif token in [3]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Substr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def SIMILAR(self): - return self.getToken(PostgreSQLParser.SIMILAR, 0) - - def ESCAPE(self): - return self.getToken(PostgreSQLParser.ESCAPE, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_substr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSubstr_list" ): - listener.enterSubstr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSubstr_list" ): - listener.exitSubstr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSubstr_list" ): - return visitor.visitSubstr_list(self) - else: - return visitor.visitChildren(self) - - - - - def substr_list(self): - - localctx = PostgreSQLParser.Substr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1302, self.RULE_substr_list) - try: - self.state = 9624 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,628,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9597 - self.a_expr() - self.state = 9598 - self.match(PostgreSQLParser.FROM) - self.state = 9599 - self.a_expr() - self.state = 9600 - self.match(PostgreSQLParser.FOR) - self.state = 9601 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9603 - self.a_expr() - self.state = 9604 - self.match(PostgreSQLParser.FOR) - self.state = 9605 - self.a_expr() - self.state = 9606 - self.match(PostgreSQLParser.FROM) - self.state = 9607 - self.a_expr() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9609 - self.a_expr() - self.state = 9610 - self.match(PostgreSQLParser.FROM) - self.state = 9611 - self.a_expr() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9613 - self.a_expr() - self.state = 9614 - self.match(PostgreSQLParser.FOR) - self.state = 9615 - self.a_expr() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9617 - self.a_expr() - self.state = 9618 - self.match(PostgreSQLParser.SIMILAR) - self.state = 9619 - self.a_expr() - self.state = 9620 - self.match(PostgreSQLParser.ESCAPE) - self.state = 9621 - self.a_expr() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9623 - self.expr_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Trim_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_trim_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTrim_list" ): - listener.enterTrim_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTrim_list" ): - listener.exitTrim_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTrim_list" ): - return visitor.visitTrim_list(self) - else: - return visitor.visitChildren(self) - - - - - def trim_list(self): - - localctx = PostgreSQLParser.Trim_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1304, self.RULE_trim_list) - try: - self.state = 9633 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,629,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9626 - self.a_expr() - self.state = 9627 - self.match(PostgreSQLParser.FROM) - self.state = 9628 - self.expr_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9630 - self.match(PostgreSQLParser.FROM) - self.state = 9631 - self.expr_list() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9632 - self.expr_list() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class In_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_in_expr - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class In_expr_listContext(In_exprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.In_exprContext - super().__init__(parser) - self.copyFrom(ctx) - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIn_expr_list" ): - listener.enterIn_expr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIn_expr_list" ): - listener.exitIn_expr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIn_expr_list" ): - return visitor.visitIn_expr_list(self) - else: - return visitor.visitChildren(self) - - - class In_expr_selectContext(In_exprContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.In_exprContext - super().__init__(parser) - self.copyFrom(ctx) - - def select_with_parens(self): - return self.getTypedRuleContext(PostgreSQLParser.Select_with_parensContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIn_expr_select" ): - listener.enterIn_expr_select(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIn_expr_select" ): - listener.exitIn_expr_select(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIn_expr_select" ): - return visitor.visitIn_expr_select(self) - else: - return visitor.visitChildren(self) - - - - def in_expr(self): - - localctx = PostgreSQLParser.In_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1306, self.RULE_in_expr) - try: - self.state = 9640 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,630,self._ctx) - if la_ == 1: - localctx = PostgreSQLParser.In_expr_selectContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 9635 - self.select_with_parens() - pass - - elif la_ == 2: - localctx = PostgreSQLParser.In_expr_listContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 9636 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9637 - self.expr_list() - self.state = 9638 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Case_exprContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CASE(self): - return self.getToken(PostgreSQLParser.CASE, 0) - - def case_arg(self): - return self.getTypedRuleContext(PostgreSQLParser.Case_argContext,0) - - - def when_clause_list(self): - return self.getTypedRuleContext(PostgreSQLParser.When_clause_listContext,0) - - - def case_default(self): - return self.getTypedRuleContext(PostgreSQLParser.Case_defaultContext,0) - - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_case_expr - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCase_expr" ): - listener.enterCase_expr(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCase_expr" ): - listener.exitCase_expr(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCase_expr" ): - return visitor.visitCase_expr(self) - else: - return visitor.visitChildren(self) - - - - - def case_expr(self): - - localctx = PostgreSQLParser.Case_exprContext(self, self._ctx, self.state) - self.enterRule(localctx, 1308, self.RULE_case_expr) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9642 - self.match(PostgreSQLParser.CASE) - self.state = 9643 - self.case_arg() - self.state = 9644 - self.when_clause_list() - self.state = 9645 - self.case_default() - self.state = 9646 - self.match(PostgreSQLParser.END_P) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class When_clause_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def when_clause(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.When_clauseContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.When_clauseContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_when_clause_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhen_clause_list" ): - listener.enterWhen_clause_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhen_clause_list" ): - listener.exitWhen_clause_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhen_clause_list" ): - return visitor.visitWhen_clause_list(self) - else: - return visitor.visitChildren(self) - - - - - def when_clause_list(self): - - localctx = PostgreSQLParser.When_clause_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1310, self.RULE_when_clause_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9649 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 9648 - self.when_clause() - self.state = 9651 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==102): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class When_clauseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_when_clause - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterWhen_clause" ): - listener.enterWhen_clause(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitWhen_clause" ): - listener.exitWhen_clause(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitWhen_clause" ): - return visitor.visitWhen_clause(self) - else: - return visitor.visitChildren(self) - - - - - def when_clause(self): - - localctx = PostgreSQLParser.When_clauseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1312, self.RULE_when_clause) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9653 - self.match(PostgreSQLParser.WHEN) - self.state = 9654 - self.a_expr() - self.state = 9655 - self.match(PostgreSQLParser.THEN) - self.state = 9656 - self.a_expr() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Case_defaultContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ELSE(self): - return self.getToken(PostgreSQLParser.ELSE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_case_default - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCase_default" ): - listener.enterCase_default(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCase_default" ): - listener.exitCase_default(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCase_default" ): - return visitor.visitCase_default(self) - else: - return visitor.visitChildren(self) - - - - - def case_default(self): - - localctx = PostgreSQLParser.Case_defaultContext(self, self._ctx, self.state) - self.enterRule(localctx, 1314, self.RULE_case_default) - try: - self.state = 9661 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [58]: - self.enterOuterAlt(localctx, 1) - self.state = 9658 - self.match(PostgreSQLParser.ELSE) - self.state = 9659 - self.a_expr() - pass - elif token in [454]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Case_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_case_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCase_arg" ): - listener.enterCase_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCase_arg" ): - listener.exitCase_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCase_arg" ): - return visitor.visitCase_arg(self) - else: - return visitor.visitChildren(self) - - - - - def case_arg(self): - - localctx = PostgreSQLParser.Case_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 1316, self.RULE_case_arg) - try: - self.state = 9665 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 9663 - self.a_expr() - pass - elif token in [102]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColumnrefContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.IndirectionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_columnref - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColumnref" ): - listener.enterColumnref(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColumnref" ): - listener.exitColumnref(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColumnref" ): - return visitor.visitColumnref(self) - else: - return visitor.visitChildren(self) - - - - - def columnref(self): - - localctx = PostgreSQLParser.ColumnrefContext(self, self._ctx, self.state) - self.enterRule(localctx, 1318, self.RULE_columnref) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9667 - self.colid() - self.state = 9669 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,634,self._ctx) - if la_ == 1: - self.state = 9668 - self.indirection() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Indirection_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DOT(self): - return self.getToken(PostgreSQLParser.DOT, 0) - - def attr_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Attr_nameContext,0) - - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def OPEN_BRACKET(self): - return self.getToken(PostgreSQLParser.OPEN_BRACKET, 0) - - def CLOSE_BRACKET(self): - return self.getToken(PostgreSQLParser.CLOSE_BRACKET, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def opt_slice_bound(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Opt_slice_boundContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Opt_slice_boundContext,i) - - - def COLON(self): - return self.getToken(PostgreSQLParser.COLON, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_indirection_el - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndirection_el" ): - listener.enterIndirection_el(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndirection_el" ): - listener.exitIndirection_el(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndirection_el" ): - return visitor.visitIndirection_el(self) - else: - return visitor.visitChildren(self) - - - - - def indirection_el(self): - - localctx = PostgreSQLParser.Indirection_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1320, self.RULE_indirection_el) - try: - self.state = 9686 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [11]: - self.enterOuterAlt(localctx, 1) - self.state = 9671 - self.match(PostgreSQLParser.DOT) - self.state = 9674 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 9672 - self.attr_name() - pass - elif token in [9]: - self.state = 9673 - self.match(PostgreSQLParser.STAR) - pass - else: - raise NoViableAltException(self) - - pass - elif token in [4]: - self.enterOuterAlt(localctx, 2) - self.state = 9676 - self.match(PostgreSQLParser.OPEN_BRACKET) - self.state = 9682 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,636,self._ctx) - if la_ == 1: - self.state = 9677 - self.a_expr() - pass - - elif la_ == 2: - self.state = 9678 - self.opt_slice_bound() - self.state = 9679 - self.match(PostgreSQLParser.COLON) - self.state = 9680 - self.opt_slice_bound() - pass - - - self.state = 9684 - self.match(PostgreSQLParser.CLOSE_BRACKET) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_slice_boundContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_slice_bound - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_slice_bound" ): - listener.enterOpt_slice_bound(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_slice_bound" ): - listener.exitOpt_slice_bound(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_slice_bound" ): - return visitor.visitOpt_slice_bound(self) - else: - return visitor.visitChildren(self) - - - - - def opt_slice_bound(self): - - localctx = PostgreSQLParser.Opt_slice_boundContext(self, self._ctx, self.state) - self.enterRule(localctx, 1322, self.RULE_opt_slice_bound) - try: - self.state = 9690 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 1) - self.state = 9688 - self.a_expr() - pass - elif token in [5, 8]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IndirectionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def indirection_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Indirection_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Indirection_elContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_indirection - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIndirection" ): - listener.enterIndirection(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIndirection" ): - listener.exitIndirection(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIndirection" ): - return visitor.visitIndirection(self) - else: - return visitor.visitChildren(self) - - - - - def indirection(self): - - localctx = PostgreSQLParser.IndirectionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1324, self.RULE_indirection) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9693 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 9692 - self.indirection_el() - - else: - raise NoViableAltException(self) - self.state = 9695 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,639,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_indirectionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def indirection_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Indirection_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Indirection_elContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_indirection - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_indirection" ): - listener.enterOpt_indirection(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_indirection" ): - listener.exitOpt_indirection(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_indirection" ): - return visitor.visitOpt_indirection(self) - else: - return visitor.visitChildren(self) - - - - - def opt_indirection(self): - - localctx = PostgreSQLParser.Opt_indirectionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1326, self.RULE_opt_indirection) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9700 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,640,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 9697 - self.indirection_el() - self.state = 9702 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,640,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_target_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Target_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_target_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_target_list" ): - listener.enterOpt_target_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_target_list" ): - listener.exitOpt_target_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_target_list" ): - return visitor.visitOpt_target_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_target_list(self): - - localctx = PostgreSQLParser.Opt_target_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1328, self.RULE_opt_target_list) - try: - self.state = 9705 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,641,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9703 - self.target_list() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Target_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def target_el(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Target_elContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Target_elContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_target_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTarget_list" ): - listener.enterTarget_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTarget_list" ): - listener.exitTarget_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTarget_list" ): - return visitor.visitTarget_list(self) - else: - return visitor.visitChildren(self) - - - - - def target_list(self): - - localctx = PostgreSQLParser.Target_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1330, self.RULE_target_list) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9707 - self.target_el() - self.state = 9712 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,642,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 9708 - self.match(PostgreSQLParser.COMMA) - self.state = 9709 - self.target_el() - self.state = 9714 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,642,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Target_elContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_target_el - - - def copyFrom(self, ctx:ParserRuleContext): - super().copyFrom(ctx) - - - - class Target_labelContext(Target_elContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.Target_elContext - super().__init__(parser) - self.copyFrom(ctx) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTarget_label" ): - listener.enterTarget_label(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTarget_label" ): - listener.exitTarget_label(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTarget_label" ): - return visitor.visitTarget_label(self) - else: - return visitor.visitChildren(self) - - - class Target_starContext(Target_elContext): - - def __init__(self, parser, ctx:ParserRuleContext): # actually a PostgreSQLParser.Target_elContext - super().__init__(parser) - self.copyFrom(ctx) - - def STAR(self): - return self.getToken(PostgreSQLParser.STAR, 0) - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTarget_star" ): - listener.enterTarget_star(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTarget_star" ): - listener.exitTarget_star(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTarget_star" ): - return visitor.visitTarget_star(self) - else: - return visitor.visitChildren(self) - - - - def target_el(self): - - localctx = PostgreSQLParser.Target_elContext(self, self._ctx, self.state) - self.enterRule(localctx, 1332, self.RULE_target_el) - try: - self.state = 9723 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - localctx = PostgreSQLParser.Target_labelContext(self, localctx) - self.enterOuterAlt(localctx, 1) - self.state = 9715 - self.a_expr() - self.state = 9720 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,643,self._ctx) - if la_ == 1: - self.state = 9716 - self.match(PostgreSQLParser.AS) - self.state = 9717 - self.collabel() - pass - - elif la_ == 2: - self.state = 9718 - self.identifier() - pass - - elif la_ == 3: - pass - - - pass - elif token in [9]: - localctx = PostgreSQLParser.Target_starContext(self, localctx) - self.enterOuterAlt(localctx, 2) - self.state = 9722 - self.match(PostgreSQLParser.STAR) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Qualified_name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def qualified_name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Qualified_nameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Qualified_nameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_qualified_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualified_name_list" ): - listener.enterQualified_name_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualified_name_list" ): - listener.exitQualified_name_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQualified_name_list" ): - return visitor.visitQualified_name_list(self) - else: - return visitor.visitChildren(self) - - - - - def qualified_name_list(self): - - localctx = PostgreSQLParser.Qualified_name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1334, self.RULE_qualified_name_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9725 - self.qualified_name() - self.state = 9730 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9726 - self.match(PostgreSQLParser.COMMA) - self.state = 9727 - self.qualified_name() - self.state = 9732 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Qualified_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.IndirectionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_qualified_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterQualified_name" ): - listener.enterQualified_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitQualified_name" ): - listener.exitQualified_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitQualified_name" ): - return visitor.visitQualified_name(self) - else: - return visitor.visitChildren(self) - - - - - def qualified_name(self): - - localctx = PostgreSQLParser.Qualified_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1336, self.RULE_qualified_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9733 - self.colid() - self.state = 9735 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==4 or _la==11: - self.state = 9734 - self.indirection() - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Name_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def name(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.NameContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.NameContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_name_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterName_list" ): - listener.enterName_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitName_list" ): - listener.exitName_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitName_list" ): - return visitor.visitName_list(self) - else: - return visitor.visitChildren(self) - - - - - def name_list(self): - - localctx = PostgreSQLParser.Name_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1338, self.RULE_name_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9737 - self.name() - self.state = 9742 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9738 - self.match(PostgreSQLParser.COMMA) - self.state = 9739 - self.name() - self.state = 9744 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterName" ): - listener.enterName(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitName" ): - listener.exitName(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitName" ): - return visitor.visitName(self) - else: - return visitor.visitChildren(self) - - - - - def name(self): - - localctx = PostgreSQLParser.NameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1340, self.RULE_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9745 - self.colid() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Attr_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def collabel(self): - return self.getTypedRuleContext(PostgreSQLParser.CollabelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_attr_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAttr_name" ): - listener.enterAttr_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAttr_name" ): - listener.exitAttr_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAttr_name" ): - return visitor.visitAttr_name(self) - else: - return visitor.visitChildren(self) - - - - - def attr_name(self): - - localctx = PostgreSQLParser.Attr_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1342, self.RULE_attr_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9747 - self.collabel() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class File_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_file_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFile_name" ): - listener.enterFile_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFile_name" ): - listener.exitFile_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFile_name" ): - return visitor.visitFile_name(self) - else: - return visitor.visitChildren(self) - - - - - def file_name(self): - - localctx = PostgreSQLParser.File_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1344, self.RULE_file_name) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9749 - self.sconst() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Func_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def builtin_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Builtin_function_nameContext,0) - - - def type_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_function_nameContext,0) - - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def indirection(self): - return self.getTypedRuleContext(PostgreSQLParser.IndirectionContext,0) - - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_func_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFunc_name" ): - listener.enterFunc_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFunc_name" ): - listener.exitFunc_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFunc_name" ): - return visitor.visitFunc_name(self) - else: - return visitor.visitChildren(self) - - - - - def func_name(self): - - localctx = PostgreSQLParser.Func_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1346, self.RULE_func_name) - try: - self.state = 9758 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,648,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9751 - self.builtin_function_name() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9752 - self.type_function_name() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9753 - self.colid() - self.state = 9754 - self.indirection() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9756 - self.match(PostgreSQLParser.LEFT) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9757 - self.match(PostgreSQLParser.RIGHT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AexprconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def fconst(self): - return self.getTypedRuleContext(PostgreSQLParser.FconstContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def bconst(self): - return self.getTypedRuleContext(PostgreSQLParser.BconstContext,0) - - - def xconst(self): - return self.getTypedRuleContext(PostgreSQLParser.XconstContext,0) - - - def func_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_nameContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def func_arg_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Func_arg_listContext,0) - - - def opt_sort_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_sort_clauseContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def consttypename(self): - return self.getTypedRuleContext(PostgreSQLParser.ConsttypenameContext,0) - - - def constinterval(self): - return self.getTypedRuleContext(PostgreSQLParser.ConstintervalContext,0) - - - def opt_interval(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_intervalContext,0) - - - def TRUE_P(self): - return self.getToken(PostgreSQLParser.TRUE_P, 0) - - def FALSE_P(self): - return self.getToken(PostgreSQLParser.FALSE_P, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_aexprconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAexprconst" ): - listener.enterAexprconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAexprconst" ): - listener.exitAexprconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAexprconst" ): - return visitor.visitAexprconst(self) - else: - return visitor.visitChildren(self) - - - - - def aexprconst(self): - - localctx = PostgreSQLParser.AexprconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1348, self.RULE_aexprconst) - try: - self.state = 9792 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,651,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9760 - self.iconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9761 - self.fconst() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9762 - self.sconst() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9763 - self.bconst() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9764 - self.xconst() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9765 - self.func_name() - self.state = 9773 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.state = 9766 - self.sconst() - pass - elif token in [2]: - self.state = 9767 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9768 - self.func_arg_list() - self.state = 9769 - self.opt_sort_clause() - self.state = 9770 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 9771 - self.sconst() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 9775 - self.consttypename() - self.state = 9776 - self.sconst() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 9778 - self.constinterval() - self.state = 9787 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645, 647, 649, 671]: - self.state = 9779 - self.sconst() - self.state = 9780 - self.opt_interval() - pass - elif token in [2]: - self.state = 9782 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 9783 - self.iconst() - self.state = 9784 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 9785 - self.sconst() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 9789 - self.match(PostgreSQLParser.TRUE_P) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 9790 - self.match(PostgreSQLParser.FALSE_P) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 9791 - self.match(PostgreSQLParser.NULL_P) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class XconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def HexadecimalStringConstant(self): - return self.getToken(PostgreSQLParser.HexadecimalStringConstant, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_xconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterXconst" ): - listener.enterXconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitXconst" ): - listener.exitXconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitXconst" ): - return visitor.visitXconst(self) - else: - return visitor.visitChildren(self) - - - - - def xconst(self): - - localctx = PostgreSQLParser.XconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1350, self.RULE_xconst) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9794 - self.match(PostgreSQLParser.HexadecimalStringConstant) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class BconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BinaryStringConstant(self): - return self.getToken(PostgreSQLParser.BinaryStringConstant, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_bconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBconst" ): - listener.enterBconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBconst" ): - listener.exitBconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBconst" ): - return visitor.visitBconst(self) - else: - return visitor.visitChildren(self) - - - - - def bconst(self): - - localctx = PostgreSQLParser.BconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1352, self.RULE_bconst) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9796 - self.match(PostgreSQLParser.BinaryStringConstant) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class FconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Numeric(self): - return self.getToken(PostgreSQLParser.Numeric, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_fconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFconst" ): - listener.enterFconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFconst" ): - listener.exitFconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFconst" ): - return visitor.visitFconst(self) - else: - return visitor.visitChildren(self) - - - - - def fconst(self): - - localctx = PostgreSQLParser.FconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1354, self.RULE_fconst) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9798 - self.match(PostgreSQLParser.Numeric) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Integral(self): - return self.getToken(PostgreSQLParser.Integral, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_iconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIconst" ): - listener.enterIconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIconst" ): - listener.exitIconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIconst" ): - return visitor.visitIconst(self) - else: - return visitor.visitChildren(self) - - - - - def iconst(self): - - localctx = PostgreSQLParser.IconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1356, self.RULE_iconst) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9800 - self.match(PostgreSQLParser.Integral) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def anysconst(self): - return self.getTypedRuleContext(PostgreSQLParser.AnysconstContext,0) - - - def opt_uescape(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_uescapeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSconst" ): - listener.enterSconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSconst" ): - listener.exitSconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSconst" ): - return visitor.visitSconst(self) - else: - return visitor.visitChildren(self) - - - - - def sconst(self): - - localctx = PostgreSQLParser.SconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1358, self.RULE_sconst) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9802 - self.anysconst() - self.state = 9803 - self.opt_uescape() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class AnysconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def StringConstant(self): - return self.getToken(PostgreSQLParser.StringConstant, 0) - - def UnicodeEscapeStringConstant(self): - return self.getToken(PostgreSQLParser.UnicodeEscapeStringConstant, 0) - - def BeginDollarStringConstant(self): - return self.getToken(PostgreSQLParser.BeginDollarStringConstant, 0) - - def EndDollarStringConstant(self): - return self.getToken(PostgreSQLParser.EndDollarStringConstant, 0) - - def DollarText(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.DollarText) - else: - return self.getToken(PostgreSQLParser.DollarText, i) - - def EscapeStringConstant(self): - return self.getToken(PostgreSQLParser.EscapeStringConstant, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_anysconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAnysconst" ): - listener.enterAnysconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAnysconst" ): - listener.exitAnysconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAnysconst" ): - return visitor.visitAnysconst(self) - else: - return visitor.visitChildren(self) - - - - - def anysconst(self): - - localctx = PostgreSQLParser.AnysconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1360, self.RULE_anysconst) - self._la = 0 # Token type - try: - self.state = 9816 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [645]: - self.enterOuterAlt(localctx, 1) - self.state = 9805 - self.match(PostgreSQLParser.StringConstant) - pass - elif token in [647]: - self.enterOuterAlt(localctx, 2) - self.state = 9806 - self.match(PostgreSQLParser.UnicodeEscapeStringConstant) - pass - elif token in [649]: - self.enterOuterAlt(localctx, 3) - self.state = 9807 - self.match(PostgreSQLParser.BeginDollarStringConstant) - self.state = 9811 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==677: - self.state = 9808 - self.match(PostgreSQLParser.DollarText) - self.state = 9813 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 9814 - self.match(PostgreSQLParser.EndDollarStringConstant) - pass - elif token in [671]: - self.enterOuterAlt(localctx, 4) - self.state = 9815 - self.match(PostgreSQLParser.EscapeStringConstant) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_uescapeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def UESCAPE(self): - return self.getToken(PostgreSQLParser.UESCAPE, 0) - - def anysconst(self): - return self.getTypedRuleContext(PostgreSQLParser.AnysconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_uescape - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_uescape" ): - listener.enterOpt_uescape(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_uescape" ): - listener.exitOpt_uescape(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_uescape" ): - return visitor.visitOpt_uescape(self) - else: - return visitor.visitChildren(self) - - - - - def opt_uescape(self): - - localctx = PostgreSQLParser.Opt_uescapeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1362, self.RULE_opt_uescape) - try: - self.state = 9821 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,654,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9818 - self.match(PostgreSQLParser.UESCAPE) - self.state = 9819 - self.anysconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SignediconstContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def PLUS(self): - return self.getToken(PostgreSQLParser.PLUS, 0) - - def MINUS(self): - return self.getToken(PostgreSQLParser.MINUS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_signediconst - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSignediconst" ): - listener.enterSignediconst(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSignediconst" ): - listener.exitSignediconst(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSignediconst" ): - return visitor.visitSignediconst(self) - else: - return visitor.visitChildren(self) - - - - - def signediconst(self): - - localctx = PostgreSQLParser.SignediconstContext(self, self._ctx, self.state) - self.enterRule(localctx, 1364, self.RULE_signediconst) - try: - self.state = 9828 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [658]: - self.enterOuterAlt(localctx, 1) - self.state = 9823 - self.iconst() - pass - elif token in [12]: - self.enterOuterAlt(localctx, 2) - self.state = 9824 - self.match(PostgreSQLParser.PLUS) - self.state = 9825 - self.iconst() - pass - elif token in [13]: - self.enterOuterAlt(localctx, 3) - self.state = 9826 - self.match(PostgreSQLParser.MINUS) - self.state = 9827 - self.iconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RoleidContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def rolespec(self): - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_roleid - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRoleid" ): - listener.enterRoleid(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRoleid" ): - listener.exitRoleid(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRoleid" ): - return visitor.visitRoleid(self) - else: - return visitor.visitChildren(self) - - - - - def roleid(self): - - localctx = PostgreSQLParser.RoleidContext(self, self._ctx, self.state) - self.enterRule(localctx, 1366, self.RULE_roleid) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9830 - self.rolespec() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class RolespecContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def nonreservedword(self): - return self.getTypedRuleContext(PostgreSQLParser.NonreservedwordContext,0) - - - def CURRENT_USER(self): - return self.getToken(PostgreSQLParser.CURRENT_USER, 0) - - def SESSION_USER(self): - return self.getToken(PostgreSQLParser.SESSION_USER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_rolespec - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRolespec" ): - listener.enterRolespec(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRolespec" ): - listener.exitRolespec(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRolespec" ): - return visitor.visitRolespec(self) - else: - return visitor.visitChildren(self) - - - - - def rolespec(self): - - localctx = PostgreSQLParser.RolespecContext(self, self._ctx, self.state) - self.enterRule(localctx, 1368, self.RULE_rolespec) - try: - self.state = 9835 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 9832 - self.nonreservedword() - pass - elif token in [52]: - self.enterOuterAlt(localctx, 2) - self.state = 9833 - self.match(PostgreSQLParser.CURRENT_USER) - pass - elif token in [89]: - self.enterOuterAlt(localctx, 3) - self.state = 9834 - self.match(PostgreSQLParser.SESSION_USER) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Role_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def rolespec(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.RolespecContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.RolespecContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_role_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterRole_list" ): - listener.enterRole_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitRole_list" ): - listener.exitRole_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitRole_list" ): - return visitor.visitRole_list(self) - else: - return visitor.visitChildren(self) - - - - - def role_list(self): - - localctx = PostgreSQLParser.Role_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1370, self.RULE_role_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9837 - self.rolespec() - self.state = 9842 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 9838 - self.match(PostgreSQLParser.COMMA) - self.state = 9839 - self.rolespec() - self.state = 9844 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class ColidContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def col_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Col_name_keywordContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def LEFT(self): - return self.getToken(PostgreSQLParser.LEFT, 0) - - def RIGHT(self): - return self.getToken(PostgreSQLParser.RIGHT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_colid - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterColid" ): - listener.enterColid(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitColid" ): - listener.exitColid(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitColid" ): - return visitor.visitColid(self) - else: - return visitor.visitChildren(self) - - - - - def colid(self): - - localctx = PostgreSQLParser.ColidContext(self, self._ctx, self.state) - self.enterRule(localctx, 1372, self.RULE_colid) - try: - self.state = 9851 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,658,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9845 - self.identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9846 - self.unreserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9847 - self.col_name_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9848 - self.plsql_unreserved_keyword() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9849 - self.match(PostgreSQLParser.LEFT) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9850 - self.match(PostgreSQLParser.RIGHT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Table_aliasContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def col_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Col_name_keywordContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_table_alias - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterTable_alias" ): - listener.enterTable_alias(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitTable_alias" ): - listener.exitTable_alias(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitTable_alias" ): - return visitor.visitTable_alias(self) - else: - return visitor.visitChildren(self) - - - - - def table_alias(self): - - localctx = PostgreSQLParser.Table_aliasContext(self, self._ctx, self.state) - self.enterRule(localctx, 1374, self.RULE_table_alias) - try: - self.state = 9857 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,659,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9853 - self.identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9854 - self.unreserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9855 - self.col_name_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9856 - self.plsql_unreserved_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Type_function_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def type_func_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_func_name_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_type_function_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterType_function_name" ): - listener.enterType_function_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitType_function_name" ): - listener.exitType_function_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitType_function_name" ): - return visitor.visitType_function_name(self) - else: - return visitor.visitChildren(self) - - - - - def type_function_name(self): - - localctx = PostgreSQLParser.Type_function_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1376, self.RULE_type_function_name) - try: - self.state = 9863 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,660,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9859 - self.identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9860 - self.unreserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9861 - self.plsql_unreserved_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9862 - self.type_func_name_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class NonreservedwordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def col_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Col_name_keywordContext,0) - - - def type_func_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_func_name_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_nonreservedword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterNonreservedword" ): - listener.enterNonreservedword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitNonreservedword" ): - listener.exitNonreservedword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitNonreservedword" ): - return visitor.visitNonreservedword(self) - else: - return visitor.visitChildren(self) - - - - - def nonreservedword(self): - - localctx = PostgreSQLParser.NonreservedwordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1378, self.RULE_nonreservedword) - try: - self.state = 9869 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,661,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9865 - self.identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9866 - self.unreserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9867 - self.col_name_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9868 - self.type_func_name_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class CollabelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def col_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Col_name_keywordContext,0) - - - def type_func_name_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Type_func_name_keywordContext,0) - - - def reserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Reserved_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_collabel - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCollabel" ): - listener.enterCollabel(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCollabel" ): - listener.exitCollabel(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCollabel" ): - return visitor.visitCollabel(self) - else: - return visitor.visitChildren(self) - - - - - def collabel(self): - - localctx = PostgreSQLParser.CollabelContext(self, self._ctx, self.state) - self.enterRule(localctx, 1380, self.RULE_collabel) - try: - self.state = 9877 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,662,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9871 - self.identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9872 - self.plsql_unreserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9873 - self.unreserved_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9874 - self.col_name_keyword() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9875 - self.type_func_name_keyword() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9876 - self.reserved_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class IdentifierContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Identifier(self): - return self.getToken(PostgreSQLParser.Identifier, 0) - - def opt_uescape(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_uescapeContext,0) - - - def QuotedIdentifier(self): - return self.getToken(PostgreSQLParser.QuotedIdentifier, 0) - - def UnicodeQuotedIdentifier(self): - return self.getToken(PostgreSQLParser.UnicodeQuotedIdentifier, 0) - - def plsqlvariablename(self): - return self.getTypedRuleContext(PostgreSQLParser.PlsqlvariablenameContext,0) - - - def plsqlidentifier(self): - return self.getTypedRuleContext(PostgreSQLParser.PlsqlidentifierContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_identifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterIdentifier" ): - listener.enterIdentifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitIdentifier" ): - listener.exitIdentifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitIdentifier" ): - return visitor.visitIdentifier(self) - else: - return visitor.visitChildren(self) - - - - - def identifier(self): - - localctx = PostgreSQLParser.IdentifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 1382, self.RULE_identifier) - try: - self.state = 9886 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [636]: - self.enterOuterAlt(localctx, 1) - self.state = 9879 - self.match(PostgreSQLParser.Identifier) - self.state = 9880 - self.opt_uescape() - pass - elif token in [637]: - self.enterOuterAlt(localctx, 2) - self.state = 9881 - self.match(PostgreSQLParser.QuotedIdentifier) - pass - elif token in [641]: - self.enterOuterAlt(localctx, 3) - self.state = 9882 - self.match(PostgreSQLParser.UnicodeQuotedIdentifier) - pass - elif token in [661]: - self.enterOuterAlt(localctx, 4) - self.state = 9883 - self.plsqlvariablename() - pass - elif token in [662]: - self.enterOuterAlt(localctx, 5) - self.state = 9884 - self.plsqlidentifier() - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 123, 130, 144, 153, 157, 161, 167, 172, 207, 210, 232, 240, 258, 261, 262, 272, 286, 300, 306, 312, 316, 317, 326, 353, 433, 434, 477, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, 517, 518, 520]: - self.enterOuterAlt(localctx, 6) - self.state = 9885 - self.plsql_unreserved_keyword() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class PlsqlidentifierContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PLSQLIDENTIFIER(self): - return self.getToken(PostgreSQLParser.PLSQLIDENTIFIER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsqlidentifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsqlidentifier" ): - listener.enterPlsqlidentifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsqlidentifier" ): - listener.exitPlsqlidentifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsqlidentifier" ): - return visitor.visitPlsqlidentifier(self) - else: - return visitor.visitChildren(self) - - - - - def plsqlidentifier(self): - - localctx = PostgreSQLParser.PlsqlidentifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 1384, self.RULE_plsqlidentifier) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9888 - self.match(PostgreSQLParser.PLSQLIDENTIFIER) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Unreserved_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ABORT_P(self): - return self.getToken(PostgreSQLParser.ABORT_P, 0) - - def ABSOLUTE_P(self): - return self.getToken(PostgreSQLParser.ABSOLUTE_P, 0) - - def ACCESS(self): - return self.getToken(PostgreSQLParser.ACCESS, 0) - - def ACTION(self): - return self.getToken(PostgreSQLParser.ACTION, 0) - - def ADD_P(self): - return self.getToken(PostgreSQLParser.ADD_P, 0) - - def ADMIN(self): - return self.getToken(PostgreSQLParser.ADMIN, 0) - - def AFTER(self): - return self.getToken(PostgreSQLParser.AFTER, 0) - - def AGGREGATE(self): - return self.getToken(PostgreSQLParser.AGGREGATE, 0) - - def ALSO(self): - return self.getToken(PostgreSQLParser.ALSO, 0) - - def ALTER(self): - return self.getToken(PostgreSQLParser.ALTER, 0) - - def ALWAYS(self): - return self.getToken(PostgreSQLParser.ALWAYS, 0) - - def ASSERTION(self): - return self.getToken(PostgreSQLParser.ASSERTION, 0) - - def ASSIGNMENT(self): - return self.getToken(PostgreSQLParser.ASSIGNMENT, 0) - - def AT(self): - return self.getToken(PostgreSQLParser.AT, 0) - - def ATTACH(self): - return self.getToken(PostgreSQLParser.ATTACH, 0) - - def ATTRIBUTE(self): - return self.getToken(PostgreSQLParser.ATTRIBUTE, 0) - - def BACKWARD(self): - return self.getToken(PostgreSQLParser.BACKWARD, 0) - - def BEFORE(self): - return self.getToken(PostgreSQLParser.BEFORE, 0) - - def BEGIN_P(self): - return self.getToken(PostgreSQLParser.BEGIN_P, 0) - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def CACHE(self): - return self.getToken(PostgreSQLParser.CACHE, 0) - - def CALL(self): - return self.getToken(PostgreSQLParser.CALL, 0) - - def CALLED(self): - return self.getToken(PostgreSQLParser.CALLED, 0) - - def CASCADE(self): - return self.getToken(PostgreSQLParser.CASCADE, 0) - - def CASCADED(self): - return self.getToken(PostgreSQLParser.CASCADED, 0) - - def CATALOG(self): - return self.getToken(PostgreSQLParser.CATALOG, 0) - - def CHAIN(self): - return self.getToken(PostgreSQLParser.CHAIN, 0) - - def CHARACTERISTICS(self): - return self.getToken(PostgreSQLParser.CHARACTERISTICS, 0) - - def CHECKPOINT(self): - return self.getToken(PostgreSQLParser.CHECKPOINT, 0) - - def CLASS(self): - return self.getToken(PostgreSQLParser.CLASS, 0) - - def CLOSE(self): - return self.getToken(PostgreSQLParser.CLOSE, 0) - - def CLUSTER(self): - return self.getToken(PostgreSQLParser.CLUSTER, 0) - - def COLUMNS(self): - return self.getToken(PostgreSQLParser.COLUMNS, 0) - - def COMMENT(self): - return self.getToken(PostgreSQLParser.COMMENT, 0) - - def COMMENTS(self): - return self.getToken(PostgreSQLParser.COMMENTS, 0) - - def COMMIT(self): - return self.getToken(PostgreSQLParser.COMMIT, 0) - - def COMMITTED(self): - return self.getToken(PostgreSQLParser.COMMITTED, 0) - - def CONFIGURATION(self): - return self.getToken(PostgreSQLParser.CONFIGURATION, 0) - - def CONFLICT(self): - return self.getToken(PostgreSQLParser.CONFLICT, 0) - - def CONNECTION(self): - return self.getToken(PostgreSQLParser.CONNECTION, 0) - - def CONSTRAINTS(self): - return self.getToken(PostgreSQLParser.CONSTRAINTS, 0) - - def CONTENT_P(self): - return self.getToken(PostgreSQLParser.CONTENT_P, 0) - - def CONTINUE_P(self): - return self.getToken(PostgreSQLParser.CONTINUE_P, 0) - - def CONVERSION_P(self): - return self.getToken(PostgreSQLParser.CONVERSION_P, 0) - - def COPY(self): - return self.getToken(PostgreSQLParser.COPY, 0) - - def COST(self): - return self.getToken(PostgreSQLParser.COST, 0) - - def CSV(self): - return self.getToken(PostgreSQLParser.CSV, 0) - - def CUBE(self): - return self.getToken(PostgreSQLParser.CUBE, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def CURSOR(self): - return self.getToken(PostgreSQLParser.CURSOR, 0) - - def CYCLE(self): - return self.getToken(PostgreSQLParser.CYCLE, 0) - - def DATA_P(self): - return self.getToken(PostgreSQLParser.DATA_P, 0) - - def DATABASE(self): - return self.getToken(PostgreSQLParser.DATABASE, 0) - - def DAY_P(self): - return self.getToken(PostgreSQLParser.DAY_P, 0) - - def DEALLOCATE(self): - return self.getToken(PostgreSQLParser.DEALLOCATE, 0) - - def DECLARE(self): - return self.getToken(PostgreSQLParser.DECLARE, 0) - - def DEFAULTS(self): - return self.getToken(PostgreSQLParser.DEFAULTS, 0) - - def DEFERRED(self): - return self.getToken(PostgreSQLParser.DEFERRED, 0) - - def DEFINER(self): - return self.getToken(PostgreSQLParser.DEFINER, 0) - - def DELETE_P(self): - return self.getToken(PostgreSQLParser.DELETE_P, 0) - - def DELIMITER(self): - return self.getToken(PostgreSQLParser.DELIMITER, 0) - - def DELIMITERS(self): - return self.getToken(PostgreSQLParser.DELIMITERS, 0) - - def DEPENDS(self): - return self.getToken(PostgreSQLParser.DEPENDS, 0) - - def DETACH(self): - return self.getToken(PostgreSQLParser.DETACH, 0) - - def DICTIONARY(self): - return self.getToken(PostgreSQLParser.DICTIONARY, 0) - - def DISABLE_P(self): - return self.getToken(PostgreSQLParser.DISABLE_P, 0) - - def DISCARD(self): - return self.getToken(PostgreSQLParser.DISCARD, 0) - - def DOCUMENT_P(self): - return self.getToken(PostgreSQLParser.DOCUMENT_P, 0) - - def DOMAIN_P(self): - return self.getToken(PostgreSQLParser.DOMAIN_P, 0) - - def DOUBLE_P(self): - return self.getToken(PostgreSQLParser.DOUBLE_P, 0) - - def DROP(self): - return self.getToken(PostgreSQLParser.DROP, 0) - - def EACH(self): - return self.getToken(PostgreSQLParser.EACH, 0) - - def ENABLE_P(self): - return self.getToken(PostgreSQLParser.ENABLE_P, 0) - - def ENCODING(self): - return self.getToken(PostgreSQLParser.ENCODING, 0) - - def ENCRYPTED(self): - return self.getToken(PostgreSQLParser.ENCRYPTED, 0) - - def ENUM_P(self): - return self.getToken(PostgreSQLParser.ENUM_P, 0) - - def ESCAPE(self): - return self.getToken(PostgreSQLParser.ESCAPE, 0) - - def EVENT(self): - return self.getToken(PostgreSQLParser.EVENT, 0) - - def EXCLUDE(self): - return self.getToken(PostgreSQLParser.EXCLUDE, 0) - - def EXCLUDING(self): - return self.getToken(PostgreSQLParser.EXCLUDING, 0) - - def EXCLUSIVE(self): - return self.getToken(PostgreSQLParser.EXCLUSIVE, 0) - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def EXPLAIN(self): - return self.getToken(PostgreSQLParser.EXPLAIN, 0) - - def EXPRESSION(self): - return self.getToken(PostgreSQLParser.EXPRESSION, 0) - - def EXTENSION(self): - return self.getToken(PostgreSQLParser.EXTENSION, 0) - - def EXTERNAL(self): - return self.getToken(PostgreSQLParser.EXTERNAL, 0) - - def FAMILY(self): - return self.getToken(PostgreSQLParser.FAMILY, 0) - - def FILTER(self): - return self.getToken(PostgreSQLParser.FILTER, 0) - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def FOLLOWING(self): - return self.getToken(PostgreSQLParser.FOLLOWING, 0) - - def FORCE(self): - return self.getToken(PostgreSQLParser.FORCE, 0) - - def FORWARD(self): - return self.getToken(PostgreSQLParser.FORWARD, 0) - - def FUNCTION(self): - return self.getToken(PostgreSQLParser.FUNCTION, 0) - - def FUNCTIONS(self): - return self.getToken(PostgreSQLParser.FUNCTIONS, 0) - - def GENERATED(self): - return self.getToken(PostgreSQLParser.GENERATED, 0) - - def GLOBAL(self): - return self.getToken(PostgreSQLParser.GLOBAL, 0) - - def GRANTED(self): - return self.getToken(PostgreSQLParser.GRANTED, 0) - - def GROUPS(self): - return self.getToken(PostgreSQLParser.GROUPS, 0) - - def HANDLER(self): - return self.getToken(PostgreSQLParser.HANDLER, 0) - - def HEADER_P(self): - return self.getToken(PostgreSQLParser.HEADER_P, 0) - - def HOLD(self): - return self.getToken(PostgreSQLParser.HOLD, 0) - - def HOUR_P(self): - return self.getToken(PostgreSQLParser.HOUR_P, 0) - - def IDENTITY_P(self): - return self.getToken(PostgreSQLParser.IDENTITY_P, 0) - - def IF_P(self): - return self.getToken(PostgreSQLParser.IF_P, 0) - - def IMMEDIATE(self): - return self.getToken(PostgreSQLParser.IMMEDIATE, 0) - - def IMMUTABLE(self): - return self.getToken(PostgreSQLParser.IMMUTABLE, 0) - - def IMPLICIT_P(self): - return self.getToken(PostgreSQLParser.IMPLICIT_P, 0) - - def IMPORT_P(self): - return self.getToken(PostgreSQLParser.IMPORT_P, 0) - - def INCLUDE(self): - return self.getToken(PostgreSQLParser.INCLUDE, 0) - - def INCLUDING(self): - return self.getToken(PostgreSQLParser.INCLUDING, 0) - - def INCREMENT(self): - return self.getToken(PostgreSQLParser.INCREMENT, 0) - - def INDEX(self): - return self.getToken(PostgreSQLParser.INDEX, 0) - - def INDEXES(self): - return self.getToken(PostgreSQLParser.INDEXES, 0) - - def INHERIT(self): - return self.getToken(PostgreSQLParser.INHERIT, 0) - - def INHERITS(self): - return self.getToken(PostgreSQLParser.INHERITS, 0) - - def INLINE_P(self): - return self.getToken(PostgreSQLParser.INLINE_P, 0) - - def INPUT_P(self): - return self.getToken(PostgreSQLParser.INPUT_P, 0) - - def INSENSITIVE(self): - return self.getToken(PostgreSQLParser.INSENSITIVE, 0) - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def INSTEAD(self): - return self.getToken(PostgreSQLParser.INSTEAD, 0) - - def INVOKER(self): - return self.getToken(PostgreSQLParser.INVOKER, 0) - - def ISOLATION(self): - return self.getToken(PostgreSQLParser.ISOLATION, 0) - - def KEY(self): - return self.getToken(PostgreSQLParser.KEY, 0) - - def LABEL(self): - return self.getToken(PostgreSQLParser.LABEL, 0) - - def LANGUAGE(self): - return self.getToken(PostgreSQLParser.LANGUAGE, 0) - - def LARGE_P(self): - return self.getToken(PostgreSQLParser.LARGE_P, 0) - - def LAST_P(self): - return self.getToken(PostgreSQLParser.LAST_P, 0) - - def LEAKPROOF(self): - return self.getToken(PostgreSQLParser.LEAKPROOF, 0) - - def LEVEL(self): - return self.getToken(PostgreSQLParser.LEVEL, 0) - - def LISTEN(self): - return self.getToken(PostgreSQLParser.LISTEN, 0) - - def LOAD(self): - return self.getToken(PostgreSQLParser.LOAD, 0) - - def LOCAL(self): - return self.getToken(PostgreSQLParser.LOCAL, 0) - - def LOCATION(self): - return self.getToken(PostgreSQLParser.LOCATION, 0) - - def LOCK_P(self): - return self.getToken(PostgreSQLParser.LOCK_P, 0) - - def LOCKED(self): - return self.getToken(PostgreSQLParser.LOCKED, 0) - - def LOGGED(self): - return self.getToken(PostgreSQLParser.LOGGED, 0) - - def MAPPING(self): - return self.getToken(PostgreSQLParser.MAPPING, 0) - - def MATCH(self): - return self.getToken(PostgreSQLParser.MATCH, 0) - - def MATERIALIZED(self): - return self.getToken(PostgreSQLParser.MATERIALIZED, 0) - - def MAXVALUE(self): - return self.getToken(PostgreSQLParser.MAXVALUE, 0) - - def METHOD(self): - return self.getToken(PostgreSQLParser.METHOD, 0) - - def MINUTE_P(self): - return self.getToken(PostgreSQLParser.MINUTE_P, 0) - - def MINVALUE(self): - return self.getToken(PostgreSQLParser.MINVALUE, 0) - - def MODE(self): - return self.getToken(PostgreSQLParser.MODE, 0) - - def MONTH_P(self): - return self.getToken(PostgreSQLParser.MONTH_P, 0) - - def MOVE(self): - return self.getToken(PostgreSQLParser.MOVE, 0) - - def NAME_P(self): - return self.getToken(PostgreSQLParser.NAME_P, 0) - - def NAMES(self): - return self.getToken(PostgreSQLParser.NAMES, 0) - - def NEW(self): - return self.getToken(PostgreSQLParser.NEW, 0) - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def NFC(self): - return self.getToken(PostgreSQLParser.NFC, 0) - - def NFD(self): - return self.getToken(PostgreSQLParser.NFD, 0) - - def NFKC(self): - return self.getToken(PostgreSQLParser.NFKC, 0) - - def NFKD(self): - return self.getToken(PostgreSQLParser.NFKD, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def NORMALIZED(self): - return self.getToken(PostgreSQLParser.NORMALIZED, 0) - - def NOTHING(self): - return self.getToken(PostgreSQLParser.NOTHING, 0) - - def NOTIFY(self): - return self.getToken(PostgreSQLParser.NOTIFY, 0) - - def NOWAIT(self): - return self.getToken(PostgreSQLParser.NOWAIT, 0) - - def NULLS_P(self): - return self.getToken(PostgreSQLParser.NULLS_P, 0) - - def OBJECT_P(self): - return self.getToken(PostgreSQLParser.OBJECT_P, 0) - - def OF(self): - return self.getToken(PostgreSQLParser.OF, 0) - - def OFF(self): - return self.getToken(PostgreSQLParser.OFF, 0) - - def OIDS(self): - return self.getToken(PostgreSQLParser.OIDS, 0) - - def OLD(self): - return self.getToken(PostgreSQLParser.OLD, 0) - - def OPERATOR(self): - return self.getToken(PostgreSQLParser.OPERATOR, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def OPTIONS(self): - return self.getToken(PostgreSQLParser.OPTIONS, 0) - - def ORDINALITY(self): - return self.getToken(PostgreSQLParser.ORDINALITY, 0) - - def OTHERS(self): - return self.getToken(PostgreSQLParser.OTHERS, 0) - - def OVER(self): - return self.getToken(PostgreSQLParser.OVER, 0) - - def OVERRIDING(self): - return self.getToken(PostgreSQLParser.OVERRIDING, 0) - - def OWNED(self): - return self.getToken(PostgreSQLParser.OWNED, 0) - - def OWNER(self): - return self.getToken(PostgreSQLParser.OWNER, 0) - - def PARALLEL(self): - return self.getToken(PostgreSQLParser.PARALLEL, 0) - - def PARSER(self): - return self.getToken(PostgreSQLParser.PARSER, 0) - - def PARTIAL(self): - return self.getToken(PostgreSQLParser.PARTIAL, 0) - - def PARTITION(self): - return self.getToken(PostgreSQLParser.PARTITION, 0) - - def PASSING(self): - return self.getToken(PostgreSQLParser.PASSING, 0) - - def PASSWORD(self): - return self.getToken(PostgreSQLParser.PASSWORD, 0) - - def PLANS(self): - return self.getToken(PostgreSQLParser.PLANS, 0) - - def POLICY(self): - return self.getToken(PostgreSQLParser.POLICY, 0) - - def PRECEDING(self): - return self.getToken(PostgreSQLParser.PRECEDING, 0) - - def PREPARE(self): - return self.getToken(PostgreSQLParser.PREPARE, 0) - - def PREPARED(self): - return self.getToken(PostgreSQLParser.PREPARED, 0) - - def PRESERVE(self): - return self.getToken(PostgreSQLParser.PRESERVE, 0) - - def PRIOR(self): - return self.getToken(PostgreSQLParser.PRIOR, 0) - - def PRIVILEGES(self): - return self.getToken(PostgreSQLParser.PRIVILEGES, 0) - - def PROCEDURAL(self): - return self.getToken(PostgreSQLParser.PROCEDURAL, 0) - - def PROCEDURE(self): - return self.getToken(PostgreSQLParser.PROCEDURE, 0) - - def PROCEDURES(self): - return self.getToken(PostgreSQLParser.PROCEDURES, 0) - - def PROGRAM(self): - return self.getToken(PostgreSQLParser.PROGRAM, 0) - - def PUBLICATION(self): - return self.getToken(PostgreSQLParser.PUBLICATION, 0) - - def QUOTE(self): - return self.getToken(PostgreSQLParser.QUOTE, 0) - - def RANGE(self): - return self.getToken(PostgreSQLParser.RANGE, 0) - - def READ(self): - return self.getToken(PostgreSQLParser.READ, 0) - - def REASSIGN(self): - return self.getToken(PostgreSQLParser.REASSIGN, 0) - - def RECHECK(self): - return self.getToken(PostgreSQLParser.RECHECK, 0) - - def RECURSIVE(self): - return self.getToken(PostgreSQLParser.RECURSIVE, 0) - - def REF(self): - return self.getToken(PostgreSQLParser.REF, 0) - - def REFERENCING(self): - return self.getToken(PostgreSQLParser.REFERENCING, 0) - - def REFRESH(self): - return self.getToken(PostgreSQLParser.REFRESH, 0) - - def REINDEX(self): - return self.getToken(PostgreSQLParser.REINDEX, 0) - - def RELATIVE_P(self): - return self.getToken(PostgreSQLParser.RELATIVE_P, 0) - - def RELEASE(self): - return self.getToken(PostgreSQLParser.RELEASE, 0) - - def RENAME(self): - return self.getToken(PostgreSQLParser.RENAME, 0) - - def REPEATABLE(self): - return self.getToken(PostgreSQLParser.REPEATABLE, 0) - - def REPLICA(self): - return self.getToken(PostgreSQLParser.REPLICA, 0) - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def RESTART(self): - return self.getToken(PostgreSQLParser.RESTART, 0) - - def RESTRICT(self): - return self.getToken(PostgreSQLParser.RESTRICT, 0) - - def RETURNS(self): - return self.getToken(PostgreSQLParser.RETURNS, 0) - - def REVOKE(self): - return self.getToken(PostgreSQLParser.REVOKE, 0) - - def ROLE(self): - return self.getToken(PostgreSQLParser.ROLE, 0) - - def ROLLBACK(self): - return self.getToken(PostgreSQLParser.ROLLBACK, 0) - - def ROLLUP(self): - return self.getToken(PostgreSQLParser.ROLLUP, 0) - - def ROUTINE(self): - return self.getToken(PostgreSQLParser.ROUTINE, 0) - - def ROUTINES(self): - return self.getToken(PostgreSQLParser.ROUTINES, 0) - - def ROWS(self): - return self.getToken(PostgreSQLParser.ROWS, 0) - - def RULE(self): - return self.getToken(PostgreSQLParser.RULE, 0) - - def SAVEPOINT(self): - return self.getToken(PostgreSQLParser.SAVEPOINT, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def SCHEMAS(self): - return self.getToken(PostgreSQLParser.SCHEMAS, 0) - - def SCROLL(self): - return self.getToken(PostgreSQLParser.SCROLL, 0) - - def SEARCH(self): - return self.getToken(PostgreSQLParser.SEARCH, 0) - - def SECOND_P(self): - return self.getToken(PostgreSQLParser.SECOND_P, 0) - - def SECURITY(self): - return self.getToken(PostgreSQLParser.SECURITY, 0) - - def SEQUENCE(self): - return self.getToken(PostgreSQLParser.SEQUENCE, 0) - - def SEQUENCES(self): - return self.getToken(PostgreSQLParser.SEQUENCES, 0) - - def SERIALIZABLE(self): - return self.getToken(PostgreSQLParser.SERIALIZABLE, 0) - - def SERVER(self): - return self.getToken(PostgreSQLParser.SERVER, 0) - - def SESSION(self): - return self.getToken(PostgreSQLParser.SESSION, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def SETS(self): - return self.getToken(PostgreSQLParser.SETS, 0) - - def SHARE(self): - return self.getToken(PostgreSQLParser.SHARE, 0) - - def SHOW(self): - return self.getToken(PostgreSQLParser.SHOW, 0) - - def SIMPLE(self): - return self.getToken(PostgreSQLParser.SIMPLE, 0) - - def SKIP_P(self): - return self.getToken(PostgreSQLParser.SKIP_P, 0) - - def SNAPSHOT(self): - return self.getToken(PostgreSQLParser.SNAPSHOT, 0) - - def SQL_P(self): - return self.getToken(PostgreSQLParser.SQL_P, 0) - - def STABLE(self): - return self.getToken(PostgreSQLParser.STABLE, 0) - - def STANDALONE_P(self): - return self.getToken(PostgreSQLParser.STANDALONE_P, 0) - - def START(self): - return self.getToken(PostgreSQLParser.START, 0) - - def STATEMENT(self): - return self.getToken(PostgreSQLParser.STATEMENT, 0) - - def STATISTICS(self): - return self.getToken(PostgreSQLParser.STATISTICS, 0) - - def STDIN(self): - return self.getToken(PostgreSQLParser.STDIN, 0) - - def STDOUT(self): - return self.getToken(PostgreSQLParser.STDOUT, 0) - - def STORAGE(self): - return self.getToken(PostgreSQLParser.STORAGE, 0) - - def STORED(self): - return self.getToken(PostgreSQLParser.STORED, 0) - - def STRICT_P(self): - return self.getToken(PostgreSQLParser.STRICT_P, 0) - - def STRIP_P(self): - return self.getToken(PostgreSQLParser.STRIP_P, 0) - - def SUBSCRIPTION(self): - return self.getToken(PostgreSQLParser.SUBSCRIPTION, 0) - - def SUPPORT(self): - return self.getToken(PostgreSQLParser.SUPPORT, 0) - - def SYSID(self): - return self.getToken(PostgreSQLParser.SYSID, 0) - - def SYSTEM_P(self): - return self.getToken(PostgreSQLParser.SYSTEM_P, 0) - - def TABLES(self): - return self.getToken(PostgreSQLParser.TABLES, 0) - - def TABLESPACE(self): - return self.getToken(PostgreSQLParser.TABLESPACE, 0) - - def TEMP(self): - return self.getToken(PostgreSQLParser.TEMP, 0) - - def TEMPLATE(self): - return self.getToken(PostgreSQLParser.TEMPLATE, 0) - - def TEMPORARY(self): - return self.getToken(PostgreSQLParser.TEMPORARY, 0) - - def TEXT_P(self): - return self.getToken(PostgreSQLParser.TEXT_P, 0) - - def TIES(self): - return self.getToken(PostgreSQLParser.TIES, 0) - - def TRANSACTION(self): - return self.getToken(PostgreSQLParser.TRANSACTION, 0) - - def TRANSFORM(self): - return self.getToken(PostgreSQLParser.TRANSFORM, 0) - - def TRIGGER(self): - return self.getToken(PostgreSQLParser.TRIGGER, 0) - - def TRUNCATE(self): - return self.getToken(PostgreSQLParser.TRUNCATE, 0) - - def TRUSTED(self): - return self.getToken(PostgreSQLParser.TRUSTED, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def TYPES_P(self): - return self.getToken(PostgreSQLParser.TYPES_P, 0) - - def UESCAPE(self): - return self.getToken(PostgreSQLParser.UESCAPE, 0) - - def UNBOUNDED(self): - return self.getToken(PostgreSQLParser.UNBOUNDED, 0) - - def UNCOMMITTED(self): - return self.getToken(PostgreSQLParser.UNCOMMITTED, 0) - - def UNENCRYPTED(self): - return self.getToken(PostgreSQLParser.UNENCRYPTED, 0) - - def UNKNOWN(self): - return self.getToken(PostgreSQLParser.UNKNOWN, 0) - - def UNLISTEN(self): - return self.getToken(PostgreSQLParser.UNLISTEN, 0) - - def UNLOGGED(self): - return self.getToken(PostgreSQLParser.UNLOGGED, 0) - - def UNTIL(self): - return self.getToken(PostgreSQLParser.UNTIL, 0) - - def UPDATE(self): - return self.getToken(PostgreSQLParser.UPDATE, 0) - - def VACUUM(self): - return self.getToken(PostgreSQLParser.VACUUM, 0) - - def VALID(self): - return self.getToken(PostgreSQLParser.VALID, 0) - - def VALIDATE(self): - return self.getToken(PostgreSQLParser.VALIDATE, 0) - - def VALIDATOR(self): - return self.getToken(PostgreSQLParser.VALIDATOR, 0) - - def VALUE_P(self): - return self.getToken(PostgreSQLParser.VALUE_P, 0) - - def VARYING(self): - return self.getToken(PostgreSQLParser.VARYING, 0) - - def VERSION_P(self): - return self.getToken(PostgreSQLParser.VERSION_P, 0) - - def VIEW(self): - return self.getToken(PostgreSQLParser.VIEW, 0) - - def VIEWS(self): - return self.getToken(PostgreSQLParser.VIEWS, 0) - - def VOLATILE(self): - return self.getToken(PostgreSQLParser.VOLATILE, 0) - - def WHITESPACE_P(self): - return self.getToken(PostgreSQLParser.WHITESPACE_P, 0) - - def WITHIN(self): - return self.getToken(PostgreSQLParser.WITHIN, 0) - - def WITHOUT(self): - return self.getToken(PostgreSQLParser.WITHOUT, 0) - - def WORK(self): - return self.getToken(PostgreSQLParser.WORK, 0) - - def WRAPPER(self): - return self.getToken(PostgreSQLParser.WRAPPER, 0) - - def WRITE(self): - return self.getToken(PostgreSQLParser.WRITE, 0) - - def XML_P(self): - return self.getToken(PostgreSQLParser.XML_P, 0) - - def YEAR_P(self): - return self.getToken(PostgreSQLParser.YEAR_P, 0) - - def YES_P(self): - return self.getToken(PostgreSQLParser.YES_P, 0) - - def ZONE(self): - return self.getToken(PostgreSQLParser.ZONE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_unreserved_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterUnreserved_keyword" ): - listener.enterUnreserved_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitUnreserved_keyword" ): - listener.exitUnreserved_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitUnreserved_keyword" ): - return visitor.visitUnreserved_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def unreserved_keyword(self): - - localctx = PostgreSQLParser.Unreserved_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1386, self.RULE_unreserved_keyword) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9890 - _la = self._input.LA(1) - if not(((((_la - 124)) & ~0x3f) == 0 and ((1 << (_la - 124)) & -31) != 0) or ((((_la - 188)) & ~0x3f) == 0 and ((1 << (_la - 188)) & -4611686018427387905) != 0) or ((((_la - 252)) & ~0x3f) == 0 and ((1 << (_la - 252)) & -4503599627370499) != 0) or ((((_la - 316)) & ~0x3f) == 0 and ((1 << (_la - 316)) & -1) != 0) or ((((_la - 433)) & ~0x3f) == 0 and ((1 << (_la - 433)) & 72028319537692671) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Col_name_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BETWEEN(self): - return self.getToken(PostgreSQLParser.BETWEEN, 0) - - def BIGINT(self): - return self.getToken(PostgreSQLParser.BIGINT, 0) - - def bit(self): - return self.getTypedRuleContext(PostgreSQLParser.BitContext,0) - - - def BOOLEAN_P(self): - return self.getToken(PostgreSQLParser.BOOLEAN_P, 0) - - def CHAR_P(self): - return self.getToken(PostgreSQLParser.CHAR_P, 0) - - def character(self): - return self.getTypedRuleContext(PostgreSQLParser.CharacterContext,0) - - - def COALESCE(self): - return self.getToken(PostgreSQLParser.COALESCE, 0) - - def DEC(self): - return self.getToken(PostgreSQLParser.DEC, 0) - - def DECIMAL_P(self): - return self.getToken(PostgreSQLParser.DECIMAL_P, 0) - - def EXISTS(self): - return self.getToken(PostgreSQLParser.EXISTS, 0) - - def EXTRACT(self): - return self.getToken(PostgreSQLParser.EXTRACT, 0) - - def FLOAT_P(self): - return self.getToken(PostgreSQLParser.FLOAT_P, 0) - - def GREATEST(self): - return self.getToken(PostgreSQLParser.GREATEST, 0) - - def GROUPING(self): - return self.getToken(PostgreSQLParser.GROUPING, 0) - - def INOUT(self): - return self.getToken(PostgreSQLParser.INOUT, 0) - - def INT_P(self): - return self.getToken(PostgreSQLParser.INT_P, 0) - - def INTEGER(self): - return self.getToken(PostgreSQLParser.INTEGER, 0) - - def INTERVAL(self): - return self.getToken(PostgreSQLParser.INTERVAL, 0) - - def LEAST(self): - return self.getToken(PostgreSQLParser.LEAST, 0) - - def NATIONAL(self): - return self.getToken(PostgreSQLParser.NATIONAL, 0) - - def NCHAR(self): - return self.getToken(PostgreSQLParser.NCHAR, 0) - - def NONE(self): - return self.getToken(PostgreSQLParser.NONE, 0) - - def NORMALIZE(self): - return self.getToken(PostgreSQLParser.NORMALIZE, 0) - - def NULLIF(self): - return self.getToken(PostgreSQLParser.NULLIF, 0) - - def numeric(self): - return self.getTypedRuleContext(PostgreSQLParser.NumericContext,0) - - - def OUT_P(self): - return self.getToken(PostgreSQLParser.OUT_P, 0) - - def OVERLAY(self): - return self.getToken(PostgreSQLParser.OVERLAY, 0) - - def POSITION(self): - return self.getToken(PostgreSQLParser.POSITION, 0) - - def PRECISION(self): - return self.getToken(PostgreSQLParser.PRECISION, 0) - - def REAL(self): - return self.getToken(PostgreSQLParser.REAL, 0) - - def ROW(self): - return self.getToken(PostgreSQLParser.ROW, 0) - - def SETOF(self): - return self.getToken(PostgreSQLParser.SETOF, 0) - - def SMALLINT(self): - return self.getToken(PostgreSQLParser.SMALLINT, 0) - - def SUBSTRING(self): - return self.getToken(PostgreSQLParser.SUBSTRING, 0) - - def TIME(self): - return self.getToken(PostgreSQLParser.TIME, 0) - - def TIMESTAMP(self): - return self.getToken(PostgreSQLParser.TIMESTAMP, 0) - - def TREAT(self): - return self.getToken(PostgreSQLParser.TREAT, 0) - - def TRIM(self): - return self.getToken(PostgreSQLParser.TRIM, 0) - - def VALUES(self): - return self.getToken(PostgreSQLParser.VALUES, 0) - - def VARCHAR(self): - return self.getToken(PostgreSQLParser.VARCHAR, 0) - - def XMLATTRIBUTES(self): - return self.getToken(PostgreSQLParser.XMLATTRIBUTES, 0) - - def XMLCONCAT(self): - return self.getToken(PostgreSQLParser.XMLCONCAT, 0) - - def XMLELEMENT(self): - return self.getToken(PostgreSQLParser.XMLELEMENT, 0) - - def XMLEXISTS(self): - return self.getToken(PostgreSQLParser.XMLEXISTS, 0) - - def XMLFOREST(self): - return self.getToken(PostgreSQLParser.XMLFOREST, 0) - - def XMLNAMESPACES(self): - return self.getToken(PostgreSQLParser.XMLNAMESPACES, 0) - - def XMLPARSE(self): - return self.getToken(PostgreSQLParser.XMLPARSE, 0) - - def XMLPI(self): - return self.getToken(PostgreSQLParser.XMLPI, 0) - - def XMLROOT(self): - return self.getToken(PostgreSQLParser.XMLROOT, 0) - - def XMLSERIALIZE(self): - return self.getToken(PostgreSQLParser.XMLSERIALIZE, 0) - - def XMLTABLE(self): - return self.getToken(PostgreSQLParser.XMLTABLE, 0) - - def builtin_function_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Builtin_function_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_col_name_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCol_name_keyword" ): - listener.enterCol_name_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCol_name_keyword" ): - listener.exitCol_name_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCol_name_keyword" ): - return visitor.visitCol_name_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def col_name_keyword(self): - - localctx = PostgreSQLParser.Col_name_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1388, self.RULE_col_name_keyword) - try: - self.state = 9944 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,664,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9892 - self.match(PostgreSQLParser.BETWEEN) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9893 - self.match(PostgreSQLParser.BIGINT) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9894 - self.bit() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9895 - self.match(PostgreSQLParser.BOOLEAN_P) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9896 - self.match(PostgreSQLParser.CHAR_P) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 9897 - self.character() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 9898 - self.match(PostgreSQLParser.COALESCE) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 9899 - self.match(PostgreSQLParser.DEC) - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 9900 - self.match(PostgreSQLParser.DECIMAL_P) - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 9901 - self.match(PostgreSQLParser.EXISTS) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 9902 - self.match(PostgreSQLParser.EXTRACT) - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 9903 - self.match(PostgreSQLParser.FLOAT_P) - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 9904 - self.match(PostgreSQLParser.GREATEST) - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 9905 - self.match(PostgreSQLParser.GROUPING) - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 9906 - self.match(PostgreSQLParser.INOUT) - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 9907 - self.match(PostgreSQLParser.INT_P) - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 9908 - self.match(PostgreSQLParser.INTEGER) - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 9909 - self.match(PostgreSQLParser.INTERVAL) - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 9910 - self.match(PostgreSQLParser.LEAST) - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 9911 - self.match(PostgreSQLParser.NATIONAL) - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 9912 - self.match(PostgreSQLParser.NCHAR) - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 9913 - self.match(PostgreSQLParser.NONE) - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 9914 - self.match(PostgreSQLParser.NORMALIZE) - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 9915 - self.match(PostgreSQLParser.NULLIF) - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 9916 - self.numeric() - pass - - elif la_ == 26: - self.enterOuterAlt(localctx, 26) - self.state = 9917 - self.match(PostgreSQLParser.OUT_P) - pass - - elif la_ == 27: - self.enterOuterAlt(localctx, 27) - self.state = 9918 - self.match(PostgreSQLParser.OVERLAY) - pass - - elif la_ == 28: - self.enterOuterAlt(localctx, 28) - self.state = 9919 - self.match(PostgreSQLParser.POSITION) - pass - - elif la_ == 29: - self.enterOuterAlt(localctx, 29) - self.state = 9920 - self.match(PostgreSQLParser.PRECISION) - pass - - elif la_ == 30: - self.enterOuterAlt(localctx, 30) - self.state = 9921 - self.match(PostgreSQLParser.REAL) - pass - - elif la_ == 31: - self.enterOuterAlt(localctx, 31) - self.state = 9922 - self.match(PostgreSQLParser.ROW) - pass - - elif la_ == 32: - self.enterOuterAlt(localctx, 32) - self.state = 9923 - self.match(PostgreSQLParser.SETOF) - pass - - elif la_ == 33: - self.enterOuterAlt(localctx, 33) - self.state = 9924 - self.match(PostgreSQLParser.SMALLINT) - pass - - elif la_ == 34: - self.enterOuterAlt(localctx, 34) - self.state = 9925 - self.match(PostgreSQLParser.SUBSTRING) - pass - - elif la_ == 35: - self.enterOuterAlt(localctx, 35) - self.state = 9926 - self.match(PostgreSQLParser.TIME) - pass - - elif la_ == 36: - self.enterOuterAlt(localctx, 36) - self.state = 9927 - self.match(PostgreSQLParser.TIMESTAMP) - pass - - elif la_ == 37: - self.enterOuterAlt(localctx, 37) - self.state = 9928 - self.match(PostgreSQLParser.TREAT) - pass - - elif la_ == 38: - self.enterOuterAlt(localctx, 38) - self.state = 9929 - self.match(PostgreSQLParser.TRIM) - pass - - elif la_ == 39: - self.enterOuterAlt(localctx, 39) - self.state = 9930 - self.match(PostgreSQLParser.VALUES) - pass - - elif la_ == 40: - self.enterOuterAlt(localctx, 40) - self.state = 9931 - self.match(PostgreSQLParser.VARCHAR) - pass - - elif la_ == 41: - self.enterOuterAlt(localctx, 41) - self.state = 9932 - self.match(PostgreSQLParser.XMLATTRIBUTES) - pass - - elif la_ == 42: - self.enterOuterAlt(localctx, 42) - self.state = 9933 - self.match(PostgreSQLParser.XMLCONCAT) - pass - - elif la_ == 43: - self.enterOuterAlt(localctx, 43) - self.state = 9934 - self.match(PostgreSQLParser.XMLELEMENT) - pass - - elif la_ == 44: - self.enterOuterAlt(localctx, 44) - self.state = 9935 - self.match(PostgreSQLParser.XMLEXISTS) - pass - - elif la_ == 45: - self.enterOuterAlt(localctx, 45) - self.state = 9936 - self.match(PostgreSQLParser.XMLFOREST) - pass - - elif la_ == 46: - self.enterOuterAlt(localctx, 46) - self.state = 9937 - self.match(PostgreSQLParser.XMLNAMESPACES) - pass - - elif la_ == 47: - self.enterOuterAlt(localctx, 47) - self.state = 9938 - self.match(PostgreSQLParser.XMLPARSE) - pass - - elif la_ == 48: - self.enterOuterAlt(localctx, 48) - self.state = 9939 - self.match(PostgreSQLParser.XMLPI) - pass - - elif la_ == 49: - self.enterOuterAlt(localctx, 49) - self.state = 9940 - self.match(PostgreSQLParser.XMLROOT) - pass - - elif la_ == 50: - self.enterOuterAlt(localctx, 50) - self.state = 9941 - self.match(PostgreSQLParser.XMLSERIALIZE) - pass - - elif la_ == 51: - self.enterOuterAlt(localctx, 51) - self.state = 9942 - self.match(PostgreSQLParser.XMLTABLE) - pass - - elif la_ == 52: - self.enterOuterAlt(localctx, 52) - self.state = 9943 - self.builtin_function_name() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Type_func_name_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AUTHORIZATION(self): - return self.getToken(PostgreSQLParser.AUTHORIZATION, 0) - - def BINARY(self): - return self.getToken(PostgreSQLParser.BINARY, 0) - - def COLLATION(self): - return self.getToken(PostgreSQLParser.COLLATION, 0) - - def CONCURRENTLY(self): - return self.getToken(PostgreSQLParser.CONCURRENTLY, 0) - - def CROSS(self): - return self.getToken(PostgreSQLParser.CROSS, 0) - - def CURRENT_SCHEMA(self): - return self.getToken(PostgreSQLParser.CURRENT_SCHEMA, 0) - - def FREEZE(self): - return self.getToken(PostgreSQLParser.FREEZE, 0) - - def FULL(self): - return self.getToken(PostgreSQLParser.FULL, 0) - - def ILIKE(self): - return self.getToken(PostgreSQLParser.ILIKE, 0) - - def INNER_P(self): - return self.getToken(PostgreSQLParser.INNER_P, 0) - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def ISNULL(self): - return self.getToken(PostgreSQLParser.ISNULL, 0) - - def JOIN(self): - return self.getToken(PostgreSQLParser.JOIN, 0) - - def LIKE(self): - return self.getToken(PostgreSQLParser.LIKE, 0) - - def NATURAL(self): - return self.getToken(PostgreSQLParser.NATURAL, 0) - - def NOTNULL(self): - return self.getToken(PostgreSQLParser.NOTNULL, 0) - - def OUTER_P(self): - return self.getToken(PostgreSQLParser.OUTER_P, 0) - - def OVERLAPS(self): - return self.getToken(PostgreSQLParser.OVERLAPS, 0) - - def SIMILAR(self): - return self.getToken(PostgreSQLParser.SIMILAR, 0) - - def TABLESAMPLE(self): - return self.getToken(PostgreSQLParser.TABLESAMPLE, 0) - - def VERBOSE(self): - return self.getToken(PostgreSQLParser.VERBOSE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_type_func_name_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterType_func_name_keyword" ): - listener.enterType_func_name_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitType_func_name_keyword" ): - listener.exitType_func_name_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitType_func_name_keyword" ): - return visitor.visitType_func_name_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def type_func_name_keyword(self): - - localctx = PostgreSQLParser.Type_func_name_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1390, self.RULE_type_func_name_keyword) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9946 - _la = self._input.LA(1) - if not(((((_la - 106)) & ~0x3f) == 0 and ((1 << (_la - 106)) & 7069695) != 0) or _la==472): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Reserved_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def ANALYSE(self): - return self.getToken(PostgreSQLParser.ANALYSE, 0) - - def ANALYZE(self): - return self.getToken(PostgreSQLParser.ANALYZE, 0) - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def ANY(self): - return self.getToken(PostgreSQLParser.ANY, 0) - - def ARRAY(self): - return self.getToken(PostgreSQLParser.ARRAY, 0) - - def AS(self): - return self.getToken(PostgreSQLParser.AS, 0) - - def ASC(self): - return self.getToken(PostgreSQLParser.ASC, 0) - - def ASYMMETRIC(self): - return self.getToken(PostgreSQLParser.ASYMMETRIC, 0) - - def BOTH(self): - return self.getToken(PostgreSQLParser.BOTH, 0) - - def CASE(self): - return self.getToken(PostgreSQLParser.CASE, 0) - - def CAST(self): - return self.getToken(PostgreSQLParser.CAST, 0) - - def CHECK(self): - return self.getToken(PostgreSQLParser.CHECK, 0) - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def CREATE(self): - return self.getToken(PostgreSQLParser.CREATE, 0) - - def CURRENT_CATALOG(self): - return self.getToken(PostgreSQLParser.CURRENT_CATALOG, 0) - - def CURRENT_DATE(self): - return self.getToken(PostgreSQLParser.CURRENT_DATE, 0) - - def CURRENT_ROLE(self): - return self.getToken(PostgreSQLParser.CURRENT_ROLE, 0) - - def CURRENT_TIME(self): - return self.getToken(PostgreSQLParser.CURRENT_TIME, 0) - - def CURRENT_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.CURRENT_TIMESTAMP, 0) - - def CURRENT_USER(self): - return self.getToken(PostgreSQLParser.CURRENT_USER, 0) - - def DEFERRABLE(self): - return self.getToken(PostgreSQLParser.DEFERRABLE, 0) - - def DESC(self): - return self.getToken(PostgreSQLParser.DESC, 0) - - def DISTINCT(self): - return self.getToken(PostgreSQLParser.DISTINCT, 0) - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def ELSE(self): - return self.getToken(PostgreSQLParser.ELSE, 0) - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def EXCEPT(self): - return self.getToken(PostgreSQLParser.EXCEPT, 0) - - def FALSE_P(self): - return self.getToken(PostgreSQLParser.FALSE_P, 0) - - def FETCH(self): - return self.getToken(PostgreSQLParser.FETCH, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def FOREIGN(self): - return self.getToken(PostgreSQLParser.FOREIGN, 0) - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def GRANT(self): - return self.getToken(PostgreSQLParser.GRANT, 0) - - def GROUP_P(self): - return self.getToken(PostgreSQLParser.GROUP_P, 0) - - def HAVING(self): - return self.getToken(PostgreSQLParser.HAVING, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def INITIALLY(self): - return self.getToken(PostgreSQLParser.INITIALLY, 0) - - def INTERSECT(self): - return self.getToken(PostgreSQLParser.INTERSECT, 0) - - def LATERAL_P(self): - return self.getToken(PostgreSQLParser.LATERAL_P, 0) - - def LEADING(self): - return self.getToken(PostgreSQLParser.LEADING, 0) - - def LIMIT(self): - return self.getToken(PostgreSQLParser.LIMIT, 0) - - def LOCALTIME(self): - return self.getToken(PostgreSQLParser.LOCALTIME, 0) - - def LOCALTIMESTAMP(self): - return self.getToken(PostgreSQLParser.LOCALTIMESTAMP, 0) - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def OFFSET(self): - return self.getToken(PostgreSQLParser.OFFSET, 0) - - def ON(self): - return self.getToken(PostgreSQLParser.ON, 0) - - def ONLY(self): - return self.getToken(PostgreSQLParser.ONLY, 0) - - def OR(self): - return self.getToken(PostgreSQLParser.OR, 0) - - def ORDER(self): - return self.getToken(PostgreSQLParser.ORDER, 0) - - def PLACING(self): - return self.getToken(PostgreSQLParser.PLACING, 0) - - def PRIMARY(self): - return self.getToken(PostgreSQLParser.PRIMARY, 0) - - def REFERENCES(self): - return self.getToken(PostgreSQLParser.REFERENCES, 0) - - def RETURNING(self): - return self.getToken(PostgreSQLParser.RETURNING, 0) - - def SELECT(self): - return self.getToken(PostgreSQLParser.SELECT, 0) - - def SESSION_USER(self): - return self.getToken(PostgreSQLParser.SESSION_USER, 0) - - def SOME(self): - return self.getToken(PostgreSQLParser.SOME, 0) - - def SYMMETRIC(self): - return self.getToken(PostgreSQLParser.SYMMETRIC, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def TRAILING(self): - return self.getToken(PostgreSQLParser.TRAILING, 0) - - def TRUE_P(self): - return self.getToken(PostgreSQLParser.TRUE_P, 0) - - def UNION(self): - return self.getToken(PostgreSQLParser.UNION, 0) - - def UNIQUE(self): - return self.getToken(PostgreSQLParser.UNIQUE, 0) - - def USER(self): - return self.getToken(PostgreSQLParser.USER, 0) - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def VARIADIC(self): - return self.getToken(PostgreSQLParser.VARIADIC, 0) - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def WHERE(self): - return self.getToken(PostgreSQLParser.WHERE, 0) - - def WINDOW(self): - return self.getToken(PostgreSQLParser.WINDOW, 0) - - def WITH(self): - return self.getToken(PostgreSQLParser.WITH, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_reserved_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterReserved_keyword" ): - listener.enterReserved_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitReserved_keyword" ): - listener.exitReserved_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitReserved_keyword" ): - return visitor.visitReserved_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def reserved_keyword(self): - - localctx = PostgreSQLParser.Reserved_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1392, self.RULE_reserved_keyword) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9948 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & -9007200328482816) != 0) or ((((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4398046510975) != 0) or _la==454): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Builtin_function_nameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def XMLCOMMENT(self): - return self.getToken(PostgreSQLParser.XMLCOMMENT, 0) - - def XML_IS_WELL_FORMED(self): - return self.getToken(PostgreSQLParser.XML_IS_WELL_FORMED, 0) - - def XML_IS_WELL_FORMED_DOCUMENT(self): - return self.getToken(PostgreSQLParser.XML_IS_WELL_FORMED_DOCUMENT, 0) - - def XML_IS_WELL_FORMED_CONTENT(self): - return self.getToken(PostgreSQLParser.XML_IS_WELL_FORMED_CONTENT, 0) - - def XMLAGG(self): - return self.getToken(PostgreSQLParser.XMLAGG, 0) - - def XPATH(self): - return self.getToken(PostgreSQLParser.XPATH, 0) - - def XPATH_EXISTS(self): - return self.getToken(PostgreSQLParser.XPATH_EXISTS, 0) - - def ABS(self): - return self.getToken(PostgreSQLParser.ABS, 0) - - def CBRT(self): - return self.getToken(PostgreSQLParser.CBRT, 0) - - def CEIL(self): - return self.getToken(PostgreSQLParser.CEIL, 0) - - def CEILING(self): - return self.getToken(PostgreSQLParser.CEILING, 0) - - def DEGREES(self): - return self.getToken(PostgreSQLParser.DEGREES, 0) - - def DIV(self): - return self.getToken(PostgreSQLParser.DIV, 0) - - def EXP(self): - return self.getToken(PostgreSQLParser.EXP, 0) - - def FACTORIAL(self): - return self.getToken(PostgreSQLParser.FACTORIAL, 0) - - def FLOOR(self): - return self.getToken(PostgreSQLParser.FLOOR, 0) - - def GCD(self): - return self.getToken(PostgreSQLParser.GCD, 0) - - def LCM(self): - return self.getToken(PostgreSQLParser.LCM, 0) - - def LN(self): - return self.getToken(PostgreSQLParser.LN, 0) - - def LOG(self): - return self.getToken(PostgreSQLParser.LOG, 0) - - def LOG10(self): - return self.getToken(PostgreSQLParser.LOG10, 0) - - def MIN_SCALE(self): - return self.getToken(PostgreSQLParser.MIN_SCALE, 0) - - def MOD(self): - return self.getToken(PostgreSQLParser.MOD, 0) - - def PI(self): - return self.getToken(PostgreSQLParser.PI, 0) - - def POWER(self): - return self.getToken(PostgreSQLParser.POWER, 0) - - def RADIANS(self): - return self.getToken(PostgreSQLParser.RADIANS, 0) - - def ROUND(self): - return self.getToken(PostgreSQLParser.ROUND, 0) - - def SCALE(self): - return self.getToken(PostgreSQLParser.SCALE, 0) - - def SIGN(self): - return self.getToken(PostgreSQLParser.SIGN, 0) - - def SQRT(self): - return self.getToken(PostgreSQLParser.SQRT, 0) - - def TRIM_SCALE(self): - return self.getToken(PostgreSQLParser.TRIM_SCALE, 0) - - def TRUNC(self): - return self.getToken(PostgreSQLParser.TRUNC, 0) - - def WIDTH_BUCKET(self): - return self.getToken(PostgreSQLParser.WIDTH_BUCKET, 0) - - def RANDOM(self): - return self.getToken(PostgreSQLParser.RANDOM, 0) - - def SETSEED(self): - return self.getToken(PostgreSQLParser.SETSEED, 0) - - def ACOS(self): - return self.getToken(PostgreSQLParser.ACOS, 0) - - def ACOSD(self): - return self.getToken(PostgreSQLParser.ACOSD, 0) - - def ACOSH(self): - return self.getToken(PostgreSQLParser.ACOSH, 0) - - def ASIN(self): - return self.getToken(PostgreSQLParser.ASIN, 0) - - def ASIND(self): - return self.getToken(PostgreSQLParser.ASIND, 0) - - def ASINH(self): - return self.getToken(PostgreSQLParser.ASINH, 0) - - def ATAN(self): - return self.getToken(PostgreSQLParser.ATAN, 0) - - def ATAND(self): - return self.getToken(PostgreSQLParser.ATAND, 0) - - def ATANH(self): - return self.getToken(PostgreSQLParser.ATANH, 0) - - def ATAN2(self): - return self.getToken(PostgreSQLParser.ATAN2, 0) - - def ATAN2D(self): - return self.getToken(PostgreSQLParser.ATAN2D, 0) - - def COS(self): - return self.getToken(PostgreSQLParser.COS, 0) - - def COSD(self): - return self.getToken(PostgreSQLParser.COSD, 0) - - def COSH(self): - return self.getToken(PostgreSQLParser.COSH, 0) - - def COT(self): - return self.getToken(PostgreSQLParser.COT, 0) - - def COTD(self): - return self.getToken(PostgreSQLParser.COTD, 0) - - def SIN(self): - return self.getToken(PostgreSQLParser.SIN, 0) - - def SIND(self): - return self.getToken(PostgreSQLParser.SIND, 0) - - def SINH(self): - return self.getToken(PostgreSQLParser.SINH, 0) - - def TAN(self): - return self.getToken(PostgreSQLParser.TAN, 0) - - def TAND(self): - return self.getToken(PostgreSQLParser.TAND, 0) - - def TANH(self): - return self.getToken(PostgreSQLParser.TANH, 0) - - def BIT_LENGTH(self): - return self.getToken(PostgreSQLParser.BIT_LENGTH, 0) - - def CHAR_LENGTH(self): - return self.getToken(PostgreSQLParser.CHAR_LENGTH, 0) - - def CHARACTER_LENGTH(self): - return self.getToken(PostgreSQLParser.CHARACTER_LENGTH, 0) - - def LOWER(self): - return self.getToken(PostgreSQLParser.LOWER, 0) - - def OCTET_LENGTH(self): - return self.getToken(PostgreSQLParser.OCTET_LENGTH, 0) - - def UPPER(self): - return self.getToken(PostgreSQLParser.UPPER, 0) - - def ASCII(self): - return self.getToken(PostgreSQLParser.ASCII, 0) - - def BTRIM(self): - return self.getToken(PostgreSQLParser.BTRIM, 0) - - def CHR(self): - return self.getToken(PostgreSQLParser.CHR, 0) - - def CONCAT(self): - return self.getToken(PostgreSQLParser.CONCAT, 0) - - def CONCAT_WS(self): - return self.getToken(PostgreSQLParser.CONCAT_WS, 0) - - def FORMAT(self): - return self.getToken(PostgreSQLParser.FORMAT, 0) - - def INITCAP(self): - return self.getToken(PostgreSQLParser.INITCAP, 0) - - def LENGTH(self): - return self.getToken(PostgreSQLParser.LENGTH, 0) - - def LPAD(self): - return self.getToken(PostgreSQLParser.LPAD, 0) - - def LTRIM(self): - return self.getToken(PostgreSQLParser.LTRIM, 0) - - def MD5(self): - return self.getToken(PostgreSQLParser.MD5, 0) - - def PARSE_IDENT(self): - return self.getToken(PostgreSQLParser.PARSE_IDENT, 0) - - def PG_CLIENT_ENCODING(self): - return self.getToken(PostgreSQLParser.PG_CLIENT_ENCODING, 0) - - def QUOTE_IDENT(self): - return self.getToken(PostgreSQLParser.QUOTE_IDENT, 0) - - def QUOTE_LITERAL(self): - return self.getToken(PostgreSQLParser.QUOTE_LITERAL, 0) - - def QUOTE_NULLABLE(self): - return self.getToken(PostgreSQLParser.QUOTE_NULLABLE, 0) - - def REGEXP_COUNT(self): - return self.getToken(PostgreSQLParser.REGEXP_COUNT, 0) - - def REGEXP_INSTR(self): - return self.getToken(PostgreSQLParser.REGEXP_INSTR, 0) - - def REGEXP_LIKE(self): - return self.getToken(PostgreSQLParser.REGEXP_LIKE, 0) - - def REGEXP_MATCH(self): - return self.getToken(PostgreSQLParser.REGEXP_MATCH, 0) - - def REGEXP_MATCHES(self): - return self.getToken(PostgreSQLParser.REGEXP_MATCHES, 0) - - def REGEXP_REPLACE(self): - return self.getToken(PostgreSQLParser.REGEXP_REPLACE, 0) - - def REGEXP_SPLIT_TO_ARRAY(self): - return self.getToken(PostgreSQLParser.REGEXP_SPLIT_TO_ARRAY, 0) - - def REGEXP_SPLIT_TO_TABLE(self): - return self.getToken(PostgreSQLParser.REGEXP_SPLIT_TO_TABLE, 0) - - def REGEXP_SUBSTR(self): - return self.getToken(PostgreSQLParser.REGEXP_SUBSTR, 0) - - def REPEAT(self): - return self.getToken(PostgreSQLParser.REPEAT, 0) - - def REPLACE(self): - return self.getToken(PostgreSQLParser.REPLACE, 0) - - def REVERSE(self): - return self.getToken(PostgreSQLParser.REVERSE, 0) - - def RPAD(self): - return self.getToken(PostgreSQLParser.RPAD, 0) - - def RTRIM(self): - return self.getToken(PostgreSQLParser.RTRIM, 0) - - def SPLIT_PART(self): - return self.getToken(PostgreSQLParser.SPLIT_PART, 0) - - def STARTS_WITH(self): - return self.getToken(PostgreSQLParser.STARTS_WITH, 0) - - def STRING_TO_ARRAY(self): - return self.getToken(PostgreSQLParser.STRING_TO_ARRAY, 0) - - def STRING_TO_TABLE(self): - return self.getToken(PostgreSQLParser.STRING_TO_TABLE, 0) - - def STRPOS(self): - return self.getToken(PostgreSQLParser.STRPOS, 0) - - def SUBSTR(self): - return self.getToken(PostgreSQLParser.SUBSTR, 0) - - def TO_ASCII(self): - return self.getToken(PostgreSQLParser.TO_ASCII, 0) - - def TO_HEX(self): - return self.getToken(PostgreSQLParser.TO_HEX, 0) - - def TRANSLATE(self): - return self.getToken(PostgreSQLParser.TRANSLATE, 0) - - def UNISTR(self): - return self.getToken(PostgreSQLParser.UNISTR, 0) - - def AGE(self): - return self.getToken(PostgreSQLParser.AGE, 0) - - def DATE_BIN(self): - return self.getToken(PostgreSQLParser.DATE_BIN, 0) - - def DATE_PART(self): - return self.getToken(PostgreSQLParser.DATE_PART, 0) - - def DATE_TRUNC(self): - return self.getToken(PostgreSQLParser.DATE_TRUNC, 0) - - def ISFINITE(self): - return self.getToken(PostgreSQLParser.ISFINITE, 0) - - def JUSTIFY_DAYS(self): - return self.getToken(PostgreSQLParser.JUSTIFY_DAYS, 0) - - def JUSTIFY_HOURS(self): - return self.getToken(PostgreSQLParser.JUSTIFY_HOURS, 0) - - def JUSTIFY_INTERVAL(self): - return self.getToken(PostgreSQLParser.JUSTIFY_INTERVAL, 0) - - def MAKE_DATE(self): - return self.getToken(PostgreSQLParser.MAKE_DATE, 0) - - def MAKE_INTERVAL(self): - return self.getToken(PostgreSQLParser.MAKE_INTERVAL, 0) - - def MAKE_TIME(self): - return self.getToken(PostgreSQLParser.MAKE_TIME, 0) - - def MAKE_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.MAKE_TIMESTAMP, 0) - - def MAKE_TIMESTAMPTZ(self): - return self.getToken(PostgreSQLParser.MAKE_TIMESTAMPTZ, 0) - - def CLOCK_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.CLOCK_TIMESTAMP, 0) - - def NOW(self): - return self.getToken(PostgreSQLParser.NOW, 0) - - def STATEMENT_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.STATEMENT_TIMESTAMP, 0) - - def TIMEOFDAY(self): - return self.getToken(PostgreSQLParser.TIMEOFDAY, 0) - - def TRANSACTION_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.TRANSACTION_TIMESTAMP, 0) - - def TO_TIMESTAMP(self): - return self.getToken(PostgreSQLParser.TO_TIMESTAMP, 0) - - def TO_CHAR(self): - return self.getToken(PostgreSQLParser.TO_CHAR, 0) - - def TO_DATE(self): - return self.getToken(PostgreSQLParser.TO_DATE, 0) - - def TO_NUMBER(self): - return self.getToken(PostgreSQLParser.TO_NUMBER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_builtin_function_name - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterBuiltin_function_name" ): - listener.enterBuiltin_function_name(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitBuiltin_function_name" ): - listener.exitBuiltin_function_name(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitBuiltin_function_name" ): - return visitor.visitBuiltin_function_name(self) - else: - return visitor.visitChildren(self) - - - - - def builtin_function_name(self): - - localctx = PostgreSQLParser.Builtin_function_nameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1394, self.RULE_builtin_function_name) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9950 - _la = self._input.LA(1) - if not(_la==304 or ((((_la - 418)) & ~0x3f) == 0 and ((1 << (_la - 418)) & 127) != 0) or ((((_la - 504)) & ~0x3f) == 0 and ((1 << (_la - 504)) & -130559) != 0) or ((((_la - 568)) & ~0x3f) == 0 and ((1 << (_la - 568)) & -1) != 0) or ((((_la - 632)) & ~0x3f) == 0 and ((1 << (_la - 632)) & 15) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Pl_functionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def comp_options(self): - return self.getTypedRuleContext(PostgreSQLParser.Comp_optionsContext,0) - - - def pl_block(self): - return self.getTypedRuleContext(PostgreSQLParser.Pl_blockContext,0) - - - def opt_semi(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_semiContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_pl_function - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPl_function" ): - listener.enterPl_function(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPl_function" ): - listener.exitPl_function(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPl_function" ): - return visitor.visitPl_function(self) - else: - return visitor.visitChildren(self) - - - - - def pl_function(self): - - localctx = PostgreSQLParser.Pl_functionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1396, self.RULE_pl_function) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9952 - self.comp_options() - self.state = 9953 - self.pl_block() - self.state = 9954 - self.opt_semi() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Comp_optionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def comp_option(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Comp_optionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Comp_optionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_comp_options - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterComp_options" ): - listener.enterComp_options(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitComp_options" ): - listener.exitComp_options(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitComp_options" ): - return visitor.visitComp_options(self) - else: - return visitor.visitChildren(self) - - - - - def comp_options(self): - - localctx = PostgreSQLParser.Comp_optionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1398, self.RULE_comp_options) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 9959 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==29: - self.state = 9956 - self.comp_option() - self.state = 9961 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Comp_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sharp(self): - return self.getTypedRuleContext(PostgreSQLParser.SharpContext,0) - - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def DUMP(self): - return self.getToken(PostgreSQLParser.DUMP, 0) - - def PRINT_STRICT_PARAMS(self): - return self.getToken(PostgreSQLParser.PRINT_STRICT_PARAMS, 0) - - def option_value(self): - return self.getTypedRuleContext(PostgreSQLParser.Option_valueContext,0) - - - def VARIABLE_CONFLICT(self): - return self.getToken(PostgreSQLParser.VARIABLE_CONFLICT, 0) - - def ERROR(self): - return self.getToken(PostgreSQLParser.ERROR, 0) - - def USE_VARIABLE(self): - return self.getToken(PostgreSQLParser.USE_VARIABLE, 0) - - def USE_COLUMN(self): - return self.getToken(PostgreSQLParser.USE_COLUMN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_comp_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterComp_option" ): - listener.enterComp_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitComp_option" ): - listener.exitComp_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitComp_option" ): - return visitor.visitComp_option(self) - else: - return visitor.visitChildren(self) - - - - - def comp_option(self): - - localctx = PostgreSQLParser.Comp_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1400, self.RULE_comp_option) - try: - self.state = 9982 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,666,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9962 - self.sharp() - self.state = 9963 - self.match(PostgreSQLParser.OPTION) - self.state = 9964 - self.match(PostgreSQLParser.DUMP) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9966 - self.sharp() - self.state = 9967 - self.match(PostgreSQLParser.PRINT_STRICT_PARAMS) - self.state = 9968 - self.option_value() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9970 - self.sharp() - self.state = 9971 - self.match(PostgreSQLParser.VARIABLE_CONFLICT) - self.state = 9972 - self.match(PostgreSQLParser.ERROR) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9974 - self.sharp() - self.state = 9975 - self.match(PostgreSQLParser.VARIABLE_CONFLICT) - self.state = 9976 - self.match(PostgreSQLParser.USE_VARIABLE) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 9978 - self.sharp() - self.state = 9979 - self.match(PostgreSQLParser.VARIABLE_CONFLICT) - self.state = 9980 - self.match(PostgreSQLParser.USE_COLUMN) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class SharpContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def Operator(self): - return self.getToken(PostgreSQLParser.Operator, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sharp - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSharp" ): - listener.enterSharp(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSharp" ): - listener.exitSharp(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSharp" ): - return visitor.visitSharp(self) - else: - return visitor.visitChildren(self) - - - - - def sharp(self): - - localctx = PostgreSQLParser.SharpContext(self, self._ctx, self.state) - self.enterRule(localctx, 1402, self.RULE_sharp) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9984 - self.match(PostgreSQLParser.Operator) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Option_valueContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def reserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Reserved_keywordContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Unreserved_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_option_value - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOption_value" ): - listener.enterOption_value(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOption_value" ): - listener.exitOption_value(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOption_value" ): - return visitor.visitOption_value(self) - else: - return visitor.visitChildren(self) - - - - - def option_value(self): - - localctx = PostgreSQLParser.Option_valueContext(self, self._ctx, self.state) - self.enterRule(localctx, 1404, self.RULE_option_value) - try: - self.state = 9990 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,667,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 9986 - self.sconst() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 9987 - self.reserved_keyword() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 9988 - self.plsql_unreserved_keyword() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 9989 - self.unreserved_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_semiContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_semi - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_semi" ): - listener.enterOpt_semi(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_semi" ): - listener.exitOpt_semi(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_semi" ): - return visitor.visitOpt_semi(self) - else: - return visitor.visitChildren(self) - - - - - def opt_semi(self): - - localctx = PostgreSQLParser.Opt_semiContext(self, self._ctx, self.state) - self.enterRule(localctx, 1406, self.RULE_opt_semi) - try: - self.state = 9994 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [-1]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [7]: - self.enterOuterAlt(localctx, 2) - self.state = 9993 - self.match(PostgreSQLParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Pl_blockContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_sectContext,0) - - - def BEGIN_P(self): - return self.getToken(PostgreSQLParser.BEGIN_P, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def exception_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Exception_sectContext,0) - - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def opt_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_labelContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_pl_block - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPl_block" ): - listener.enterPl_block(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPl_block" ): - listener.exitPl_block(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPl_block" ): - return visitor.visitPl_block(self) - else: - return visitor.visitChildren(self) - - - - - def pl_block(self): - - localctx = PostgreSQLParser.Pl_blockContext(self, self._ctx, self.state) - self.enterRule(localctx, 1408, self.RULE_pl_block) - try: - self.enterOuterAlt(localctx, 1) - self.state = 9996 - self.decl_sect() - self.state = 9997 - self.match(PostgreSQLParser.BEGIN_P) - self.state = 9998 - self.proc_sect() - self.state = 9999 - self.exception_sect() - self.state = 10000 - self.match(PostgreSQLParser.END_P) - self.state = 10001 - self.opt_label() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_sectContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_block_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_block_labelContext,0) - - - def decl_start(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_startContext,0) - - - def decl_stmts(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_stmtsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_sect - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_sect" ): - listener.enterDecl_sect(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_sect" ): - listener.exitDecl_sect(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_sect" ): - return visitor.visitDecl_sect(self) - else: - return visitor.visitChildren(self) - - - - - def decl_sect(self): - - localctx = PostgreSQLParser.Decl_sectContext(self, self._ctx, self.state) - self.enterRule(localctx, 1410, self.RULE_decl_sect) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10003 - self.opt_block_label() - self.state = 10008 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==178: - self.state = 10004 - self.decl_start() - self.state = 10006 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,669,self._ctx) - if la_ == 1: - self.state = 10005 - self.decl_stmts() - - - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_startContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DECLARE(self): - return self.getToken(PostgreSQLParser.DECLARE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_start - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_start" ): - listener.enterDecl_start(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_start" ): - listener.exitDecl_start(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_start" ): - return visitor.visitDecl_start(self) - else: - return visitor.visitChildren(self) - - - - - def decl_start(self): - - localctx = PostgreSQLParser.Decl_startContext(self, self._ctx, self.state) - self.enterRule(localctx, 1412, self.RULE_decl_start) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10010 - self.match(PostgreSQLParser.DECLARE) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_stmtsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_stmt(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Decl_stmtContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Decl_stmtContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_stmts - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_stmts" ): - listener.enterDecl_stmts(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_stmts" ): - listener.exitDecl_stmts(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_stmts" ): - return visitor.visitDecl_stmts(self) - else: - return visitor.visitChildren(self) - - - - - def decl_stmts(self): - - localctx = PostgreSQLParser.Decl_stmtsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1414, self.RULE_decl_stmts) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10013 - self._errHandler.sync(self) - _alt = 1 - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt == 1: - self.state = 10012 - self.decl_stmt() - - else: - raise NoViableAltException(self) - self.state = 10015 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,671,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Label_declContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LESS_LESS(self): - return self.getToken(PostgreSQLParser.LESS_LESS, 0) - - def any_identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_identifierContext,0) - - - def GREATER_GREATER(self): - return self.getToken(PostgreSQLParser.GREATER_GREATER, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_label_decl - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLabel_decl" ): - listener.enterLabel_decl(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLabel_decl" ): - listener.exitLabel_decl(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLabel_decl" ): - return visitor.visitLabel_decl(self) - else: - return visitor.visitChildren(self) - - - - - def label_decl(self): - - localctx = PostgreSQLParser.Label_declContext(self, self._ctx, self.state) - self.enterRule(localctx, 1416, self.RULE_label_decl) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10017 - self.match(PostgreSQLParser.LESS_LESS) - self.state = 10018 - self.any_identifier() - self.state = 10019 - self.match(PostgreSQLParser.GREATER_GREATER) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_stmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_statement(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_statementContext,0) - - - def DECLARE(self): - return self.getToken(PostgreSQLParser.DECLARE, 0) - - def label_decl(self): - return self.getTypedRuleContext(PostgreSQLParser.Label_declContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_stmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_stmt" ): - listener.enterDecl_stmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_stmt" ): - listener.exitDecl_stmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_stmt" ): - return visitor.visitDecl_stmt(self) - else: - return visitor.visitChildren(self) - - - - - def decl_stmt(self): - - localctx = PostgreSQLParser.Decl_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 1418, self.RULE_decl_stmt) - try: - self.state = 10024 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,672,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10021 - self.decl_statement() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10022 - self.match(PostgreSQLParser.DECLARE) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 10023 - self.label_decl() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_statementContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_varname(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_varnameContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def ALIAS(self): - return self.getToken(PostgreSQLParser.ALIAS, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def decl_aliasitem(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_aliasitemContext,0) - - - def decl_const(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_constContext,0) - - - def decl_datatype(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_datatypeContext,0) - - - def decl_collate(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_collateContext,0) - - - def decl_notnull(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_notnullContext,0) - - - def decl_defval(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_defvalContext,0) - - - def opt_scrollable(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_scrollableContext,0) - - - def CURSOR(self): - return self.getToken(PostgreSQLParser.CURSOR, 0) - - def decl_cursor_args(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_cursor_argsContext,0) - - - def decl_is_for(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_is_forContext,0) - - - def decl_cursor_query(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_cursor_queryContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_statement - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_statement" ): - listener.enterDecl_statement(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_statement" ): - listener.exitDecl_statement(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_statement" ): - return visitor.visitDecl_statement(self) - else: - return visitor.visitChildren(self) - - - - - def decl_statement(self): - - localctx = PostgreSQLParser.Decl_statementContext(self, self._ctx, self.state) - self.enterRule(localctx, 1420, self.RULE_decl_statement) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10026 - self.decl_varname() - self.state = 10042 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,673,self._ctx) - if la_ == 1: - self.state = 10027 - self.match(PostgreSQLParser.ALIAS) - self.state = 10028 - self.match(PostgreSQLParser.FOR) - self.state = 10029 - self.decl_aliasitem() - pass - - elif la_ == 2: - self.state = 10030 - self.decl_const() - self.state = 10031 - self.decl_datatype() - self.state = 10032 - self.decl_collate() - self.state = 10033 - self.decl_notnull() - self.state = 10034 - self.decl_defval() - pass - - elif la_ == 3: - self.state = 10036 - self.opt_scrollable() - self.state = 10037 - self.match(PostgreSQLParser.CURSOR) - self.state = 10038 - self.decl_cursor_args() - self.state = 10039 - self.decl_is_for() - self.state = 10040 - self.decl_cursor_query() - pass - - - self.state = 10044 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_scrollableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def SCROLL(self): - return self.getToken(PostgreSQLParser.SCROLL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_scrollable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_scrollable" ): - listener.enterOpt_scrollable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_scrollable" ): - listener.exitOpt_scrollable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_scrollable" ): - return visitor.visitOpt_scrollable(self) - else: - return visitor.visitChildren(self) - - - - - def opt_scrollable(self): - - localctx = PostgreSQLParser.Opt_scrollableContext(self, self._ctx, self.state) - self.enterRule(localctx, 1422, self.RULE_opt_scrollable) - try: - self.state = 10050 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [172]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [262]: - self.enterOuterAlt(localctx, 2) - self.state = 10047 - self.match(PostgreSQLParser.NO) - self.state = 10048 - self.match(PostgreSQLParser.SCROLL) - pass - elif token in [317]: - self.enterOuterAlt(localctx, 3) - self.state = 10049 - self.match(PostgreSQLParser.SCROLL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_cursor_queryContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_cursor_query - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_cursor_query" ): - listener.enterDecl_cursor_query(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_cursor_query" ): - listener.exitDecl_cursor_query(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_cursor_query" ): - return visitor.visitDecl_cursor_query(self) - else: - return visitor.visitChildren(self) - - - - - def decl_cursor_query(self): - - localctx = PostgreSQLParser.Decl_cursor_queryContext(self, self._ctx, self.state) - self.enterRule(localctx, 1424, self.RULE_decl_cursor_query) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10052 - self.selectstmt() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_cursor_argsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def decl_cursor_arglist(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_cursor_arglistContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_cursor_args - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_cursor_args" ): - listener.enterDecl_cursor_args(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_cursor_args" ): - listener.exitDecl_cursor_args(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_cursor_args" ): - return visitor.visitDecl_cursor_args(self) - else: - return visitor.visitChildren(self) - - - - - def decl_cursor_args(self): - - localctx = PostgreSQLParser.Decl_cursor_argsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1426, self.RULE_decl_cursor_args) - try: - self.state = 10059 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62, 116]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [2]: - self.enterOuterAlt(localctx, 2) - self.state = 10055 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 10056 - self.decl_cursor_arglist() - self.state = 10057 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_cursor_arglistContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_cursor_arg(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Decl_cursor_argContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Decl_cursor_argContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_cursor_arglist - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_cursor_arglist" ): - listener.enterDecl_cursor_arglist(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_cursor_arglist" ): - listener.exitDecl_cursor_arglist(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_cursor_arglist" ): - return visitor.visitDecl_cursor_arglist(self) - else: - return visitor.visitChildren(self) - - - - - def decl_cursor_arglist(self): - - localctx = PostgreSQLParser.Decl_cursor_arglistContext(self, self._ctx, self.state) - self.enterRule(localctx, 1428, self.RULE_decl_cursor_arglist) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10061 - self.decl_cursor_arg() - self.state = 10066 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10062 - self.match(PostgreSQLParser.COMMA) - self.state = 10063 - self.decl_cursor_arg() - self.state = 10068 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_cursor_argContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_varname(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_varnameContext,0) - - - def decl_datatype(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_datatypeContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_cursor_arg - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_cursor_arg" ): - listener.enterDecl_cursor_arg(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_cursor_arg" ): - listener.exitDecl_cursor_arg(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_cursor_arg" ): - return visitor.visitDecl_cursor_arg(self) - else: - return visitor.visitChildren(self) - - - - - def decl_cursor_arg(self): - - localctx = PostgreSQLParser.Decl_cursor_argContext(self, self._ctx, self.state) - self.enterRule(localctx, 1430, self.RULE_decl_cursor_arg) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10069 - self.decl_varname() - self.state = 10070 - self.decl_datatype() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_is_forContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_is_for - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_is_for" ): - listener.enterDecl_is_for(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_is_for" ): - listener.exitDecl_is_for(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_is_for" ): - return visitor.visitDecl_is_for(self) - else: - return visitor.visitChildren(self) - - - - - def decl_is_for(self): - - localctx = PostgreSQLParser.Decl_is_forContext(self, self._ctx, self.state) - self.enterRule(localctx, 1432, self.RULE_decl_is_for) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10072 - _la = self._input.LA(1) - if not(_la==62 or _la==116): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_aliasitemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PARAM(self): - return self.getToken(PostgreSQLParser.PARAM, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_aliasitem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_aliasitem" ): - listener.enterDecl_aliasitem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_aliasitem" ): - listener.exitDecl_aliasitem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_aliasitem" ): - return visitor.visitDecl_aliasitem(self) - else: - return visitor.visitChildren(self) - - - - - def decl_aliasitem(self): - - localctx = PostgreSQLParser.Decl_aliasitemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1434, self.RULE_decl_aliasitem) - try: - self.state = 10076 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [28]: - self.enterOuterAlt(localctx, 1) - self.state = 10074 - self.match(PostgreSQLParser.PARAM) - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - self.state = 10075 - self.colid() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_varnameContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_identifierContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_varname - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_varname" ): - listener.enterDecl_varname(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_varname" ): - listener.exitDecl_varname(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_varname" ): - return visitor.visitDecl_varname(self) - else: - return visitor.visitChildren(self) - - - - - def decl_varname(self): - - localctx = PostgreSQLParser.Decl_varnameContext(self, self._ctx, self.state) - self.enterRule(localctx, 1436, self.RULE_decl_varname) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10078 - self.any_identifier() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_constContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CONSTANT(self): - return self.getToken(PostgreSQLParser.CONSTANT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_const - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_const" ): - listener.enterDecl_const(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_const" ): - listener.exitDecl_const(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_const" ): - return visitor.visitDecl_const(self) - else: - return visitor.visitChildren(self) - - - - - def decl_const(self): - - localctx = PostgreSQLParser.Decl_constContext(self, self._ctx, self.state) - self.enterRule(localctx, 1438, self.RULE_decl_const) - try: - self.state = 10082 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,678,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10081 - self.match(PostgreSQLParser.CONSTANT) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_datatypeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def typename(self): - return self.getTypedRuleContext(PostgreSQLParser.TypenameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_datatype - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_datatype" ): - listener.enterDecl_datatype(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_datatype" ): - listener.exitDecl_datatype(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_datatype" ): - return visitor.visitDecl_datatype(self) - else: - return visitor.visitChildren(self) - - - - - def decl_datatype(self): - - localctx = PostgreSQLParser.Decl_datatypeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1440, self.RULE_decl_datatype) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10084 - self.typename() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_collateContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_collate - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_collate" ): - listener.enterDecl_collate(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_collate" ): - listener.exitDecl_collate(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_collate" ): - return visitor.visitDecl_collate(self) - else: - return visitor.visitChildren(self) - - - - - def decl_collate(self): - - localctx = PostgreSQLParser.Decl_collateContext(self, self._ctx, self.state) - self.enterRule(localctx, 1442, self.RULE_decl_collate) - try: - self.state = 10089 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 10, 20, 53, 77]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [43]: - self.enterOuterAlt(localctx, 2) - self.state = 10087 - self.match(PostgreSQLParser.COLLATE) - self.state = 10088 - self.any_name() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_notnullContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NOT(self): - return self.getToken(PostgreSQLParser.NOT, 0) - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_notnull - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_notnull" ): - listener.enterDecl_notnull(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_notnull" ): - listener.exitDecl_notnull(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_notnull" ): - return visitor.visitDecl_notnull(self) - else: - return visitor.visitChildren(self) - - - - - def decl_notnull(self): - - localctx = PostgreSQLParser.Decl_notnullContext(self, self._ctx, self.state) - self.enterRule(localctx, 1444, self.RULE_decl_notnull) - try: - self.state = 10094 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 10, 20, 53]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [77]: - self.enterOuterAlt(localctx, 2) - self.state = 10092 - self.match(PostgreSQLParser.NOT) - self.state = 10093 - self.match(PostgreSQLParser.NULL_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_defvalContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def decl_defkey(self): - return self.getTypedRuleContext(PostgreSQLParser.Decl_defkeyContext,0) - - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_defval - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_defval" ): - listener.enterDecl_defval(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_defval" ): - listener.exitDecl_defval(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_defval" ): - return visitor.visitDecl_defval(self) - else: - return visitor.visitChildren(self) - - - - - def decl_defval(self): - - localctx = PostgreSQLParser.Decl_defvalContext(self, self._ctx, self.state) - self.enterRule(localctx, 1446, self.RULE_decl_defval) - try: - self.state = 10100 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [10, 20, 53]: - self.enterOuterAlt(localctx, 2) - self.state = 10097 - self.decl_defkey() - self.state = 10098 - self.sql_expression() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Decl_defkeyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def assign_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Assign_operatorContext,0) - - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_decl_defkey - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterDecl_defkey" ): - listener.enterDecl_defkey(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitDecl_defkey" ): - listener.exitDecl_defkey(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitDecl_defkey" ): - return visitor.visitDecl_defkey(self) - else: - return visitor.visitChildren(self) - - - - - def decl_defkey(self): - - localctx = PostgreSQLParser.Decl_defkeyContext(self, self._ctx, self.state) - self.enterRule(localctx, 1448, self.RULE_decl_defkey) - try: - self.state = 10104 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [10, 20]: - self.enterOuterAlt(localctx, 1) - self.state = 10102 - self.assign_operator() - pass - elif token in [53]: - self.enterOuterAlt(localctx, 2) - self.state = 10103 - self.match(PostgreSQLParser.DEFAULT) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Assign_operatorContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def COLON_EQUALS(self): - return self.getToken(PostgreSQLParser.COLON_EQUALS, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_assign_operator - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssign_operator" ): - listener.enterAssign_operator(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssign_operator" ): - listener.exitAssign_operator(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssign_operator" ): - return visitor.visitAssign_operator(self) - else: - return visitor.visitChildren(self) - - - - - def assign_operator(self): - - localctx = PostgreSQLParser.Assign_operatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 1450, self.RULE_assign_operator) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10106 - _la = self._input.LA(1) - if not(_la==10 or _la==20): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_sectContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def proc_stmt(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Proc_stmtContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Proc_stmtContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_sect - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_sect" ): - listener.enterProc_sect(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_sect" ): - listener.exitProc_sect(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_sect" ): - return visitor.visitProc_sect(self) - else: - return visitor.visitChildren(self) - - - - - def proc_sect(self): - - localctx = PostgreSQLParser.Proc_sectContext(self, self._ctx, self.state) - self.enterRule(localctx, 1452, self.RULE_proc_sect) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10111 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,683,self._ctx) - while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: - if _alt==1: - self.state = 10108 - self.proc_stmt() - self.state = 10113 - self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,683,self._ctx) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_stmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def pl_block(self): - return self.getTypedRuleContext(PostgreSQLParser.Pl_blockContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def stmt_return(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_returnContext,0) - - - def stmt_raise(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_raiseContext,0) - - - def stmt_assign(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_assignContext,0) - - - def stmt_if(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_ifContext,0) - - - def stmt_case(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_caseContext,0) - - - def stmt_loop(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_loopContext,0) - - - def stmt_while(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_whileContext,0) - - - def stmt_for(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_forContext,0) - - - def stmt_foreach_a(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_foreach_aContext,0) - - - def stmt_exit(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_exitContext,0) - - - def stmt_assert(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_assertContext,0) - - - def stmt_execsql(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_execsqlContext,0) - - - def stmt_dynexecute(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_dynexecuteContext,0) - - - def stmt_perform(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_performContext,0) - - - def stmt_call(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_callContext,0) - - - def stmt_getdiag(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_getdiagContext,0) - - - def stmt_open(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_openContext,0) - - - def stmt_fetch(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_fetchContext,0) - - - def stmt_move(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_moveContext,0) - - - def stmt_close(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_closeContext,0) - - - def stmt_null(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_nullContext,0) - - - def stmt_commit(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_commitContext,0) - - - def stmt_rollback(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_rollbackContext,0) - - - def stmt_set(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_setContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_stmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_stmt" ): - listener.enterProc_stmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_stmt" ): - listener.exitProc_stmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_stmt" ): - return visitor.visitProc_stmt(self) - else: - return visitor.visitChildren(self) - - - - - def proc_stmt(self): - - localctx = PostgreSQLParser.Proc_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 1454, self.RULE_proc_stmt) - try: - self.state = 10141 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,684,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10114 - self.pl_block() - self.state = 10115 - self.match(PostgreSQLParser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10117 - self.stmt_return() - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 10118 - self.stmt_raise() - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 10119 - self.stmt_assign() - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 10120 - self.stmt_if() - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 10121 - self.stmt_case() - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 10122 - self.stmt_loop() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 10123 - self.stmt_while() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 10124 - self.stmt_for() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 10125 - self.stmt_foreach_a() - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 10126 - self.stmt_exit() - pass - - elif la_ == 12: - self.enterOuterAlt(localctx, 12) - self.state = 10127 - self.stmt_assert() - pass - - elif la_ == 13: - self.enterOuterAlt(localctx, 13) - self.state = 10128 - self.stmt_execsql() - pass - - elif la_ == 14: - self.enterOuterAlt(localctx, 14) - self.state = 10129 - self.stmt_dynexecute() - pass - - elif la_ == 15: - self.enterOuterAlt(localctx, 15) - self.state = 10130 - self.stmt_perform() - pass - - elif la_ == 16: - self.enterOuterAlt(localctx, 16) - self.state = 10131 - self.stmt_call() - pass - - elif la_ == 17: - self.enterOuterAlt(localctx, 17) - self.state = 10132 - self.stmt_getdiag() - pass - - elif la_ == 18: - self.enterOuterAlt(localctx, 18) - self.state = 10133 - self.stmt_open() - pass - - elif la_ == 19: - self.enterOuterAlt(localctx, 19) - self.state = 10134 - self.stmt_fetch() - pass - - elif la_ == 20: - self.enterOuterAlt(localctx, 20) - self.state = 10135 - self.stmt_move() - pass - - elif la_ == 21: - self.enterOuterAlt(localctx, 21) - self.state = 10136 - self.stmt_close() - pass - - elif la_ == 22: - self.enterOuterAlt(localctx, 22) - self.state = 10137 - self.stmt_null() - pass - - elif la_ == 23: - self.enterOuterAlt(localctx, 23) - self.state = 10138 - self.stmt_commit() - pass - - elif la_ == 24: - self.enterOuterAlt(localctx, 24) - self.state = 10139 - self.stmt_rollback() - pass - - elif la_ == 25: - self.enterOuterAlt(localctx, 25) - self.state = 10140 - self.stmt_set() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_performContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def PERFORM(self): - return self.getToken(PostgreSQLParser.PERFORM, 0) - - def expr_until_semi(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_until_semiContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_perform - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_perform" ): - listener.enterStmt_perform(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_perform" ): - listener.exitStmt_perform(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_perform" ): - return visitor.visitStmt_perform(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_perform(self): - - localctx = PostgreSQLParser.Stmt_performContext(self, self._ctx, self.state) - self.enterRule(localctx, 1456, self.RULE_stmt_perform) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10143 - self.match(PostgreSQLParser.PERFORM) - self.state = 10144 - self.expr_until_semi() - self.state = 10145 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_callContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CALL(self): - return self.getToken(PostgreSQLParser.CALL, 0) - - def any_identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_identifierContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opt_expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_expr_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_call - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_call" ): - listener.enterStmt_call(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_call" ): - listener.exitStmt_call(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_call" ): - return visitor.visitStmt_call(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_call(self): - - localctx = PostgreSQLParser.Stmt_callContext(self, self._ctx, self.state) - self.enterRule(localctx, 1458, self.RULE_stmt_call) - try: - self.state = 10161 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [433]: - self.enterOuterAlt(localctx, 1) - self.state = 10147 - self.match(PostgreSQLParser.CALL) - self.state = 10148 - self.any_identifier() - self.state = 10149 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 10150 - self.opt_expr_list() - self.state = 10151 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 10152 - self.match(PostgreSQLParser.SEMI) - pass - elif token in [57]: - self.enterOuterAlt(localctx, 2) - self.state = 10154 - self.match(PostgreSQLParser.DO) - self.state = 10155 - self.any_identifier() - self.state = 10156 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 10157 - self.opt_expr_list() - self.state = 10158 - self.match(PostgreSQLParser.CLOSE_PAREN) - self.state = 10159 - self.match(PostgreSQLParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_expr_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_expr_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_expr_list" ): - listener.enterOpt_expr_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_expr_list" ): - listener.exitOpt_expr_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_expr_list" ): - return visitor.visitOpt_expr_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_expr_list(self): - - localctx = PostgreSQLParser.Opt_expr_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1460, self.RULE_opt_expr_list) - try: - self.state = 10165 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [3]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [2, 12, 13, 28, 29, 33, 35, 40, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 57, 60, 61, 75, 76, 77, 78, 89, 92, 96, 98, 99, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 645, 647, 649, 650, 654, 658, 660, 661, 662, 671]: - self.enterOuterAlt(localctx, 2) - self.state = 10164 - self.expr_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_assignContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def assign_var(self): - return self.getTypedRuleContext(PostgreSQLParser.Assign_varContext,0) - - - def assign_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Assign_operatorContext,0) - - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_assign - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_assign" ): - listener.enterStmt_assign(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_assign" ): - listener.exitStmt_assign(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_assign" ): - return visitor.visitStmt_assign(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_assign(self): - - localctx = PostgreSQLParser.Stmt_assignContext(self, self._ctx, self.state) - self.enterRule(localctx, 1462, self.RULE_stmt_assign) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10167 - self.assign_var() - self.state = 10168 - self.assign_operator() - self.state = 10169 - self.sql_expression() - self.state = 10170 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_getdiagContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def GET(self): - return self.getToken(PostgreSQLParser.GET, 0) - - def getdiag_area_opt(self): - return self.getTypedRuleContext(PostgreSQLParser.Getdiag_area_optContext,0) - - - def DIAGNOSTICS(self): - return self.getToken(PostgreSQLParser.DIAGNOSTICS, 0) - - def getdiag_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Getdiag_listContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_getdiag - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_getdiag" ): - listener.enterStmt_getdiag(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_getdiag" ): - listener.exitStmt_getdiag(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_getdiag" ): - return visitor.visitStmt_getdiag(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_getdiag(self): - - localctx = PostgreSQLParser.Stmt_getdiagContext(self, self._ctx, self.state) - self.enterRule(localctx, 1464, self.RULE_stmt_getdiag) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10172 - self.match(PostgreSQLParser.GET) - self.state = 10173 - self.getdiag_area_opt() - self.state = 10174 - self.match(PostgreSQLParser.DIAGNOSTICS) - self.state = 10175 - self.getdiag_list() - self.state = 10176 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Getdiag_area_optContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def STACKED(self): - return self.getToken(PostgreSQLParser.STACKED, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_getdiag_area_opt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGetdiag_area_opt" ): - listener.enterGetdiag_area_opt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGetdiag_area_opt" ): - listener.exitGetdiag_area_opt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGetdiag_area_opt" ): - return visitor.visitGetdiag_area_opt(self) - else: - return visitor.visitChildren(self) - - - - - def getdiag_area_opt(self): - - localctx = PostgreSQLParser.Getdiag_area_optContext(self, self._ctx, self.state) - self.enterRule(localctx, 1466, self.RULE_getdiag_area_opt) - try: - self.state = 10181 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [500]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [434]: - self.enterOuterAlt(localctx, 2) - self.state = 10179 - self.match(PostgreSQLParser.CURRENT_P) - pass - elif token in [501]: - self.enterOuterAlt(localctx, 3) - self.state = 10180 - self.match(PostgreSQLParser.STACKED) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Getdiag_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def getdiag_list_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Getdiag_list_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Getdiag_list_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_getdiag_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGetdiag_list" ): - listener.enterGetdiag_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGetdiag_list" ): - listener.exitGetdiag_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGetdiag_list" ): - return visitor.visitGetdiag_list(self) - else: - return visitor.visitChildren(self) - - - - - def getdiag_list(self): - - localctx = PostgreSQLParser.Getdiag_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1468, self.RULE_getdiag_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10183 - self.getdiag_list_item() - self.state = 10188 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10184 - self.match(PostgreSQLParser.COMMA) - self.state = 10185 - self.getdiag_list_item() - self.state = 10190 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Getdiag_list_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def getdiag_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Getdiag_targetContext,0) - - - def assign_operator(self): - return self.getTypedRuleContext(PostgreSQLParser.Assign_operatorContext,0) - - - def getdiag_item(self): - return self.getTypedRuleContext(PostgreSQLParser.Getdiag_itemContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_getdiag_list_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGetdiag_list_item" ): - listener.enterGetdiag_list_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGetdiag_list_item" ): - listener.exitGetdiag_list_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGetdiag_list_item" ): - return visitor.visitGetdiag_list_item(self) - else: - return visitor.visitChildren(self) - - - - - def getdiag_list_item(self): - - localctx = PostgreSQLParser.Getdiag_list_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1470, self.RULE_getdiag_list_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10191 - self.getdiag_target() - self.state = 10192 - self.assign_operator() - self.state = 10193 - self.getdiag_item() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Getdiag_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_getdiag_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGetdiag_item" ): - listener.enterGetdiag_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGetdiag_item" ): - listener.exitGetdiag_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGetdiag_item" ): - return visitor.visitGetdiag_item(self) - else: - return visitor.visitChildren(self) - - - - - def getdiag_item(self): - - localctx = PostgreSQLParser.Getdiag_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1472, self.RULE_getdiag_item) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10195 - self.colid() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Getdiag_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def assign_var(self): - return self.getTypedRuleContext(PostgreSQLParser.Assign_varContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_getdiag_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterGetdiag_target" ): - listener.enterGetdiag_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitGetdiag_target" ): - listener.exitGetdiag_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitGetdiag_target" ): - return visitor.visitGetdiag_target(self) - else: - return visitor.visitChildren(self) - - - - - def getdiag_target(self): - - localctx = PostgreSQLParser.Getdiag_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 1474, self.RULE_getdiag_target) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10197 - self.assign_var() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Assign_varContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def PARAM(self): - return self.getToken(PostgreSQLParser.PARAM, 0) - - def OPEN_BRACKET(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OPEN_BRACKET) - else: - return self.getToken(PostgreSQLParser.OPEN_BRACKET, i) - - def expr_until_rightbracket(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Expr_until_rightbracketContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Expr_until_rightbracketContext,i) - - - def CLOSE_BRACKET(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CLOSE_BRACKET) - else: - return self.getToken(PostgreSQLParser.CLOSE_BRACKET, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_assign_var - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAssign_var" ): - listener.enterAssign_var(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAssign_var" ): - listener.exitAssign_var(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAssign_var" ): - return visitor.visitAssign_var(self) - else: - return visitor.visitChildren(self) - - - - - def assign_var(self): - - localctx = PostgreSQLParser.Assign_varContext(self, self._ctx, self.state) - self.enterRule(localctx, 1476, self.RULE_assign_var) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10201 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 10199 - self.any_name() - pass - elif token in [28]: - self.state = 10200 - self.match(PostgreSQLParser.PARAM) - pass - else: - raise NoViableAltException(self) - - self.state = 10209 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==4: - self.state = 10203 - self.match(PostgreSQLParser.OPEN_BRACKET) - self.state = 10204 - self.expr_until_rightbracket() - self.state = 10205 - self.match(PostgreSQLParser.CLOSE_BRACKET) - self.state = 10211 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_ifContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def IF_P(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.IF_P) - else: - return self.getToken(PostgreSQLParser.IF_P, i) - - def expr_until_then(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_until_thenContext,0) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def stmt_elsifs(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_elsifsContext,0) - - - def stmt_else(self): - return self.getTypedRuleContext(PostgreSQLParser.Stmt_elseContext,0) - - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_if - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_if" ): - listener.enterStmt_if(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_if" ): - listener.exitStmt_if(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_if" ): - return visitor.visitStmt_if(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_if(self): - - localctx = PostgreSQLParser.Stmt_ifContext(self, self._ctx, self.state) - self.enterRule(localctx, 1478, self.RULE_stmt_if) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10212 - self.match(PostgreSQLParser.IF_P) - self.state = 10213 - self.expr_until_then() - self.state = 10214 - self.match(PostgreSQLParser.THEN) - self.state = 10215 - self.proc_sect() - self.state = 10216 - self.stmt_elsifs() - self.state = 10217 - self.stmt_else() - self.state = 10218 - self.match(PostgreSQLParser.END_P) - self.state = 10219 - self.match(PostgreSQLParser.IF_P) - self.state = 10220 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_elsifsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ELSIF(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.ELSIF) - else: - return self.getToken(PostgreSQLParser.ELSIF, i) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def THEN(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.THEN) - else: - return self.getToken(PostgreSQLParser.THEN, i) - - def proc_sect(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Proc_sectContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_elsifs - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_elsifs" ): - listener.enterStmt_elsifs(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_elsifs" ): - listener.exitStmt_elsifs(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_elsifs" ): - return visitor.visitStmt_elsifs(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_elsifs(self): - - localctx = PostgreSQLParser.Stmt_elsifsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1480, self.RULE_stmt_elsifs) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10229 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==502: - self.state = 10222 - self.match(PostgreSQLParser.ELSIF) - self.state = 10223 - self.a_expr() - self.state = 10224 - self.match(PostgreSQLParser.THEN) - self.state = 10225 - self.proc_sect() - self.state = 10231 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_elseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ELSE(self): - return self.getToken(PostgreSQLParser.ELSE, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_else - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_else" ): - listener.enterStmt_else(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_else" ): - listener.exitStmt_else(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_else" ): - return visitor.visitStmt_else(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_else(self): - - localctx = PostgreSQLParser.Stmt_elseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1482, self.RULE_stmt_else) - try: - self.state = 10235 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [454]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [58]: - self.enterOuterAlt(localctx, 2) - self.state = 10233 - self.match(PostgreSQLParser.ELSE) - self.state = 10234 - self.proc_sect() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_caseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CASE(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.CASE) - else: - return self.getToken(PostgreSQLParser.CASE, i) - - def opt_expr_until_when(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_expr_until_whenContext,0) - - - def case_when_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Case_when_listContext,0) - - - def opt_case_else(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_case_elseContext,0) - - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_case - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_case" ): - listener.enterStmt_case(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_case" ): - listener.exitStmt_case(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_case" ): - return visitor.visitStmt_case(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_case(self): - - localctx = PostgreSQLParser.Stmt_caseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1484, self.RULE_stmt_case) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10237 - self.match(PostgreSQLParser.CASE) - self.state = 10238 - self.opt_expr_until_when() - self.state = 10239 - self.case_when_list() - self.state = 10240 - self.opt_case_else() - self.state = 10241 - self.match(PostgreSQLParser.END_P) - self.state = 10242 - self.match(PostgreSQLParser.CASE) - self.state = 10243 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_expr_until_whenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_expr_until_when - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_expr_until_when" ): - listener.enterOpt_expr_until_when(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_expr_until_when" ): - listener.exitOpt_expr_until_when(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_expr_until_when" ): - return visitor.visitOpt_expr_until_when(self) - else: - return visitor.visitChildren(self) - - - - - def opt_expr_until_when(self): - - localctx = PostgreSQLParser.Opt_expr_until_whenContext(self, self._ctx, self.state) - self.enterRule(localctx, 1486, self.RULE_opt_expr_until_when) - try: - self.state = 10247 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,693,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10246 - self.sql_expression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Case_when_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def case_when(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Case_whenContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Case_whenContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_case_when_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCase_when_list" ): - listener.enterCase_when_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCase_when_list" ): - listener.exitCase_when_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCase_when_list" ): - return visitor.visitCase_when_list(self) - else: - return visitor.visitChildren(self) - - - - - def case_when_list(self): - - localctx = PostgreSQLParser.Case_when_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1488, self.RULE_case_when_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10250 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 10249 - self.case_when() - self.state = 10252 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==102): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Case_whenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_case_when - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCase_when" ): - listener.enterCase_when(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCase_when" ): - listener.exitCase_when(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCase_when" ): - return visitor.visitCase_when(self) - else: - return visitor.visitChildren(self) - - - - - def case_when(self): - - localctx = PostgreSQLParser.Case_whenContext(self, self._ctx, self.state) - self.enterRule(localctx, 1490, self.RULE_case_when) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10254 - self.match(PostgreSQLParser.WHEN) - self.state = 10255 - self.expr_list() - self.state = 10256 - self.match(PostgreSQLParser.THEN) - self.state = 10257 - self.proc_sect() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_case_elseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ELSE(self): - return self.getToken(PostgreSQLParser.ELSE, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_case_else - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_case_else" ): - listener.enterOpt_case_else(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_case_else" ): - listener.exitOpt_case_else(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_case_else" ): - return visitor.visitOpt_case_else(self) - else: - return visitor.visitChildren(self) - - - - - def opt_case_else(self): - - localctx = PostgreSQLParser.Opt_case_elseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1492, self.RULE_opt_case_else) - try: - self.state = 10262 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [454]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [58]: - self.enterOuterAlt(localctx, 2) - self.state = 10260 - self.match(PostgreSQLParser.ELSE) - self.state = 10261 - self.proc_sect() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_loopContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_loop_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_loop_labelContext,0) - - - def loop_body(self): - return self.getTypedRuleContext(PostgreSQLParser.Loop_bodyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_loop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_loop" ): - listener.enterStmt_loop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_loop" ): - listener.exitStmt_loop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_loop" ): - return visitor.visitStmt_loop(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_loop(self): - - localctx = PostgreSQLParser.Stmt_loopContext(self, self._ctx, self.state) - self.enterRule(localctx, 1494, self.RULE_stmt_loop) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10264 - self.opt_loop_label() - self.state = 10265 - self.loop_body() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_whileContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_loop_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_loop_labelContext,0) - - - def WHILE(self): - return self.getToken(PostgreSQLParser.WHILE, 0) - - def expr_until_loop(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_until_loopContext,0) - - - def loop_body(self): - return self.getTypedRuleContext(PostgreSQLParser.Loop_bodyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_while - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_while" ): - listener.enterStmt_while(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_while" ): - listener.exitStmt_while(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_while" ): - return visitor.visitStmt_while(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_while(self): - - localctx = PostgreSQLParser.Stmt_whileContext(self, self._ctx, self.state) - self.enterRule(localctx, 1496, self.RULE_stmt_while) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10267 - self.opt_loop_label() - self.state = 10268 - self.match(PostgreSQLParser.WHILE) - self.state = 10269 - self.expr_until_loop() - self.state = 10270 - self.loop_body() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_forContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_loop_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_loop_labelContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def for_control(self): - return self.getTypedRuleContext(PostgreSQLParser.For_controlContext,0) - - - def loop_body(self): - return self.getTypedRuleContext(PostgreSQLParser.Loop_bodyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_for - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_for" ): - listener.enterStmt_for(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_for" ): - listener.exitStmt_for(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_for" ): - return visitor.visitStmt_for(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_for(self): - - localctx = PostgreSQLParser.Stmt_forContext(self, self._ctx, self.state) - self.enterRule(localctx, 1498, self.RULE_stmt_for) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10272 - self.opt_loop_label() - self.state = 10273 - self.match(PostgreSQLParser.FOR) - self.state = 10274 - self.for_control() - self.state = 10275 - self.loop_body() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_controlContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def for_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.For_variableContext,0) - - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def cursor_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_nameContext,0) - - - def opt_cursor_parameters(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_cursor_parametersContext,0) - - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def explainstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.ExplainstmtContext,0) - - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def opt_for_using_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_for_using_expressionContext,0) - - - def opt_reverse(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_reverseContext,0) - - - def DOT_DOT(self): - return self.getToken(PostgreSQLParser.DOT_DOT, 0) - - def opt_by_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_by_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_control - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_control" ): - listener.enterFor_control(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_control" ): - listener.exitFor_control(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_control" ): - return visitor.visitFor_control(self) - else: - return visitor.visitChildren(self) - - - - - def for_control(self): - - localctx = PostgreSQLParser.For_controlContext(self, self._ctx, self.state) - self.enterRule(localctx, 1500, self.RULE_for_control) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10277 - self.for_variable() - self.state = 10278 - self.match(PostgreSQLParser.IN_P) - self.state = 10294 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,696,self._ctx) - if la_ == 1: - self.state = 10279 - self.cursor_name() - self.state = 10280 - self.opt_cursor_parameters() - pass - - elif la_ == 2: - self.state = 10282 - self.selectstmt() - pass - - elif la_ == 3: - self.state = 10283 - self.explainstmt() - pass - - elif la_ == 4: - self.state = 10284 - self.match(PostgreSQLParser.EXECUTE) - self.state = 10285 - self.a_expr() - self.state = 10286 - self.opt_for_using_expression() - pass - - elif la_ == 5: - self.state = 10288 - self.opt_reverse() - self.state = 10289 - self.a_expr() - self.state = 10290 - self.match(PostgreSQLParser.DOT_DOT) - self.state = 10291 - self.a_expr() - self.state = 10292 - self.opt_by_expression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_for_using_expressionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_for_using_expression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_for_using_expression" ): - listener.enterOpt_for_using_expression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_for_using_expression" ): - listener.exitOpt_for_using_expression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_for_using_expression" ): - return visitor.visitOpt_for_using_expression(self) - else: - return visitor.visitChildren(self) - - - - - def opt_for_using_expression(self): - - localctx = PostgreSQLParser.Opt_for_using_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1502, self.RULE_opt_for_using_expression) - try: - self.state = 10299 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 519]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [100]: - self.enterOuterAlt(localctx, 2) - self.state = 10297 - self.match(PostgreSQLParser.USING) - self.state = 10298 - self.expr_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_cursor_parametersContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_cursor_parameters - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_cursor_parameters" ): - listener.enterOpt_cursor_parameters(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_cursor_parameters" ): - listener.exitOpt_cursor_parameters(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_cursor_parameters" ): - return visitor.visitOpt_cursor_parameters(self) - else: - return visitor.visitChildren(self) - - - - - def opt_cursor_parameters(self): - - localctx = PostgreSQLParser.Opt_cursor_parametersContext(self, self._ctx, self.state) - self.enterRule(localctx, 1504, self.RULE_opt_cursor_parameters) - self._la = 0 # Token type - try: - self.state = 10313 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [519]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [2]: - self.enterOuterAlt(localctx, 2) - self.state = 10302 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 10303 - self.a_expr() - self.state = 10308 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10304 - self.match(PostgreSQLParser.COMMA) - self.state = 10305 - self.a_expr() - self.state = 10310 - self._errHandler.sync(self) - _la = self._input.LA(1) - - self.state = 10311 - self.match(PostgreSQLParser.CLOSE_PAREN) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_reverseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def REVERSE(self): - return self.getToken(PostgreSQLParser.REVERSE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_reverse - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_reverse" ): - listener.enterOpt_reverse(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_reverse" ): - listener.exitOpt_reverse(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_reverse" ): - return visitor.visitOpt_reverse(self) - else: - return visitor.visitChildren(self) - - - - - def opt_reverse(self): - - localctx = PostgreSQLParser.Opt_reverseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1506, self.RULE_opt_reverse) - try: - self.state = 10317 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,700,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10316 - self.match(PostgreSQLParser.REVERSE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_by_expressionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def BY(self): - return self.getToken(PostgreSQLParser.BY, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_by_expression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_by_expression" ): - listener.enterOpt_by_expression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_by_expression" ): - listener.exitOpt_by_expression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_by_expression" ): - return visitor.visitOpt_by_expression(self) - else: - return visitor.visitChildren(self) - - - - - def opt_by_expression(self): - - localctx = PostgreSQLParser.Opt_by_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1508, self.RULE_opt_by_expression) - try: - self.state = 10322 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [519]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [147]: - self.enterOuterAlt(localctx, 2) - self.state = 10320 - self.match(PostgreSQLParser.BY) - self.state = 10321 - self.a_expr() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class For_variableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_name_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_name_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_for_variable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterFor_variable" ): - listener.enterFor_variable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitFor_variable" ): - listener.exitFor_variable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitFor_variable" ): - return visitor.visitFor_variable(self) - else: - return visitor.visitChildren(self) - - - - - def for_variable(self): - - localctx = PostgreSQLParser.For_variableContext(self, self._ctx, self.state) - self.enterRule(localctx, 1510, self.RULE_for_variable) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10324 - self.any_name_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_foreach_aContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_loop_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_loop_labelContext,0) - - - def FOREACH(self): - return self.getToken(PostgreSQLParser.FOREACH, 0) - - def for_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.For_variableContext,0) - - - def foreach_slice(self): - return self.getTypedRuleContext(PostgreSQLParser.Foreach_sliceContext,0) - - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def ARRAY(self): - return self.getToken(PostgreSQLParser.ARRAY, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def loop_body(self): - return self.getTypedRuleContext(PostgreSQLParser.Loop_bodyContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_foreach_a - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_foreach_a" ): - listener.enterStmt_foreach_a(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_foreach_a" ): - listener.exitStmt_foreach_a(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_foreach_a" ): - return visitor.visitStmt_foreach_a(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_foreach_a(self): - - localctx = PostgreSQLParser.Stmt_foreach_aContext(self, self._ctx, self.state) - self.enterRule(localctx, 1512, self.RULE_stmt_foreach_a) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10326 - self.opt_loop_label() - self.state = 10327 - self.match(PostgreSQLParser.FOREACH) - self.state = 10328 - self.for_variable() - self.state = 10329 - self.foreach_slice() - self.state = 10330 - self.match(PostgreSQLParser.IN_P) - self.state = 10331 - self.match(PostgreSQLParser.ARRAY) - self.state = 10332 - self.a_expr() - self.state = 10333 - self.loop_body() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Foreach_sliceContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SLICE(self): - return self.getToken(PostgreSQLParser.SLICE, 0) - - def iconst(self): - return self.getTypedRuleContext(PostgreSQLParser.IconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_foreach_slice - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterForeach_slice" ): - listener.enterForeach_slice(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitForeach_slice" ): - listener.exitForeach_slice(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitForeach_slice" ): - return visitor.visitForeach_slice(self) - else: - return visitor.visitChildren(self) - - - - - def foreach_slice(self): - - localctx = PostgreSQLParser.Foreach_sliceContext(self, self._ctx, self.state) - self.enterRule(localctx, 1514, self.RULE_foreach_slice) - try: - self.state = 10338 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [68]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [506]: - self.enterOuterAlt(localctx, 2) - self.state = 10336 - self.match(PostgreSQLParser.SLICE) - self.state = 10337 - self.iconst() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_exitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def exit_type(self): - return self.getTypedRuleContext(PostgreSQLParser.Exit_typeContext,0) - - - def opt_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_labelContext,0) - - - def opt_exitcond(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_exitcondContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_exit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_exit" ): - listener.enterStmt_exit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_exit" ): - listener.exitStmt_exit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_exit" ): - return visitor.visitStmt_exit(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_exit(self): - - localctx = PostgreSQLParser.Stmt_exitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1516, self.RULE_stmt_exit) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10340 - self.exit_type() - self.state = 10341 - self.opt_label() - self.state = 10342 - self.opt_exitcond() - self.state = 10343 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Exit_typeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXIT(self): - return self.getToken(PostgreSQLParser.EXIT, 0) - - def CONTINUE_P(self): - return self.getToken(PostgreSQLParser.CONTINUE_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_exit_type - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExit_type" ): - listener.enterExit_type(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExit_type" ): - listener.exitExit_type(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExit_type" ): - return visitor.visitExit_type(self) - else: - return visitor.visitChildren(self) - - - - - def exit_type(self): - - localctx = PostgreSQLParser.Exit_typeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1518, self.RULE_exit_type) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10345 - _la = self._input.LA(1) - if not(_la==167 or _la==507): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_returnContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RETURN(self): - return self.getToken(PostgreSQLParser.RETURN, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def QUERY(self): - return self.getToken(PostgreSQLParser.QUERY, 0) - - def opt_return_result(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_return_resultContext,0) - - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def opt_for_using_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_for_using_expressionContext,0) - - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_return - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_return" ): - listener.enterStmt_return(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_return" ): - listener.exitStmt_return(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_return" ): - return visitor.visitStmt_return(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_return(self): - - localctx = PostgreSQLParser.Stmt_returnContext(self, self._ctx, self.state) - self.enterRule(localctx, 1520, self.RULE_stmt_return) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10347 - self.match(PostgreSQLParser.RETURN) - self.state = 10359 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,704,self._ctx) - if la_ == 1: - self.state = 10348 - self.match(PostgreSQLParser.NEXT) - self.state = 10349 - self.sql_expression() - pass - - elif la_ == 2: - self.state = 10350 - self.match(PostgreSQLParser.QUERY) - self.state = 10356 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [202]: - self.state = 10351 - self.match(PostgreSQLParser.EXECUTE) - self.state = 10352 - self.a_expr() - self.state = 10353 - self.opt_for_using_expression() - pass - elif token in [2, 88, 92, 105, 415]: - self.state = 10355 - self.selectstmt() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 3: - self.state = 10358 - self.opt_return_result() - pass - - - self.state = 10361 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_return_resultContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_return_result - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_return_result" ): - listener.enterOpt_return_result(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_return_result" ): - listener.exitOpt_return_result(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_return_result" ): - return visitor.visitOpt_return_result(self) - else: - return visitor.visitChildren(self) - - - - - def opt_return_result(self): - - localctx = PostgreSQLParser.Opt_return_resultContext(self, self._ctx, self.state) - self.enterRule(localctx, 1522, self.RULE_opt_return_result) - try: - self.state = 10365 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,705,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10364 - self.sql_expression() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_raiseContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def RAISE(self): - return self.getToken(PostgreSQLParser.RAISE, 0) - - def opt_stmt_raise_level(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_stmt_raise_levelContext,0) - - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def opt_raise_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_raise_listContext,0) - - - def opt_raise_using(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_raise_usingContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def SQLSTATE(self): - return self.getToken(PostgreSQLParser.SQLSTATE, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_raise - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_raise" ): - listener.enterStmt_raise(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_raise" ): - listener.exitStmt_raise(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_raise" ): - return visitor.visitStmt_raise(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_raise(self): - - localctx = PostgreSQLParser.Stmt_raiseContext(self, self._ctx, self.state) - self.enterRule(localctx, 1524, self.RULE_stmt_raise) - try: - self.state = 10393 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,706,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10367 - self.match(PostgreSQLParser.RAISE) - self.state = 10368 - self.opt_stmt_raise_level() - self.state = 10369 - self.sconst() - self.state = 10370 - self.opt_raise_list() - self.state = 10371 - self.opt_raise_using() - self.state = 10372 - self.match(PostgreSQLParser.SEMI) - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10374 - self.match(PostgreSQLParser.RAISE) - self.state = 10375 - self.opt_stmt_raise_level() - self.state = 10376 - self.identifier() - self.state = 10377 - self.opt_raise_using() - self.state = 10378 - self.match(PostgreSQLParser.SEMI) - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 10380 - self.match(PostgreSQLParser.RAISE) - self.state = 10381 - self.opt_stmt_raise_level() - self.state = 10382 - self.match(PostgreSQLParser.SQLSTATE) - self.state = 10383 - self.sconst() - self.state = 10384 - self.opt_raise_using() - self.state = 10385 - self.match(PostgreSQLParser.SEMI) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 10387 - self.match(PostgreSQLParser.RAISE) - self.state = 10388 - self.opt_stmt_raise_level() - self.state = 10389 - self.opt_raise_using() - self.state = 10390 - self.match(PostgreSQLParser.SEMI) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 10392 - self.match(PostgreSQLParser.RAISE) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_stmt_raise_levelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def DEBUG(self): - return self.getToken(PostgreSQLParser.DEBUG, 0) - - def LOG(self): - return self.getToken(PostgreSQLParser.LOG, 0) - - def INFO(self): - return self.getToken(PostgreSQLParser.INFO, 0) - - def NOTICE(self): - return self.getToken(PostgreSQLParser.NOTICE, 0) - - def WARNING(self): - return self.getToken(PostgreSQLParser.WARNING, 0) - - def EXCEPTION(self): - return self.getToken(PostgreSQLParser.EXCEPTION, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_stmt_raise_level - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_stmt_raise_level" ): - listener.enterOpt_stmt_raise_level(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_stmt_raise_level" ): - listener.exitOpt_stmt_raise_level(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_stmt_raise_level" ): - return visitor.visitOpt_stmt_raise_level(self) - else: - return visitor.visitChildren(self) - - - - - def opt_stmt_raise_level(self): - - localctx = PostgreSQLParser.Opt_stmt_raise_levelContext(self, self._ctx, self.state) - self.enterRule(localctx, 1526, self.RULE_opt_stmt_raise_level) - try: - self.state = 10403 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,707,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 10397 - self.match(PostgreSQLParser.DEBUG) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 10398 - self.match(PostgreSQLParser.LOG) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 10399 - self.match(PostgreSQLParser.INFO) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 10400 - self.match(PostgreSQLParser.NOTICE) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 10401 - self.match(PostgreSQLParser.WARNING) - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 10402 - self.match(PostgreSQLParser.EXCEPTION) - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_raise_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_raise_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_raise_list" ): - listener.enterOpt_raise_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_raise_list" ): - listener.exitOpt_raise_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_raise_list" ): - return visitor.visitOpt_raise_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_raise_list(self): - - localctx = PostgreSQLParser.Opt_raise_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1528, self.RULE_opt_raise_list) - self._la = 0 # Token type - try: - self.state = 10412 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 100]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [6]: - self.enterOuterAlt(localctx, 2) - self.state = 10408 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 10406 - self.match(PostgreSQLParser.COMMA) - self.state = 10407 - self.a_expr() - self.state = 10410 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==6): - break - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_raise_usingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def opt_raise_using_elem_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_raise_using_elem_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_raise_using - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_raise_using" ): - listener.enterOpt_raise_using(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_raise_using" ): - listener.exitOpt_raise_using(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_raise_using" ): - return visitor.visitOpt_raise_using(self) - else: - return visitor.visitChildren(self) - - - - - def opt_raise_using(self): - - localctx = PostgreSQLParser.Opt_raise_usingContext(self, self._ctx, self.state) - self.enterRule(localctx, 1530, self.RULE_opt_raise_using) - try: - self.state = 10417 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [100]: - self.enterOuterAlt(localctx, 2) - self.state = 10415 - self.match(PostgreSQLParser.USING) - self.state = 10416 - self.opt_raise_using_elem_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_raise_using_elemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.IdentifierContext,0) - - - def EQUAL(self): - return self.getToken(PostgreSQLParser.EQUAL, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_raise_using_elem - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_raise_using_elem" ): - listener.enterOpt_raise_using_elem(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_raise_using_elem" ): - listener.exitOpt_raise_using_elem(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_raise_using_elem" ): - return visitor.visitOpt_raise_using_elem(self) - else: - return visitor.visitChildren(self) - - - - - def opt_raise_using_elem(self): - - localctx = PostgreSQLParser.Opt_raise_using_elemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1532, self.RULE_opt_raise_using_elem) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10419 - self.identifier() - self.state = 10420 - self.match(PostgreSQLParser.EQUAL) - self.state = 10421 - self.a_expr() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_raise_using_elem_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_raise_using_elem(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Opt_raise_using_elemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Opt_raise_using_elemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_raise_using_elem_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_raise_using_elem_list" ): - listener.enterOpt_raise_using_elem_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_raise_using_elem_list" ): - listener.exitOpt_raise_using_elem_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_raise_using_elem_list" ): - return visitor.visitOpt_raise_using_elem_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_raise_using_elem_list(self): - - localctx = PostgreSQLParser.Opt_raise_using_elem_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1534, self.RULE_opt_raise_using_elem_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10423 - self.opt_raise_using_elem() - self.state = 10428 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10424 - self.match(PostgreSQLParser.COMMA) - self.state = 10425 - self.opt_raise_using_elem() - self.state = 10430 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_assertContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ASSERT(self): - return self.getToken(PostgreSQLParser.ASSERT, 0) - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def opt_stmt_assert_message(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_stmt_assert_messageContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_assert - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_assert" ): - listener.enterStmt_assert(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_assert" ): - listener.exitStmt_assert(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_assert" ): - return visitor.visitStmt_assert(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_assert(self): - - localctx = PostgreSQLParser.Stmt_assertContext(self, self._ctx, self.state) - self.enterRule(localctx, 1536, self.RULE_stmt_assert) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10431 - self.match(PostgreSQLParser.ASSERT) - self.state = 10432 - self.sql_expression() - self.state = 10433 - self.opt_stmt_assert_message() - self.state = 10434 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_stmt_assert_messageContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMA(self): - return self.getToken(PostgreSQLParser.COMMA, 0) - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_stmt_assert_message - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_stmt_assert_message" ): - listener.enterOpt_stmt_assert_message(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_stmt_assert_message" ): - listener.exitOpt_stmt_assert_message(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_stmt_assert_message" ): - return visitor.visitOpt_stmt_assert_message(self) - else: - return visitor.visitChildren(self) - - - - - def opt_stmt_assert_message(self): - - localctx = PostgreSQLParser.Opt_stmt_assert_messageContext(self, self._ctx, self.state) - self.enterRule(localctx, 1538, self.RULE_opt_stmt_assert_message) - try: - self.state = 10439 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [6]: - self.enterOuterAlt(localctx, 2) - self.state = 10437 - self.match(PostgreSQLParser.COMMA) - self.state = 10438 - self.sql_expression() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Loop_bodyContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def LOOP(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.LOOP) - else: - return self.getToken(PostgreSQLParser.LOOP, i) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def END_P(self): - return self.getToken(PostgreSQLParser.END_P, 0) - - def opt_label(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_labelContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_loop_body - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterLoop_body" ): - listener.enterLoop_body(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitLoop_body" ): - listener.exitLoop_body(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitLoop_body" ): - return visitor.visitLoop_body(self) - else: - return visitor.visitChildren(self) - - - - - def loop_body(self): - - localctx = PostgreSQLParser.Loop_bodyContext(self, self._ctx, self.state) - self.enterRule(localctx, 1540, self.RULE_loop_body) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10441 - self.match(PostgreSQLParser.LOOP) - self.state = 10442 - self.proc_sect() - self.state = 10443 - self.match(PostgreSQLParser.END_P) - self.state = 10444 - self.match(PostgreSQLParser.LOOP) - self.state = 10445 - self.opt_label() - self.state = 10446 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_execsqlContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def make_execsql_stmt(self): - return self.getTypedRuleContext(PostgreSQLParser.Make_execsql_stmtContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_execsql - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_execsql" ): - listener.enterStmt_execsql(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_execsql" ): - listener.exitStmt_execsql(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_execsql" ): - return visitor.visitStmt_execsql(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_execsql(self): - - localctx = PostgreSQLParser.Stmt_execsqlContext(self, self._ctx, self.state) - self.enterRule(localctx, 1542, self.RULE_stmt_execsql) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10448 - self.make_execsql_stmt() - self.state = 10449 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_dynexecuteContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def opt_execute_into(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_execute_intoContext,0) - - - def opt_execute_using(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_execute_usingContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_dynexecute - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_dynexecute" ): - listener.enterStmt_dynexecute(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_dynexecute" ): - listener.exitStmt_dynexecute(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_dynexecute" ): - return visitor.visitStmt_dynexecute(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_dynexecute(self): - - localctx = PostgreSQLParser.Stmt_dynexecuteContext(self, self._ctx, self.state) - self.enterRule(localctx, 1544, self.RULE_stmt_dynexecute) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10451 - self.match(PostgreSQLParser.EXECUTE) - self.state = 10452 - self.a_expr() - self.state = 10460 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,713,self._ctx) - if la_ == 1: - self.state = 10453 - self.opt_execute_into() - self.state = 10454 - self.opt_execute_using() - pass - - elif la_ == 2: - self.state = 10456 - self.opt_execute_using() - self.state = 10457 - self.opt_execute_into() - pass - - elif la_ == 3: - pass - - - self.state = 10462 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_execute_usingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def opt_execute_using_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_execute_using_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_execute_using - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_execute_using" ): - listener.enterOpt_execute_using(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_execute_using" ): - listener.exitOpt_execute_using(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_execute_using" ): - return visitor.visitOpt_execute_using(self) - else: - return visitor.visitChildren(self) - - - - - def opt_execute_using(self): - - localctx = PostgreSQLParser.Opt_execute_usingContext(self, self._ctx, self.state) - self.enterRule(localctx, 1546, self.RULE_opt_execute_using) - try: - self.state = 10467 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 71]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [100]: - self.enterOuterAlt(localctx, 2) - self.state = 10465 - self.match(PostgreSQLParser.USING) - self.state = 10466 - self.opt_execute_using_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_execute_using_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.A_exprContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_execute_using_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_execute_using_list" ): - listener.enterOpt_execute_using_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_execute_using_list" ): - listener.exitOpt_execute_using_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_execute_using_list" ): - return visitor.visitOpt_execute_using_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_execute_using_list(self): - - localctx = PostgreSQLParser.Opt_execute_using_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1548, self.RULE_opt_execute_using_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10469 - self.a_expr() - self.state = 10474 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10470 - self.match(PostgreSQLParser.COMMA) - self.state = 10471 - self.a_expr() - self.state = 10476 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_execute_intoContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def into_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Into_targetContext,0) - - - def STRICT_P(self): - return self.getToken(PostgreSQLParser.STRICT_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_execute_into - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_execute_into" ): - listener.enterOpt_execute_into(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_execute_into" ): - listener.exitOpt_execute_into(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_execute_into" ): - return visitor.visitOpt_execute_into(self) - else: - return visitor.visitChildren(self) - - - - - def opt_execute_into(self): - - localctx = PostgreSQLParser.Opt_execute_intoContext(self, self._ctx, self.state) - self.enterRule(localctx, 1550, self.RULE_opt_execute_into) - try: - self.state = 10483 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7, 100]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [71]: - self.enterOuterAlt(localctx, 2) - self.state = 10478 - self.match(PostgreSQLParser.INTO) - self.state = 10480 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,716,self._ctx) - if la_ == 1: - self.state = 10479 - self.match(PostgreSQLParser.STRICT_P) - - - self.state = 10482 - self.into_target() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_openContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def OPEN(self): - return self.getToken(PostgreSQLParser.OPEN, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def cursor_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_variableContext,0) - - - def opt_scroll_option(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_scroll_optionContext,0) - - - def FOR(self): - return self.getToken(PostgreSQLParser.FOR, 0) - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def selectstmt(self): - return self.getTypedRuleContext(PostgreSQLParser.SelectstmtContext,0) - - - def EXECUTE(self): - return self.getToken(PostgreSQLParser.EXECUTE, 0) - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def opt_open_using(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_open_usingContext,0) - - - def OPEN_PAREN(self): - return self.getToken(PostgreSQLParser.OPEN_PAREN, 0) - - def opt_open_bound_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_open_bound_listContext,0) - - - def CLOSE_PAREN(self): - return self.getToken(PostgreSQLParser.CLOSE_PAREN, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_open - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_open" ): - listener.enterStmt_open(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_open" ): - listener.exitStmt_open(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_open" ): - return visitor.visitStmt_open(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_open(self): - - localctx = PostgreSQLParser.Stmt_openContext(self, self._ctx, self.state) - self.enterRule(localctx, 1552, self.RULE_stmt_open) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10485 - self.match(PostgreSQLParser.OPEN) - self.state = 10503 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,720,self._ctx) - if la_ == 1: - self.state = 10486 - self.cursor_variable() - self.state = 10487 - self.opt_scroll_option() - self.state = 10488 - self.match(PostgreSQLParser.FOR) - self.state = 10494 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [2, 88, 92, 105, 415]: - self.state = 10489 - self.selectstmt() - pass - elif token in [202]: - self.state = 10490 - self.match(PostgreSQLParser.EXECUTE) - self.state = 10491 - self.sql_expression() - self.state = 10492 - self.opt_open_using() - pass - else: - raise NoViableAltException(self) - - pass - - elif la_ == 2: - self.state = 10496 - self.colid() - self.state = 10501 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==2: - self.state = 10497 - self.match(PostgreSQLParser.OPEN_PAREN) - self.state = 10498 - self.opt_open_bound_list() - self.state = 10499 - self.match(PostgreSQLParser.CLOSE_PAREN) - - - pass - - - self.state = 10505 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_open_bound_list_itemContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def COLON_EQUALS(self): - return self.getToken(PostgreSQLParser.COLON_EQUALS, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_open_bound_list_item - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_open_bound_list_item" ): - listener.enterOpt_open_bound_list_item(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_open_bound_list_item" ): - listener.exitOpt_open_bound_list_item(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_open_bound_list_item" ): - return visitor.visitOpt_open_bound_list_item(self) - else: - return visitor.visitChildren(self) - - - - - def opt_open_bound_list_item(self): - - localctx = PostgreSQLParser.Opt_open_bound_list_itemContext(self, self._ctx, self.state) - self.enterRule(localctx, 1554, self.RULE_opt_open_bound_list_item) - try: - self.state = 10512 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,721,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10507 - self.colid() - self.state = 10508 - self.match(PostgreSQLParser.COLON_EQUALS) - self.state = 10509 - self.a_expr() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10511 - self.a_expr() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_open_bound_listContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_open_bound_list_item(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Opt_open_bound_list_itemContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Opt_open_bound_list_itemContext,i) - - - def COMMA(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.COMMA) - else: - return self.getToken(PostgreSQLParser.COMMA, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_open_bound_list - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_open_bound_list" ): - listener.enterOpt_open_bound_list(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_open_bound_list" ): - listener.exitOpt_open_bound_list(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_open_bound_list" ): - return visitor.visitOpt_open_bound_list(self) - else: - return visitor.visitChildren(self) - - - - - def opt_open_bound_list(self): - - localctx = PostgreSQLParser.Opt_open_bound_listContext(self, self._ctx, self.state) - self.enterRule(localctx, 1556, self.RULE_opt_open_bound_list) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10514 - self.opt_open_bound_list_item() - self.state = 10519 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==6: - self.state = 10515 - self.match(PostgreSQLParser.COMMA) - self.state = 10516 - self.opt_open_bound_list_item() - self.state = 10521 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_open_usingContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def USING(self): - return self.getToken(PostgreSQLParser.USING, 0) - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_open_using - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_open_using" ): - listener.enterOpt_open_using(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_open_using" ): - listener.exitOpt_open_using(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_open_using" ): - return visitor.visitOpt_open_using(self) - else: - return visitor.visitChildren(self) - - - - - def opt_open_using(self): - - localctx = PostgreSQLParser.Opt_open_usingContext(self, self._ctx, self.state) - self.enterRule(localctx, 1558, self.RULE_opt_open_using) - try: - self.state = 10525 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [7]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [100]: - self.enterOuterAlt(localctx, 2) - self.state = 10523 - self.match(PostgreSQLParser.USING) - self.state = 10524 - self.expr_list() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_scroll_optionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_scroll_option_no(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_scroll_option_noContext,0) - - - def SCROLL(self): - return self.getToken(PostgreSQLParser.SCROLL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_scroll_option - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_scroll_option" ): - listener.enterOpt_scroll_option(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_scroll_option" ): - listener.exitOpt_scroll_option(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_scroll_option" ): - return visitor.visitOpt_scroll_option(self) - else: - return visitor.visitChildren(self) - - - - - def opt_scroll_option(self): - - localctx = PostgreSQLParser.Opt_scroll_optionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1560, self.RULE_opt_scroll_option) - try: - self.state = 10531 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [262, 317]: - self.enterOuterAlt(localctx, 2) - self.state = 10528 - self.opt_scroll_option_no() - self.state = 10529 - self.match(PostgreSQLParser.SCROLL) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_scroll_option_noContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_scroll_option_no - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_scroll_option_no" ): - listener.enterOpt_scroll_option_no(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_scroll_option_no" ): - listener.exitOpt_scroll_option_no(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_scroll_option_no" ): - return visitor.visitOpt_scroll_option_no(self) - else: - return visitor.visitChildren(self) - - - - - def opt_scroll_option_no(self): - - localctx = PostgreSQLParser.Opt_scroll_option_noContext(self, self._ctx, self.state) - self.enterRule(localctx, 1562, self.RULE_opt_scroll_option_no) - try: - self.state = 10535 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [317]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [262]: - self.enterOuterAlt(localctx, 2) - self.state = 10534 - self.match(PostgreSQLParser.NO) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_fetchContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - self.direction = None # Opt_fetch_directionContext - - def FETCH(self): - return self.getToken(PostgreSQLParser.FETCH, 0) - - def opt_cursor_from(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_cursor_fromContext,0) - - - def cursor_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_variableContext,0) - - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def into_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Into_targetContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def opt_fetch_direction(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_fetch_directionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_fetch - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_fetch" ): - listener.enterStmt_fetch(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_fetch" ): - listener.exitStmt_fetch(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_fetch" ): - return visitor.visitStmt_fetch(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_fetch(self): - - localctx = PostgreSQLParser.Stmt_fetchContext(self, self._ctx, self.state) - self.enterRule(localctx, 1564, self.RULE_stmt_fetch) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10537 - self.match(PostgreSQLParser.FETCH) - self.state = 10538 - localctx.direction = self.opt_fetch_direction() - self.state = 10539 - self.opt_cursor_from() - self.state = 10540 - self.cursor_variable() - self.state = 10541 - self.match(PostgreSQLParser.INTO) - self.state = 10542 - self.into_target() - self.state = 10543 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Into_targetContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def expr_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_listContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_into_target - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterInto_target" ): - listener.enterInto_target(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitInto_target" ): - listener.exitInto_target(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitInto_target" ): - return visitor.visitInto_target(self) - else: - return visitor.visitChildren(self) - - - - - def into_target(self): - - localctx = PostgreSQLParser.Into_targetContext(self, self._ctx, self.state) - self.enterRule(localctx, 1566, self.RULE_into_target) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10545 - self.expr_list() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_cursor_fromContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def FROM(self): - return self.getToken(PostgreSQLParser.FROM, 0) - - def IN_P(self): - return self.getToken(PostgreSQLParser.IN_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_cursor_from - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_cursor_from" ): - listener.enterOpt_cursor_from(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_cursor_from" ): - listener.exitOpt_cursor_from(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_cursor_from" ): - return visitor.visitOpt_cursor_from(self) - else: - return visitor.visitChildren(self) - - - - - def opt_cursor_from(self): - - localctx = PostgreSQLParser.Opt_cursor_fromContext(self, self._ctx, self.state) - self.enterRule(localctx, 1568, self.RULE_opt_cursor_from) - try: - self.state = 10550 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [28, 33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [64]: - self.enterOuterAlt(localctx, 2) - self.state = 10548 - self.match(PostgreSQLParser.FROM) - pass - elif token in [68]: - self.enterOuterAlt(localctx, 3) - self.state = 10549 - self.match(PostgreSQLParser.IN_P) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_fetch_directionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def PRIOR(self): - return self.getToken(PostgreSQLParser.PRIOR, 0) - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def LAST_P(self): - return self.getToken(PostgreSQLParser.LAST_P, 0) - - def ABSOLUTE_P(self): - return self.getToken(PostgreSQLParser.ABSOLUTE_P, 0) - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def RELATIVE_P(self): - return self.getToken(PostgreSQLParser.RELATIVE_P, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def FORWARD(self): - return self.getToken(PostgreSQLParser.FORWARD, 0) - - def BACKWARD(self): - return self.getToken(PostgreSQLParser.BACKWARD, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_fetch_direction - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_fetch_direction" ): - listener.enterOpt_fetch_direction(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_fetch_direction" ): - listener.exitOpt_fetch_direction(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_fetch_direction" ): - return visitor.visitOpt_fetch_direction(self) - else: - return visitor.visitChildren(self) - - - - - def opt_fetch_direction(self): - - localctx = PostgreSQLParser.Opt_fetch_directionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1570, self.RULE_opt_fetch_direction) - self._la = 0 # Token type - try: - self.state = 10569 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,728,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - - pass - - elif la_ == 3: - self.enterOuterAlt(localctx, 3) - self.state = 10554 - self.match(PostgreSQLParser.NEXT) - pass - - elif la_ == 4: - self.enterOuterAlt(localctx, 4) - self.state = 10555 - self.match(PostgreSQLParser.PRIOR) - pass - - elif la_ == 5: - self.enterOuterAlt(localctx, 5) - self.state = 10556 - self.match(PostgreSQLParser.FIRST_P) - pass - - elif la_ == 6: - self.enterOuterAlt(localctx, 6) - self.state = 10557 - self.match(PostgreSQLParser.LAST_P) - pass - - elif la_ == 7: - self.enterOuterAlt(localctx, 7) - self.state = 10558 - self.match(PostgreSQLParser.ABSOLUTE_P) - self.state = 10559 - self.a_expr() - pass - - elif la_ == 8: - self.enterOuterAlt(localctx, 8) - self.state = 10560 - self.match(PostgreSQLParser.RELATIVE_P) - self.state = 10561 - self.a_expr() - pass - - elif la_ == 9: - self.enterOuterAlt(localctx, 9) - self.state = 10562 - self.a_expr() - pass - - elif la_ == 10: - self.enterOuterAlt(localctx, 10) - self.state = 10563 - self.match(PostgreSQLParser.ALL) - pass - - elif la_ == 11: - self.enterOuterAlt(localctx, 11) - self.state = 10564 - _la = self._input.LA(1) - if not(_la==144 or _la==210): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 10567 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,727,self._ctx) - if la_ == 1: - self.state = 10565 - self.a_expr() - - elif la_ == 2: - self.state = 10566 - self.match(PostgreSQLParser.ALL) - - - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_moveContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def MOVE(self): - return self.getToken(PostgreSQLParser.MOVE, 0) - - def opt_fetch_direction(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_fetch_directionContext,0) - - - def cursor_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_variableContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_move - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_move" ): - listener.enterStmt_move(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_move" ): - listener.exitStmt_move(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_move" ): - return visitor.visitStmt_move(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_move(self): - - localctx = PostgreSQLParser.Stmt_moveContext(self, self._ctx, self.state) - self.enterRule(localctx, 1572, self.RULE_stmt_move) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10571 - self.match(PostgreSQLParser.MOVE) - self.state = 10572 - self.opt_fetch_direction() - self.state = 10573 - self.cursor_variable() - self.state = 10574 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_closeContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def CLOSE(self): - return self.getToken(PostgreSQLParser.CLOSE, 0) - - def cursor_variable(self): - return self.getTypedRuleContext(PostgreSQLParser.Cursor_variableContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_close - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_close" ): - listener.enterStmt_close(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_close" ): - listener.exitStmt_close(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_close" ): - return visitor.visitStmt_close(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_close(self): - - localctx = PostgreSQLParser.Stmt_closeContext(self, self._ctx, self.state) - self.enterRule(localctx, 1574, self.RULE_stmt_close) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10576 - self.match(PostgreSQLParser.CLOSE) - self.state = 10577 - self.cursor_variable() - self.state = 10578 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_nullContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def NULL_P(self): - return self.getToken(PostgreSQLParser.NULL_P, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_null - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_null" ): - listener.enterStmt_null(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_null" ): - listener.exitStmt_null(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_null" ): - return visitor.visitStmt_null(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_null(self): - - localctx = PostgreSQLParser.Stmt_nullContext(self, self._ctx, self.state) - self.enterRule(localctx, 1576, self.RULE_stmt_null) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10580 - self.match(PostgreSQLParser.NULL_P) - self.state = 10581 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_commitContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def COMMIT(self): - return self.getToken(PostgreSQLParser.COMMIT, 0) - - def plsql_opt_transaction_chain(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_opt_transaction_chainContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_commit - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_commit" ): - listener.enterStmt_commit(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_commit" ): - listener.exitStmt_commit(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_commit" ): - return visitor.visitStmt_commit(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_commit(self): - - localctx = PostgreSQLParser.Stmt_commitContext(self, self._ctx, self.state) - self.enterRule(localctx, 1578, self.RULE_stmt_commit) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10583 - self.match(PostgreSQLParser.COMMIT) - self.state = 10584 - self.plsql_opt_transaction_chain() - self.state = 10585 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_rollbackContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ROLLBACK(self): - return self.getToken(PostgreSQLParser.ROLLBACK, 0) - - def plsql_opt_transaction_chain(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_opt_transaction_chainContext,0) - - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_rollback - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_rollback" ): - listener.enterStmt_rollback(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_rollback" ): - listener.exitStmt_rollback(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_rollback" ): - return visitor.visitStmt_rollback(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_rollback(self): - - localctx = PostgreSQLParser.Stmt_rollbackContext(self, self._ctx, self.state) - self.enterRule(localctx, 1580, self.RULE_stmt_rollback) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10587 - self.match(PostgreSQLParser.ROLLBACK) - self.state = 10588 - self.plsql_opt_transaction_chain() - self.state = 10589 - self.match(PostgreSQLParser.SEMI) - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Plsql_opt_transaction_chainContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def CHAIN(self): - return self.getToken(PostgreSQLParser.CHAIN, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsql_opt_transaction_chain - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsql_opt_transaction_chain" ): - listener.enterPlsql_opt_transaction_chain(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsql_opt_transaction_chain" ): - listener.exitPlsql_opt_transaction_chain(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsql_opt_transaction_chain" ): - return visitor.visitPlsql_opt_transaction_chain(self) - else: - return visitor.visitChildren(self) - - - - - def plsql_opt_transaction_chain(self): - - localctx = PostgreSQLParser.Plsql_opt_transaction_chainContext(self, self._ctx, self.state) - self.enterRule(localctx, 1582, self.RULE_plsql_opt_transaction_chain) - self._la = 0 # Token type - try: - self.state = 10597 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33]: - self.enterOuterAlt(localctx, 1) - self.state = 10591 - self.match(PostgreSQLParser.AND) - self.state = 10593 - self._errHandler.sync(self) - _la = self._input.LA(1) - if _la==262: - self.state = 10592 - self.match(PostgreSQLParser.NO) - - - self.state = 10595 - self.match(PostgreSQLParser.CHAIN) - pass - elif token in [7]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Stmt_setContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def any_name(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_nameContext,0) - - - def TO(self): - return self.getToken(PostgreSQLParser.TO, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def SEMI(self): - return self.getToken(PostgreSQLParser.SEMI, 0) - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def ALL(self): - return self.getToken(PostgreSQLParser.ALL, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_stmt_set - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterStmt_set" ): - listener.enterStmt_set(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitStmt_set" ): - listener.exitStmt_set(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitStmt_set" ): - return visitor.visitStmt_set(self) - else: - return visitor.visitChildren(self) - - - - - def stmt_set(self): - - localctx = PostgreSQLParser.Stmt_setContext(self, self._ctx, self.state) - self.enterRule(localctx, 1584, self.RULE_stmt_set) - try: - self.state = 10611 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [326]: - self.enterOuterAlt(localctx, 1) - self.state = 10599 - self.match(PostgreSQLParser.SET) - self.state = 10600 - self.any_name() - self.state = 10601 - self.match(PostgreSQLParser.TO) - self.state = 10602 - self.match(PostgreSQLParser.DEFAULT) - self.state = 10603 - self.match(PostgreSQLParser.SEMI) - pass - elif token in [306]: - self.enterOuterAlt(localctx, 2) - self.state = 10605 - self.match(PostgreSQLParser.RESET) - self.state = 10608 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.state = 10606 - self.any_name() - pass - elif token in [30]: - self.state = 10607 - self.match(PostgreSQLParser.ALL) - pass - else: - raise NoViableAltException(self) - - self.state = 10610 - self.match(PostgreSQLParser.SEMI) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Cursor_variableContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def PARAM(self): - return self.getToken(PostgreSQLParser.PARAM, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_cursor_variable - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterCursor_variable" ): - listener.enterCursor_variable(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitCursor_variable" ): - listener.exitCursor_variable(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitCursor_variable" ): - return visitor.visitCursor_variable(self) - else: - return visitor.visitChildren(self) - - - - - def cursor_variable(self): - - localctx = PostgreSQLParser.Cursor_variableContext(self, self._ctx, self.state) - self.enterRule(localctx, 1586, self.RULE_cursor_variable) - try: - self.state = 10615 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 1) - self.state = 10613 - self.colid() - pass - elif token in [28]: - self.enterOuterAlt(localctx, 2) - self.state = 10614 - self.match(PostgreSQLParser.PARAM) - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Exception_sectContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def EXCEPTION(self): - return self.getToken(PostgreSQLParser.EXCEPTION, 0) - - def proc_exceptions(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_exceptionsContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_exception_sect - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterException_sect" ): - listener.enterException_sect(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitException_sect" ): - listener.exitException_sect(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitException_sect" ): - return visitor.visitException_sect(self) - else: - return visitor.visitChildren(self) - - - - - def exception_sect(self): - - localctx = PostgreSQLParser.Exception_sectContext(self, self._ctx, self.state) - self.enterRule(localctx, 1588, self.RULE_exception_sect) - try: - self.state = 10620 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [454]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [517]: - self.enterOuterAlt(localctx, 2) - self.state = 10618 - self.match(PostgreSQLParser.EXCEPTION) - self.state = 10619 - self.proc_exceptions() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_exceptionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def proc_exception(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Proc_exceptionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Proc_exceptionContext,i) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_exceptions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_exceptions" ): - listener.enterProc_exceptions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_exceptions" ): - listener.exitProc_exceptions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_exceptions" ): - return visitor.visitProc_exceptions(self) - else: - return visitor.visitChildren(self) - - - - - def proc_exceptions(self): - - localctx = PostgreSQLParser.Proc_exceptionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1590, self.RULE_proc_exceptions) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10623 - self._errHandler.sync(self) - _la = self._input.LA(1) - while True: - self.state = 10622 - self.proc_exception() - self.state = 10625 - self._errHandler.sync(self) - _la = self._input.LA(1) - if not (_la==102): - break - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_exceptionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def proc_conditions(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_conditionsContext,0) - - - def THEN(self): - return self.getToken(PostgreSQLParser.THEN, 0) - - def proc_sect(self): - return self.getTypedRuleContext(PostgreSQLParser.Proc_sectContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_exception - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_exception" ): - listener.enterProc_exception(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_exception" ): - listener.exitProc_exception(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_exception" ): - return visitor.visitProc_exception(self) - else: - return visitor.visitChildren(self) - - - - - def proc_exception(self): - - localctx = PostgreSQLParser.Proc_exceptionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1592, self.RULE_proc_exception) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10627 - self.match(PostgreSQLParser.WHEN) - self.state = 10628 - self.proc_conditions() - self.state = 10629 - self.match(PostgreSQLParser.THEN) - self.state = 10630 - self.proc_sect() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_conditionsContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def proc_condition(self, i:int=None): - if i is None: - return self.getTypedRuleContexts(PostgreSQLParser.Proc_conditionContext) - else: - return self.getTypedRuleContext(PostgreSQLParser.Proc_conditionContext,i) - - - def OR(self, i:int=None): - if i is None: - return self.getTokens(PostgreSQLParser.OR) - else: - return self.getToken(PostgreSQLParser.OR, i) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_conditions - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_conditions" ): - listener.enterProc_conditions(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_conditions" ): - listener.exitProc_conditions(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_conditions" ): - return visitor.visitProc_conditions(self) - else: - return visitor.visitChildren(self) - - - - - def proc_conditions(self): - - localctx = PostgreSQLParser.Proc_conditionsContext(self, self._ctx, self.state) - self.enterRule(localctx, 1594, self.RULE_proc_conditions) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10632 - self.proc_condition() - self.state = 10637 - self._errHandler.sync(self) - _la = self._input.LA(1) - while _la==82: - self.state = 10633 - self.match(PostgreSQLParser.OR) - self.state = 10634 - self.proc_condition() - self.state = 10639 - self._errHandler.sync(self) - _la = self._input.LA(1) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Proc_conditionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_identifierContext,0) - - - def SQLSTATE(self): - return self.getToken(PostgreSQLParser.SQLSTATE, 0) - - def sconst(self): - return self.getTypedRuleContext(PostgreSQLParser.SconstContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_proc_condition - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterProc_condition" ): - listener.enterProc_condition(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitProc_condition" ): - listener.exitProc_condition(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitProc_condition" ): - return visitor.visitProc_condition(self) - else: - return visitor.visitChildren(self) - - - - - def proc_condition(self): - - localctx = PostgreSQLParser.Proc_conditionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1596, self.RULE_proc_condition) - try: - self.state = 10643 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,737,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10640 - self.any_identifier() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10641 - self.match(PostgreSQLParser.SQLSTATE) - self.state = 10642 - self.sconst() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_block_labelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def label_decl(self): - return self.getTypedRuleContext(PostgreSQLParser.Label_declContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_block_label - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_block_label" ): - listener.enterOpt_block_label(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_block_label" ): - listener.exitOpt_block_label(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_block_label" ): - return visitor.visitOpt_block_label(self) - else: - return visitor.visitChildren(self) - - - - - def opt_block_label(self): - - localctx = PostgreSQLParser.Opt_block_labelContext(self, self._ctx, self.state) - self.enterRule(localctx, 1598, self.RULE_opt_block_label) - try: - self.state = 10647 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [146, 178]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [18]: - self.enterOuterAlt(localctx, 2) - self.state = 10646 - self.label_decl() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_loop_labelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def label_decl(self): - return self.getTypedRuleContext(PostgreSQLParser.Label_declContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_loop_label - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_loop_label" ): - listener.enterOpt_loop_label(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_loop_label" ): - listener.exitOpt_loop_label(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_loop_label" ): - return visitor.visitOpt_loop_label(self) - else: - return visitor.visitChildren(self) - - - - - def opt_loop_label(self): - - localctx = PostgreSQLParser.Opt_loop_labelContext(self, self._ctx, self.state) - self.enterRule(localctx, 1600, self.RULE_opt_loop_label) - try: - self.state = 10651 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [62, 503, 505, 519]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [18]: - self.enterOuterAlt(localctx, 2) - self.state = 10650 - self.label_decl() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_labelContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def any_identifier(self): - return self.getTypedRuleContext(PostgreSQLParser.Any_identifierContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_label - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_label" ): - listener.enterOpt_label(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_label" ): - listener.exitOpt_label(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_label" ): - return visitor.visitOpt_label(self) - else: - return visitor.visitChildren(self) - - - - - def opt_label(self): - - localctx = PostgreSQLParser.Opt_labelContext(self, self._ctx, self.state) - self.enterRule(localctx, 1602, self.RULE_opt_label) - try: - self.state = 10655 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [-1, 7, 102]: - self.enterOuterAlt(localctx, 1) - - pass - elif token in [33, 35, 43, 44, 45, 53, 57, 61, 92, 116, 119, 123, 124, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 641, 661, 662]: - self.enterOuterAlt(localctx, 2) - self.state = 10654 - self.any_identifier() - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_exitcondContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def WHEN(self): - return self.getToken(PostgreSQLParser.WHEN, 0) - - def expr_until_semi(self): - return self.getTypedRuleContext(PostgreSQLParser.Expr_until_semiContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_exitcond - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_exitcond" ): - listener.enterOpt_exitcond(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_exitcond" ): - listener.exitOpt_exitcond(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_exitcond" ): - return visitor.visitOpt_exitcond(self) - else: - return visitor.visitChildren(self) - - - - - def opt_exitcond(self): - - localctx = PostgreSQLParser.Opt_exitcondContext(self, self._ctx, self.state) - self.enterRule(localctx, 1604, self.RULE_opt_exitcond) - try: - self.state = 10660 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [102]: - self.enterOuterAlt(localctx, 1) - self.state = 10657 - self.match(PostgreSQLParser.WHEN) - self.state = 10658 - self.expr_until_semi() - pass - elif token in [7]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Any_identifierContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def colid(self): - return self.getTypedRuleContext(PostgreSQLParser.ColidContext,0) - - - def plsql_unreserved_keyword(self): - return self.getTypedRuleContext(PostgreSQLParser.Plsql_unreserved_keywordContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_any_identifier - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterAny_identifier" ): - listener.enterAny_identifier(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitAny_identifier" ): - listener.exitAny_identifier(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitAny_identifier" ): - return visitor.visitAny_identifier(self) - else: - return visitor.visitChildren(self) - - - - - def any_identifier(self): - - localctx = PostgreSQLParser.Any_identifierContext(self, self._ctx, self.state) - self.enterRule(localctx, 1606, self.RULE_any_identifier) - try: - self.state = 10664 - self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,742,self._ctx) - if la_ == 1: - self.enterOuterAlt(localctx, 1) - self.state = 10662 - self.colid() - pass - - elif la_ == 2: - self.enterOuterAlt(localctx, 2) - self.state = 10663 - self.plsql_unreserved_keyword() - pass - - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Plsql_unreserved_keywordContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def ABSOLUTE_P(self): - return self.getToken(PostgreSQLParser.ABSOLUTE_P, 0) - - def ALIAS(self): - return self.getToken(PostgreSQLParser.ALIAS, 0) - - def AND(self): - return self.getToken(PostgreSQLParser.AND, 0) - - def ARRAY(self): - return self.getToken(PostgreSQLParser.ARRAY, 0) - - def ASSERT(self): - return self.getToken(PostgreSQLParser.ASSERT, 0) - - def BACKWARD(self): - return self.getToken(PostgreSQLParser.BACKWARD, 0) - - def CALL(self): - return self.getToken(PostgreSQLParser.CALL, 0) - - def CHAIN(self): - return self.getToken(PostgreSQLParser.CHAIN, 0) - - def CLOSE(self): - return self.getToken(PostgreSQLParser.CLOSE, 0) - - def COLLATE(self): - return self.getToken(PostgreSQLParser.COLLATE, 0) - - def COLUMN(self): - return self.getToken(PostgreSQLParser.COLUMN, 0) - - def COMMIT(self): - return self.getToken(PostgreSQLParser.COMMIT, 0) - - def CONSTANT(self): - return self.getToken(PostgreSQLParser.CONSTANT, 0) - - def CONSTRAINT(self): - return self.getToken(PostgreSQLParser.CONSTRAINT, 0) - - def CONTINUE_P(self): - return self.getToken(PostgreSQLParser.CONTINUE_P, 0) - - def CURRENT_P(self): - return self.getToken(PostgreSQLParser.CURRENT_P, 0) - - def CURSOR(self): - return self.getToken(PostgreSQLParser.CURSOR, 0) - - def DEBUG(self): - return self.getToken(PostgreSQLParser.DEBUG, 0) - - def DEFAULT(self): - return self.getToken(PostgreSQLParser.DEFAULT, 0) - - def DIAGNOSTICS(self): - return self.getToken(PostgreSQLParser.DIAGNOSTICS, 0) - - def DO(self): - return self.getToken(PostgreSQLParser.DO, 0) - - def DUMP(self): - return self.getToken(PostgreSQLParser.DUMP, 0) - - def ELSIF(self): - return self.getToken(PostgreSQLParser.ELSIF, 0) - - def ERROR(self): - return self.getToken(PostgreSQLParser.ERROR, 0) - - def EXCEPTION(self): - return self.getToken(PostgreSQLParser.EXCEPTION, 0) - - def EXIT(self): - return self.getToken(PostgreSQLParser.EXIT, 0) - - def FETCH(self): - return self.getToken(PostgreSQLParser.FETCH, 0) - - def FIRST_P(self): - return self.getToken(PostgreSQLParser.FIRST_P, 0) - - def FORWARD(self): - return self.getToken(PostgreSQLParser.FORWARD, 0) - - def GET(self): - return self.getToken(PostgreSQLParser.GET, 0) - - def INFO(self): - return self.getToken(PostgreSQLParser.INFO, 0) - - def INSERT(self): - return self.getToken(PostgreSQLParser.INSERT, 0) - - def IS(self): - return self.getToken(PostgreSQLParser.IS, 0) - - def LAST_P(self): - return self.getToken(PostgreSQLParser.LAST_P, 0) - - def MOVE(self): - return self.getToken(PostgreSQLParser.MOVE, 0) - - def NEXT(self): - return self.getToken(PostgreSQLParser.NEXT, 0) - - def NO(self): - return self.getToken(PostgreSQLParser.NO, 0) - - def NOTICE(self): - return self.getToken(PostgreSQLParser.NOTICE, 0) - - def OPEN(self): - return self.getToken(PostgreSQLParser.OPEN, 0) - - def OPTION(self): - return self.getToken(PostgreSQLParser.OPTION, 0) - - def PERFORM(self): - return self.getToken(PostgreSQLParser.PERFORM, 0) - - def PRINT_STRICT_PARAMS(self): - return self.getToken(PostgreSQLParser.PRINT_STRICT_PARAMS, 0) - - def PRIOR(self): - return self.getToken(PostgreSQLParser.PRIOR, 0) - - def QUERY(self): - return self.getToken(PostgreSQLParser.QUERY, 0) - - def RAISE(self): - return self.getToken(PostgreSQLParser.RAISE, 0) - - def RELATIVE_P(self): - return self.getToken(PostgreSQLParser.RELATIVE_P, 0) - - def RESET(self): - return self.getToken(PostgreSQLParser.RESET, 0) - - def RETURN(self): - return self.getToken(PostgreSQLParser.RETURN, 0) - - def ROLLBACK(self): - return self.getToken(PostgreSQLParser.ROLLBACK, 0) - - def ROWTYPE(self): - return self.getToken(PostgreSQLParser.ROWTYPE, 0) - - def SCHEMA(self): - return self.getToken(PostgreSQLParser.SCHEMA, 0) - - def SCROLL(self): - return self.getToken(PostgreSQLParser.SCROLL, 0) - - def SET(self): - return self.getToken(PostgreSQLParser.SET, 0) - - def SLICE(self): - return self.getToken(PostgreSQLParser.SLICE, 0) - - def SQLSTATE(self): - return self.getToken(PostgreSQLParser.SQLSTATE, 0) - - def STACKED(self): - return self.getToken(PostgreSQLParser.STACKED, 0) - - def TABLE(self): - return self.getToken(PostgreSQLParser.TABLE, 0) - - def TYPE_P(self): - return self.getToken(PostgreSQLParser.TYPE_P, 0) - - def USE_COLUMN(self): - return self.getToken(PostgreSQLParser.USE_COLUMN, 0) - - def USE_VARIABLE(self): - return self.getToken(PostgreSQLParser.USE_VARIABLE, 0) - - def VARIABLE_CONFLICT(self): - return self.getToken(PostgreSQLParser.VARIABLE_CONFLICT, 0) - - def WARNING(self): - return self.getToken(PostgreSQLParser.WARNING, 0) - - def OUTER_P(self): - return self.getToken(PostgreSQLParser.OUTER_P, 0) - - def getRuleIndex(self): - return PostgreSQLParser.RULE_plsql_unreserved_keyword - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterPlsql_unreserved_keyword" ): - listener.enterPlsql_unreserved_keyword(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitPlsql_unreserved_keyword" ): - listener.exitPlsql_unreserved_keyword(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitPlsql_unreserved_keyword" ): - return visitor.visitPlsql_unreserved_keyword(self) - else: - return visitor.visitChildren(self) - - - - - def plsql_unreserved_keyword(self): - - localctx = PostgreSQLParser.Plsql_unreserved_keywordContext(self, self._ctx, self.state) - self.enterRule(localctx, 1608, self.RULE_plsql_unreserved_keyword) - self._la = 0 # Token type - try: - self.enterOuterAlt(localctx, 1) - self.state = 10666 - _la = self._input.LA(1) - if not((((_la) & ~0x3f) == 0 and ((1 << _la) & 2459027012145119232) != 0) or ((((_la - 92)) & ~0x3f) == 0 and ((1 << (_la - 92)) & 2310346885883232257) != 0) or ((((_la - 157)) & ~0x3f) == 0 and ((1 << (_la - 157)) & 10133099161617425) != 0) or ((((_la - 232)) & ~0x3f) == 0 and ((1 << (_la - 232)) & 18015499698831617) != 0) or ((((_la - 300)) & ~0x3f) == 0 and ((1 << (_la - 300)) & 9007199322050625) != 0) or ((((_la - 433)) & ~0x3f) == 0 and ((1 << (_la - 433)) & -144097595889811453) != 0) or ((((_la - 497)) & ~0x3f) == 0 and ((1 << (_la - 497)) & 12516927) != 0)): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Sql_expressionContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def opt_target_list(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_target_listContext,0) - - - def into_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Into_clauseContext,0) - - - def from_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.From_clauseContext,0) - - - def where_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Where_clauseContext,0) - - - def group_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Group_clauseContext,0) - - - def having_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Having_clauseContext,0) - - - def window_clause(self): - return self.getTypedRuleContext(PostgreSQLParser.Window_clauseContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_sql_expression - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterSql_expression" ): - listener.enterSql_expression(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitSql_expression" ): - listener.exitSql_expression(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitSql_expression" ): - return visitor.visitSql_expression(self) - else: - return visitor.visitChildren(self) - - - - - def sql_expression(self): - - localctx = PostgreSQLParser.Sql_expressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 1610, self.RULE_sql_expression) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10668 - self.opt_target_list() - self.state = 10669 - self.into_clause() - self.state = 10670 - self.from_clause() - self.state = 10671 - self.where_clause() - self.state = 10672 - self.group_clause() - self.state = 10673 - self.having_clause() - self.state = 10674 - self.window_clause() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Expr_until_thenContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_expr_until_then - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr_until_then" ): - listener.enterExpr_until_then(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr_until_then" ): - listener.exitExpr_until_then(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr_until_then" ): - return visitor.visitExpr_until_then(self) - else: - return visitor.visitChildren(self) - - - - - def expr_until_then(self): - - localctx = PostgreSQLParser.Expr_until_thenContext(self, self._ctx, self.state) - self.enterRule(localctx, 1612, self.RULE_expr_until_then) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10676 - self.sql_expression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Expr_until_semiContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def sql_expression(self): - return self.getTypedRuleContext(PostgreSQLParser.Sql_expressionContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_expr_until_semi - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr_until_semi" ): - listener.enterExpr_until_semi(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr_until_semi" ): - listener.exitExpr_until_semi(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr_until_semi" ): - return visitor.visitExpr_until_semi(self) - else: - return visitor.visitChildren(self) - - - - - def expr_until_semi(self): - - localctx = PostgreSQLParser.Expr_until_semiContext(self, self._ctx, self.state) - self.enterRule(localctx, 1614, self.RULE_expr_until_semi) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10678 - self.sql_expression() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Expr_until_rightbracketContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_expr_until_rightbracket - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr_until_rightbracket" ): - listener.enterExpr_until_rightbracket(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr_until_rightbracket" ): - listener.exitExpr_until_rightbracket(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr_until_rightbracket" ): - return visitor.visitExpr_until_rightbracket(self) - else: - return visitor.visitChildren(self) - - - - - def expr_until_rightbracket(self): - - localctx = PostgreSQLParser.Expr_until_rightbracketContext(self, self._ctx, self.state) - self.enterRule(localctx, 1616, self.RULE_expr_until_rightbracket) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10680 - self.a_expr() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Expr_until_loopContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def a_expr(self): - return self.getTypedRuleContext(PostgreSQLParser.A_exprContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_expr_until_loop - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterExpr_until_loop" ): - listener.enterExpr_until_loop(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitExpr_until_loop" ): - listener.exitExpr_until_loop(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitExpr_until_loop" ): - return visitor.visitExpr_until_loop(self) - else: - return visitor.visitChildren(self) - - - - - def expr_until_loop(self): - - localctx = PostgreSQLParser.Expr_until_loopContext(self, self._ctx, self.state) - self.enterRule(localctx, 1618, self.RULE_expr_until_loop) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10682 - self.a_expr() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Make_execsql_stmtContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def stmt(self): - return self.getTypedRuleContext(PostgreSQLParser.StmtContext,0) - - - def opt_returning_clause_into(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_returning_clause_intoContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_make_execsql_stmt - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterMake_execsql_stmt" ): - listener.enterMake_execsql_stmt(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitMake_execsql_stmt" ): - listener.exitMake_execsql_stmt(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitMake_execsql_stmt" ): - return visitor.visitMake_execsql_stmt(self) - else: - return visitor.visitChildren(self) - - - - - def make_execsql_stmt(self): - - localctx = PostgreSQLParser.Make_execsql_stmtContext(self, self._ctx, self.state) - self.enterRule(localctx, 1620, self.RULE_make_execsql_stmt) - try: - self.enterOuterAlt(localctx, 1) - self.state = 10684 - self.stmt() - self.state = 10685 - self.opt_returning_clause_into() - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - class Opt_returning_clause_intoContext(ParserRuleContext): - __slots__ = 'parser' - - def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): - super().__init__(parent, invokingState) - self.parser = parser - - def INTO(self): - return self.getToken(PostgreSQLParser.INTO, 0) - - def opt_strict(self): - return self.getTypedRuleContext(PostgreSQLParser.Opt_strictContext,0) - - - def into_target(self): - return self.getTypedRuleContext(PostgreSQLParser.Into_targetContext,0) - - - def getRuleIndex(self): - return PostgreSQLParser.RULE_opt_returning_clause_into - - def enterRule(self, listener:ParseTreeListener): - if hasattr( listener, "enterOpt_returning_clause_into" ): - listener.enterOpt_returning_clause_into(self) - - def exitRule(self, listener:ParseTreeListener): - if hasattr( listener, "exitOpt_returning_clause_into" ): - listener.exitOpt_returning_clause_into(self) - - def accept(self, visitor:ParseTreeVisitor): - if hasattr( visitor, "visitOpt_returning_clause_into" ): - return visitor.visitOpt_returning_clause_into(self) - else: - return visitor.visitChildren(self) - - - - - def opt_returning_clause_into(self): - - localctx = PostgreSQLParser.Opt_returning_clause_intoContext(self, self._ctx, self.state) - self.enterRule(localctx, 1622, self.RULE_opt_returning_clause_into) - try: - self.state = 10692 - self._errHandler.sync(self) - token = self._input.LA(1) - if token in [71]: - self.enterOuterAlt(localctx, 1) - self.state = 10687 - self.match(PostgreSQLParser.INTO) - self.state = 10688 - self.opt_strict() - self.state = 10689 - self.into_target() - pass - elif token in [7]: - self.enterOuterAlt(localctx, 2) - - pass - else: - raise NoViableAltException(self) - - except RecognitionException as re: - localctx.exception = re - self._errHandler.reportError(self, re) - self._errHandler.recover(self, re) - finally: - self.exitRule() - return localctx - - - - def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): - if self._predicates == None: - self._predicates = dict() - self._predicates[602] = self.b_expr_sempred - pred = self._predicates.get(ruleIndex, None) - if pred is None: - raise Exception("No predicate with index:" + str(ruleIndex)) - else: - return pred(localctx, predIndex) - - def b_expr_sempred(self, localctx:B_exprContext, predIndex:int): - if predIndex == 0: - return self.precpred(self._ctx, 8) - - - if predIndex == 1: - return self.precpred(self._ctx, 7) - - - if predIndex == 2: - return self.precpred(self._ctx, 6) - - - if predIndex == 3: - return self.precpred(self._ctx, 5) - - - if predIndex == 4: - return self.precpred(self._ctx, 4) - - - if predIndex == 5: - return self.precpred(self._ctx, 10) - - - if predIndex == 6: - return self.precpred(self._ctx, 2) - - - if predIndex == 7: - return self.precpred(self._ctx, 1) - - - - - diff --git a/antlr4_postgresql/PostgreSQLParser.tokens b/antlr4_postgresql/PostgreSQLParser.tokens deleted file mode 100644 index 03ca671..0000000 --- a/antlr4_postgresql/PostgreSQLParser.tokens +++ /dev/null @@ -1,1314 +0,0 @@ -Dollar=1 -OPEN_PAREN=2 -CLOSE_PAREN=3 -OPEN_BRACKET=4 -CLOSE_BRACKET=5 -COMMA=6 -SEMI=7 -COLON=8 -STAR=9 -EQUAL=10 -DOT=11 -PLUS=12 -MINUS=13 -SLASH=14 -CARET=15 -LT=16 -GT=17 -LESS_LESS=18 -GREATER_GREATER=19 -COLON_EQUALS=20 -LESS_EQUALS=21 -EQUALS_GREATER=22 -GREATER_EQUALS=23 -DOT_DOT=24 -NOT_EQUALS=25 -TYPECAST=26 -PERCENT=27 -PARAM=28 -Operator=29 -ALL=30 -ANALYSE=31 -ANALYZE=32 -AND=33 -ANY=34 -ARRAY=35 -AS=36 -ASC=37 -ASYMMETRIC=38 -BOTH=39 -CASE=40 -CAST=41 -CHECK=42 -COLLATE=43 -COLUMN=44 -CONSTRAINT=45 -CREATE=46 -CURRENT_CATALOG=47 -CURRENT_DATE=48 -CURRENT_ROLE=49 -CURRENT_TIME=50 -CURRENT_TIMESTAMP=51 -CURRENT_USER=52 -DEFAULT=53 -DEFERRABLE=54 -DESC=55 -DISTINCT=56 -DO=57 -ELSE=58 -EXCEPT=59 -FALSE_P=60 -FETCH=61 -FOR=62 -FOREIGN=63 -FROM=64 -GRANT=65 -GROUP_P=66 -HAVING=67 -IN_P=68 -INITIALLY=69 -INTERSECT=70 -INTO=71 -LATERAL_P=72 -LEADING=73 -LIMIT=74 -LOCALTIME=75 -LOCALTIMESTAMP=76 -NOT=77 -NULL_P=78 -OFFSET=79 -ON=80 -ONLY=81 -OR=82 -ORDER=83 -PLACING=84 -PRIMARY=85 -REFERENCES=86 -RETURNING=87 -SELECT=88 -SESSION_USER=89 -SOME=90 -SYMMETRIC=91 -TABLE=92 -THEN=93 -TO=94 -TRAILING=95 -TRUE_P=96 -UNION=97 -UNIQUE=98 -USER=99 -USING=100 -VARIADIC=101 -WHEN=102 -WHERE=103 -WINDOW=104 -WITH=105 -AUTHORIZATION=106 -BINARY=107 -COLLATION=108 -CONCURRENTLY=109 -CROSS=110 -CURRENT_SCHEMA=111 -FREEZE=112 -FULL=113 -ILIKE=114 -INNER_P=115 -IS=116 -ISNULL=117 -JOIN=118 -LEFT=119 -LIKE=120 -NATURAL=121 -NOTNULL=122 -OUTER_P=123 -OVER=124 -OVERLAPS=125 -RIGHT=126 -SIMILAR=127 -VERBOSE=128 -ABORT_P=129 -ABSOLUTE_P=130 -ACCESS=131 -ACTION=132 -ADD_P=133 -ADMIN=134 -AFTER=135 -AGGREGATE=136 -ALSO=137 -ALTER=138 -ALWAYS=139 -ASSERTION=140 -ASSIGNMENT=141 -AT=142 -ATTRIBUTE=143 -BACKWARD=144 -BEFORE=145 -BEGIN_P=146 -BY=147 -CACHE=148 -CALLED=149 -CASCADE=150 -CASCADED=151 -CATALOG=152 -CHAIN=153 -CHARACTERISTICS=154 -CHECKPOINT=155 -CLASS=156 -CLOSE=157 -CLUSTER=158 -COMMENT=159 -COMMENTS=160 -COMMIT=161 -COMMITTED=162 -CONFIGURATION=163 -CONNECTION=164 -CONSTRAINTS=165 -CONTENT_P=166 -CONTINUE_P=167 -CONVERSION_P=168 -COPY=169 -COST=170 -CSV=171 -CURSOR=172 -CYCLE=173 -DATA_P=174 -DATABASE=175 -DAY_P=176 -DEALLOCATE=177 -DECLARE=178 -DEFAULTS=179 -DEFERRED=180 -DEFINER=181 -DELETE_P=182 -DELIMITER=183 -DELIMITERS=184 -DICTIONARY=185 -DISABLE_P=186 -DISCARD=187 -DOCUMENT_P=188 -DOMAIN_P=189 -DOUBLE_P=190 -DROP=191 -EACH=192 -ENABLE_P=193 -ENCODING=194 -ENCRYPTED=195 -ENUM_P=196 -ESCAPE=197 -EVENT=198 -EXCLUDE=199 -EXCLUDING=200 -EXCLUSIVE=201 -EXECUTE=202 -EXPLAIN=203 -EXTENSION=204 -EXTERNAL=205 -FAMILY=206 -FIRST_P=207 -FOLLOWING=208 -FORCE=209 -FORWARD=210 -FUNCTION=211 -FUNCTIONS=212 -GLOBAL=213 -GRANTED=214 -HANDLER=215 -HEADER_P=216 -HOLD=217 -HOUR_P=218 -IDENTITY_P=219 -IF_P=220 -IMMEDIATE=221 -IMMUTABLE=222 -IMPLICIT_P=223 -INCLUDING=224 -INCREMENT=225 -INDEX=226 -INDEXES=227 -INHERIT=228 -INHERITS=229 -INLINE_P=230 -INSENSITIVE=231 -INSERT=232 -INSTEAD=233 -INVOKER=234 -ISOLATION=235 -KEY=236 -LABEL=237 -LANGUAGE=238 -LARGE_P=239 -LAST_P=240 -LEAKPROOF=241 -LEVEL=242 -LISTEN=243 -LOAD=244 -LOCAL=245 -LOCATION=246 -LOCK_P=247 -MAPPING=248 -MATCH=249 -MATCHED=250 -MATERIALIZED=251 -MAXVALUE=252 -MERGE=253 -MINUTE_P=254 -MINVALUE=255 -MODE=256 -MONTH_P=257 -MOVE=258 -NAME_P=259 -NAMES=260 -NEXT=261 -NO=262 -NOTHING=263 -NOTIFY=264 -NOWAIT=265 -NULLS_P=266 -OBJECT_P=267 -OF=268 -OFF=269 -OIDS=270 -OPERATOR=271 -OPTION=272 -OPTIONS=273 -OWNED=274 -OWNER=275 -PARSER=276 -PARTIAL=277 -PARTITION=278 -PASSING=279 -PASSWORD=280 -PLANS=281 -PRECEDING=282 -PREPARE=283 -PREPARED=284 -PRESERVE=285 -PRIOR=286 -PRIVILEGES=287 -PROCEDURAL=288 -PROCEDURE=289 -PROGRAM=290 -QUOTE=291 -RANGE=292 -READ=293 -REASSIGN=294 -RECHECK=295 -RECURSIVE=296 -REF=297 -REFRESH=298 -REINDEX=299 -RELATIVE_P=300 -RELEASE=301 -RENAME=302 -REPEATABLE=303 -REPLACE=304 -REPLICA=305 -RESET=306 -RESTART=307 -RESTRICT=308 -RETURNS=309 -REVOKE=310 -ROLE=311 -ROLLBACK=312 -ROWS=313 -RULE=314 -SAVEPOINT=315 -SCHEMA=316 -SCROLL=317 -SEARCH=318 -SECOND_P=319 -SECURITY=320 -SEQUENCE=321 -SEQUENCES=322 -SERIALIZABLE=323 -SERVER=324 -SESSION=325 -SET=326 -SHARE=327 -SHOW=328 -SIMPLE=329 -SNAPSHOT=330 -STABLE=331 -STANDALONE_P=332 -START=333 -STATEMENT=334 -STATISTICS=335 -STDIN=336 -STDOUT=337 -STORAGE=338 -STRICT_P=339 -STRIP_P=340 -SYSID=341 -SYSTEM_P=342 -TABLES=343 -TABLESPACE=344 -TEMP=345 -TEMPLATE=346 -TEMPORARY=347 -TEXT_P=348 -TRANSACTION=349 -TRIGGER=350 -TRUNCATE=351 -TRUSTED=352 -TYPE_P=353 -TYPES_P=354 -UNBOUNDED=355 -UNCOMMITTED=356 -UNENCRYPTED=357 -UNKNOWN=358 -UNLISTEN=359 -UNLOGGED=360 -UNTIL=361 -UPDATE=362 -VACUUM=363 -VALID=364 -VALIDATE=365 -VALIDATOR=366 -VARYING=367 -VERSION_P=368 -VIEW=369 -VOLATILE=370 -WHITESPACE_P=371 -WITHOUT=372 -WORK=373 -WRAPPER=374 -WRITE=375 -XML_P=376 -YEAR_P=377 -YES_P=378 -ZONE=379 -BETWEEN=380 -BIGINT=381 -BIT=382 -BOOLEAN_P=383 -CHAR_P=384 -CHARACTER=385 -COALESCE=386 -DEC=387 -DECIMAL_P=388 -EXISTS=389 -EXTRACT=390 -FLOAT_P=391 -GREATEST=392 -INOUT=393 -INT_P=394 -INTEGER=395 -INTERVAL=396 -LEAST=397 -NATIONAL=398 -NCHAR=399 -NONE=400 -NULLIF=401 -NUMERIC=402 -OVERLAY=403 -POSITION=404 -PRECISION=405 -REAL=406 -ROW=407 -SETOF=408 -SMALLINT=409 -SUBSTRING=410 -TIME=411 -TIMESTAMP=412 -TREAT=413 -TRIM=414 -VALUES=415 -VARCHAR=416 -XMLATTRIBUTES=417 -XMLCOMMENT=418 -XMLAGG=419 -XML_IS_WELL_FORMED=420 -XML_IS_WELL_FORMED_DOCUMENT=421 -XML_IS_WELL_FORMED_CONTENT=422 -XPATH=423 -XPATH_EXISTS=424 -XMLCONCAT=425 -XMLELEMENT=426 -XMLEXISTS=427 -XMLFOREST=428 -XMLPARSE=429 -XMLPI=430 -XMLROOT=431 -XMLSERIALIZE=432 -CALL=433 -CURRENT_P=434 -ATTACH=435 -DETACH=436 -EXPRESSION=437 -GENERATED=438 -LOGGED=439 -STORED=440 -INCLUDE=441 -ROUTINE=442 -TRANSFORM=443 -IMPORT_P=444 -POLICY=445 -METHOD=446 -REFERENCING=447 -NEW=448 -OLD=449 -VALUE_P=450 -SUBSCRIPTION=451 -PUBLICATION=452 -OUT_P=453 -END_P=454 -ROUTINES=455 -SCHEMAS=456 -PROCEDURES=457 -INPUT_P=458 -SUPPORT=459 -PARALLEL=460 -SQL_P=461 -DEPENDS=462 -OVERRIDING=463 -CONFLICT=464 -SKIP_P=465 -LOCKED=466 -TIES=467 -ROLLUP=468 -CUBE=469 -GROUPING=470 -SETS=471 -TABLESAMPLE=472 -ORDINALITY=473 -XMLTABLE=474 -COLUMNS=475 -XMLNAMESPACES=476 -ROWTYPE=477 -NORMALIZED=478 -WITHIN=479 -FILTER=480 -GROUPS=481 -OTHERS=482 -NFC=483 -NFD=484 -NFKC=485 -NFKD=486 -UESCAPE=487 -VIEWS=488 -NORMALIZE=489 -DUMP=490 -PRINT_STRICT_PARAMS=491 -VARIABLE_CONFLICT=492 -ERROR=493 -USE_VARIABLE=494 -USE_COLUMN=495 -ALIAS=496 -CONSTANT=497 -PERFORM=498 -GET=499 -DIAGNOSTICS=500 -STACKED=501 -ELSIF=502 -WHILE=503 -REVERSE=504 -FOREACH=505 -SLICE=506 -EXIT=507 -RETURN=508 -QUERY=509 -RAISE=510 -SQLSTATE=511 -DEBUG=512 -LOG=513 -INFO=514 -NOTICE=515 -WARNING=516 -EXCEPTION=517 -ASSERT=518 -LOOP=519 -OPEN=520 -ABS=521 -CBRT=522 -CEIL=523 -CEILING=524 -DEGREES=525 -DIV=526 -EXP=527 -FACTORIAL=528 -FLOOR=529 -GCD=530 -LCM=531 -LN=532 -LOG10=533 -MIN_SCALE=534 -MOD=535 -PI=536 -POWER=537 -RADIANS=538 -ROUND=539 -SCALE=540 -SIGN=541 -SQRT=542 -TRIM_SCALE=543 -TRUNC=544 -WIDTH_BUCKET=545 -RANDOM=546 -SETSEED=547 -ACOS=548 -ACOSD=549 -ASIN=550 -ASIND=551 -ATAN=552 -ATAND=553 -ATAN2=554 -ATAN2D=555 -COS=556 -COSD=557 -COT=558 -COTD=559 -SIN=560 -SIND=561 -TAN=562 -TAND=563 -SINH=564 -COSH=565 -TANH=566 -ASINH=567 -ACOSH=568 -ATANH=569 -BIT_LENGTH=570 -CHAR_LENGTH=571 -CHARACTER_LENGTH=572 -LOWER=573 -OCTET_LENGTH=574 -UPPER=575 -ASCII=576 -BTRIM=577 -CHR=578 -CONCAT=579 -CONCAT_WS=580 -FORMAT=581 -INITCAP=582 -LENGTH=583 -LPAD=584 -LTRIM=585 -MD5=586 -PARSE_IDENT=587 -PG_CLIENT_ENCODING=588 -QUOTE_IDENT=589 -QUOTE_LITERAL=590 -QUOTE_NULLABLE=591 -REGEXP_COUNT=592 -REGEXP_INSTR=593 -REGEXP_LIKE=594 -REGEXP_MATCH=595 -REGEXP_MATCHES=596 -REGEXP_REPLACE=597 -REGEXP_SPLIT_TO_ARRAY=598 -REGEXP_SPLIT_TO_TABLE=599 -REGEXP_SUBSTR=600 -REPEAT=601 -RPAD=602 -RTRIM=603 -SPLIT_PART=604 -STARTS_WITH=605 -STRING_TO_ARRAY=606 -STRING_TO_TABLE=607 -STRPOS=608 -SUBSTR=609 -TO_ASCII=610 -TO_HEX=611 -TRANSLATE=612 -UNISTR=613 -AGE=614 -CLOCK_TIMESTAMP=615 -DATE_BIN=616 -DATE_PART=617 -DATE_TRUNC=618 -ISFINITE=619 -JUSTIFY_DAYS=620 -JUSTIFY_HOURS=621 -JUSTIFY_INTERVAL=622 -MAKE_DATE=623 -MAKE_INTERVAL=624 -MAKE_TIME=625 -MAKE_TIMESTAMP=626 -MAKE_TIMESTAMPTZ=627 -NOW=628 -STATEMENT_TIMESTAMP=629 -TIMEOFDAY=630 -TRANSACTION_TIMESTAMP=631 -TO_TIMESTAMP=632 -TO_CHAR=633 -TO_DATE=634 -TO_NUMBER=635 -Identifier=636 -QuotedIdentifier=637 -UnterminatedQuotedIdentifier=638 -InvalidQuotedIdentifier=639 -InvalidUnterminatedQuotedIdentifier=640 -UnicodeQuotedIdentifier=641 -UnterminatedUnicodeQuotedIdentifier=642 -InvalidUnicodeQuotedIdentifier=643 -InvalidUnterminatedUnicodeQuotedIdentifier=644 -StringConstant=645 -UnterminatedStringConstant=646 -UnicodeEscapeStringConstant=647 -UnterminatedUnicodeEscapeStringConstant=648 -BeginDollarStringConstant=649 -BinaryStringConstant=650 -UnterminatedBinaryStringConstant=651 -InvalidBinaryStringConstant=652 -InvalidUnterminatedBinaryStringConstant=653 -HexadecimalStringConstant=654 -UnterminatedHexadecimalStringConstant=655 -InvalidHexadecimalStringConstant=656 -InvalidUnterminatedHexadecimalStringConstant=657 -Integral=658 -NumericFail=659 -Numeric=660 -PLSQLVARIABLENAME=661 -PLSQLIDENTIFIER=662 -Whitespace=663 -Newline=664 -LineComment=665 -BlockComment=666 -UnterminatedBlockComment=667 -MetaCommand=668 -EndMetaCommand=669 -ErrorCharacter=670 -EscapeStringConstant=671 -UnterminatedEscapeStringConstant=672 -InvalidEscapeStringConstant=673 -InvalidUnterminatedEscapeStringConstant=674 -AfterEscapeStringConstantMode_NotContinued=675 -AfterEscapeStringConstantWithNewlineMode_NotContinued=676 -DollarText=677 -EndDollarStringConstant=678 -AfterEscapeStringConstantWithNewlineMode_Continued=679 -'$'=1 -'('=2 -')'=3 -'['=4 -']'=5 -','=6 -';'=7 -':'=8 -'*'=9 -'='=10 -'.'=11 -'+'=12 -'-'=13 -'/'=14 -'^'=15 -'<'=16 -'>'=17 -'<<'=18 -'>>'=19 -':='=20 -'<='=21 -'=>'=22 -'>='=23 -'..'=24 -'<>'=25 -'::'=26 -'%'=27 -'ALL'=30 -'ANALYSE'=31 -'ANALYZE'=32 -'AND'=33 -'ANY'=34 -'ARRAY'=35 -'AS'=36 -'ASC'=37 -'ASYMMETRIC'=38 -'BOTH'=39 -'CASE'=40 -'CAST'=41 -'CHECK'=42 -'COLLATE'=43 -'COLUMN'=44 -'CONSTRAINT'=45 -'CREATE'=46 -'CURRENT_CATALOG'=47 -'CURRENT_DATE'=48 -'CURRENT_ROLE'=49 -'CURRENT_TIME'=50 -'CURRENT_TIMESTAMP'=51 -'CURRENT_USER'=52 -'DEFAULT'=53 -'DEFERRABLE'=54 -'DESC'=55 -'DISTINCT'=56 -'DO'=57 -'ELSE'=58 -'EXCEPT'=59 -'FALSE'=60 -'FETCH'=61 -'FOR'=62 -'FOREIGN'=63 -'FROM'=64 -'GRANT'=65 -'GROUP'=66 -'HAVING'=67 -'IN'=68 -'INITIALLY'=69 -'INTERSECT'=70 -'INTO'=71 -'LATERAL'=72 -'LEADING'=73 -'LIMIT'=74 -'LOCALTIME'=75 -'LOCALTIMESTAMP'=76 -'NOT'=77 -'NULL'=78 -'OFFSET'=79 -'ON'=80 -'ONLY'=81 -'OR'=82 -'ORDER'=83 -'PLACING'=84 -'PRIMARY'=85 -'REFERENCES'=86 -'RETURNING'=87 -'SELECT'=88 -'SESSION_USER'=89 -'SOME'=90 -'SYMMETRIC'=91 -'TABLE'=92 -'THEN'=93 -'TO'=94 -'TRAILING'=95 -'TRUE'=96 -'UNION'=97 -'UNIQUE'=98 -'USER'=99 -'USING'=100 -'VARIADIC'=101 -'WHEN'=102 -'WHERE'=103 -'WINDOW'=104 -'WITH'=105 -'AUTHORIZATION'=106 -'BINARY'=107 -'COLLATION'=108 -'CONCURRENTLY'=109 -'CROSS'=110 -'CURRENT_SCHEMA'=111 -'FREEZE'=112 -'FULL'=113 -'ILIKE'=114 -'INNER'=115 -'IS'=116 -'ISNULL'=117 -'JOIN'=118 -'LEFT'=119 -'LIKE'=120 -'NATURAL'=121 -'NOTNULL'=122 -'OUTER'=123 -'OVER'=124 -'OVERLAPS'=125 -'RIGHT'=126 -'SIMILAR'=127 -'VERBOSE'=128 -'ABORT'=129 -'ABSOLUTE'=130 -'ACCESS'=131 -'ACTION'=132 -'ADD'=133 -'ADMIN'=134 -'AFTER'=135 -'AGGREGATE'=136 -'ALSO'=137 -'ALTER'=138 -'ALWAYS'=139 -'ASSERTION'=140 -'ASSIGNMENT'=141 -'AT'=142 -'ATTRIBUTE'=143 -'BACKWARD'=144 -'BEFORE'=145 -'BEGIN'=146 -'BY'=147 -'CACHE'=148 -'CALLED'=149 -'CASCADE'=150 -'CASCADED'=151 -'CATALOG'=152 -'CHAIN'=153 -'CHARACTERISTICS'=154 -'CHECKPOINT'=155 -'CLASS'=156 -'CLOSE'=157 -'CLUSTER'=158 -'COMMENT'=159 -'COMMENTS'=160 -'COMMIT'=161 -'COMMITTED'=162 -'CONFIGURATION'=163 -'CONNECTION'=164 -'CONSTRAINTS'=165 -'CONTENT'=166 -'CONTINUE'=167 -'CONVERSION'=168 -'COPY'=169 -'COST'=170 -'CSV'=171 -'CURSOR'=172 -'CYCLE'=173 -'DATA'=174 -'DATABASE'=175 -'DAY'=176 -'DEALLOCATE'=177 -'DECLARE'=178 -'DEFAULTS'=179 -'DEFERRED'=180 -'DEFINER'=181 -'DELETE'=182 -'DELIMITER'=183 -'DELIMITERS'=184 -'DICTIONARY'=185 -'DISABLE'=186 -'DISCARD'=187 -'DOCUMENT'=188 -'DOMAIN'=189 -'DOUBLE'=190 -'DROP'=191 -'EACH'=192 -'ENABLE'=193 -'ENCODING'=194 -'ENCRYPTED'=195 -'ENUM'=196 -'ESCAPE'=197 -'EVENT'=198 -'EXCLUDE'=199 -'EXCLUDING'=200 -'EXCLUSIVE'=201 -'EXECUTE'=202 -'EXPLAIN'=203 -'EXTENSION'=204 -'EXTERNAL'=205 -'FAMILY'=206 -'FIRST'=207 -'FOLLOWING'=208 -'FORCE'=209 -'FORWARD'=210 -'FUNCTION'=211 -'FUNCTIONS'=212 -'GLOBAL'=213 -'GRANTED'=214 -'HANDLER'=215 -'HEADER'=216 -'HOLD'=217 -'HOUR'=218 -'IDENTITY'=219 -'IF'=220 -'IMMEDIATE'=221 -'IMMUTABLE'=222 -'IMPLICIT'=223 -'INCLUDING'=224 -'INCREMENT'=225 -'INDEX'=226 -'INDEXES'=227 -'INHERIT'=228 -'INHERITS'=229 -'INLINE'=230 -'INSENSITIVE'=231 -'INSERT'=232 -'INSTEAD'=233 -'INVOKER'=234 -'ISOLATION'=235 -'KEY'=236 -'LABEL'=237 -'LANGUAGE'=238 -'LARGE'=239 -'LAST'=240 -'LEAKPROOF'=241 -'LEVEL'=242 -'LISTEN'=243 -'LOAD'=244 -'LOCAL'=245 -'LOCATION'=246 -'LOCK'=247 -'MAPPING'=248 -'MATCH'=249 -'MATCHED'=250 -'MATERIALIZED'=251 -'MAXVALUE'=252 -'MERGE'=253 -'MINUTE'=254 -'MINVALUE'=255 -'MODE'=256 -'MONTH'=257 -'MOVE'=258 -'NAME'=259 -'NAMES'=260 -'NEXT'=261 -'NO'=262 -'NOTHING'=263 -'NOTIFY'=264 -'NOWAIT'=265 -'NULLS'=266 -'OBJECT'=267 -'OF'=268 -'OFF'=269 -'OIDS'=270 -'OPERATOR'=271 -'OPTION'=272 -'OPTIONS'=273 -'OWNED'=274 -'OWNER'=275 -'PARSER'=276 -'PARTIAL'=277 -'PARTITION'=278 -'PASSING'=279 -'PASSWORD'=280 -'PLANS'=281 -'PRECEDING'=282 -'PREPARE'=283 -'PREPARED'=284 -'PRESERVE'=285 -'PRIOR'=286 -'PRIVILEGES'=287 -'PROCEDURAL'=288 -'PROCEDURE'=289 -'PROGRAM'=290 -'QUOTE'=291 -'RANGE'=292 -'READ'=293 -'REASSIGN'=294 -'RECHECK'=295 -'RECURSIVE'=296 -'REF'=297 -'REFRESH'=298 -'REINDEX'=299 -'RELATIVE'=300 -'RELEASE'=301 -'RENAME'=302 -'REPEATABLE'=303 -'REPLACE'=304 -'REPLICA'=305 -'RESET'=306 -'RESTART'=307 -'RESTRICT'=308 -'RETURNS'=309 -'REVOKE'=310 -'ROLE'=311 -'ROLLBACK'=312 -'ROWS'=313 -'RULE'=314 -'SAVEPOINT'=315 -'SCHEMA'=316 -'SCROLL'=317 -'SEARCH'=318 -'SECOND'=319 -'SECURITY'=320 -'SEQUENCE'=321 -'SEQUENCES'=322 -'SERIALIZABLE'=323 -'SERVER'=324 -'SESSION'=325 -'SET'=326 -'SHARE'=327 -'SHOW'=328 -'SIMPLE'=329 -'SNAPSHOT'=330 -'STABLE'=331 -'STANDALONE'=332 -'START'=333 -'STATEMENT'=334 -'STATISTICS'=335 -'STDIN'=336 -'STDOUT'=337 -'STORAGE'=338 -'STRICT'=339 -'STRIP'=340 -'SYSID'=341 -'SYSTEM'=342 -'TABLES'=343 -'TABLESPACE'=344 -'TEMP'=345 -'TEMPLATE'=346 -'TEMPORARY'=347 -'TEXT'=348 -'TRANSACTION'=349 -'TRIGGER'=350 -'TRUNCATE'=351 -'TRUSTED'=352 -'TYPE'=353 -'TYPES'=354 -'UNBOUNDED'=355 -'UNCOMMITTED'=356 -'UNENCRYPTED'=357 -'UNKNOWN'=358 -'UNLISTEN'=359 -'UNLOGGED'=360 -'UNTIL'=361 -'UPDATE'=362 -'VACUUM'=363 -'VALID'=364 -'VALIDATE'=365 -'VALIDATOR'=366 -'VARYING'=367 -'VERSION'=368 -'VIEW'=369 -'VOLATILE'=370 -'WHITESPACE'=371 -'WITHOUT'=372 -'WORK'=373 -'WRAPPER'=374 -'WRITE'=375 -'XML'=376 -'YEAR'=377 -'YES'=378 -'ZONE'=379 -'BETWEEN'=380 -'BIGINT'=381 -'BIT'=382 -'BOOLEAN'=383 -'CHAR'=384 -'CHARACTER'=385 -'COALESCE'=386 -'DEC'=387 -'DECIMAL'=388 -'EXISTS'=389 -'EXTRACT'=390 -'FLOAT'=391 -'GREATEST'=392 -'INOUT'=393 -'INT'=394 -'INTEGER'=395 -'INTERVAL'=396 -'LEAST'=397 -'NATIONAL'=398 -'NCHAR'=399 -'NONE'=400 -'NULLIF'=401 -'NUMERIC'=402 -'OVERLAY'=403 -'POSITION'=404 -'PRECISION'=405 -'REAL'=406 -'ROW'=407 -'SETOF'=408 -'SMALLINT'=409 -'SUBSTRING'=410 -'TIME'=411 -'TIMESTAMP'=412 -'TREAT'=413 -'TRIM'=414 -'VALUES'=415 -'VARCHAR'=416 -'XMLATTRIBUTES'=417 -'XMLCOMMENT'=418 -'XMLAGG'=419 -'XML_IS_WELL_FORMED'=420 -'XML_IS_WELL_FORMED_DOCUMENT'=421 -'XML_IS_WELL_FORMED_CONTENT'=422 -'XPATH'=423 -'XPATH_EXISTS'=424 -'XMLCONCAT'=425 -'XMLELEMENT'=426 -'XMLEXISTS'=427 -'XMLFOREST'=428 -'XMLPARSE'=429 -'XMLPI'=430 -'XMLROOT'=431 -'XMLSERIALIZE'=432 -'CALL'=433 -'CURRENT'=434 -'ATTACH'=435 -'DETACH'=436 -'EXPRESSION'=437 -'GENERATED'=438 -'LOGGED'=439 -'STORED'=440 -'INCLUDE'=441 -'ROUTINE'=442 -'TRANSFORM'=443 -'IMPORT'=444 -'POLICY'=445 -'METHOD'=446 -'REFERENCING'=447 -'NEW'=448 -'OLD'=449 -'VALUE'=450 -'SUBSCRIPTION'=451 -'PUBLICATION'=452 -'OUT'=453 -'END'=454 -'ROUTINES'=455 -'SCHEMAS'=456 -'PROCEDURES'=457 -'INPUT'=458 -'SUPPORT'=459 -'PARALLEL'=460 -'SQL'=461 -'DEPENDS'=462 -'OVERRIDING'=463 -'CONFLICT'=464 -'SKIP'=465 -'LOCKED'=466 -'TIES'=467 -'ROLLUP'=468 -'CUBE'=469 -'GROUPING'=470 -'SETS'=471 -'TABLESAMPLE'=472 -'ORDINALITY'=473 -'XMLTABLE'=474 -'COLUMNS'=475 -'XMLNAMESPACES'=476 -'ROWTYPE'=477 -'NORMALIZED'=478 -'WITHIN'=479 -'FILTER'=480 -'GROUPS'=481 -'OTHERS'=482 -'NFC'=483 -'NFD'=484 -'NFKC'=485 -'NFKD'=486 -'UESCAPE'=487 -'VIEWS'=488 -'NORMALIZE'=489 -'DUMP'=490 -'PRINT_STRICT_PARAMS'=491 -'VARIABLE_CONFLICT'=492 -'ERROR'=493 -'USE_VARIABLE'=494 -'USE_COLUMN'=495 -'ALIAS'=496 -'CONSTANT'=497 -'PERFORM'=498 -'GET'=499 -'DIAGNOSTICS'=500 -'STACKED'=501 -'ELSIF'=502 -'WHILE'=503 -'REVERSE'=504 -'FOREACH'=505 -'SLICE'=506 -'EXIT'=507 -'RETURN'=508 -'QUERY'=509 -'RAISE'=510 -'SQLSTATE'=511 -'DEBUG'=512 -'LOG'=513 -'INFO'=514 -'NOTICE'=515 -'WARNING'=516 -'EXCEPTION'=517 -'ASSERT'=518 -'LOOP'=519 -'OPEN'=520 -'ABS'=521 -'CBRT'=522 -'CEIL'=523 -'CEILING'=524 -'DEGREES'=525 -'DIV'=526 -'EXP'=527 -'FACTORIAL'=528 -'FLOOR'=529 -'GCD'=530 -'LCM'=531 -'LN'=532 -'LOG10'=533 -'MIN_SCALE'=534 -'MOD'=535 -'PI'=536 -'POWER'=537 -'RADIANS'=538 -'ROUND'=539 -'SCALE'=540 -'SIGN'=541 -'SQRT'=542 -'TRIM_SCALE'=543 -'TRUNC'=544 -'WIDTH_BUCKET'=545 -'RANDOM'=546 -'SETSEED'=547 -'ACOS'=548 -'ACOSD'=549 -'ASIN'=550 -'ASIND'=551 -'ATAN'=552 -'ATAND'=553 -'ATAN2'=554 -'ATAN2D'=555 -'COS'=556 -'COSD'=557 -'COT'=558 -'COTD'=559 -'SIN'=560 -'SIND'=561 -'TAN'=562 -'TAND'=563 -'SINH'=564 -'COSH'=565 -'TANH'=566 -'ASINH'=567 -'ACOSH'=568 -'ATANH'=569 -'BIT_LENGTH'=570 -'CHAR_LENGTH'=571 -'CHARACTER_LENGTH'=572 -'LOWER'=573 -'OCTET_LENGTH'=574 -'UPPER'=575 -'ASCII'=576 -'BTRIM'=577 -'CHR'=578 -'CONCAT'=579 -'CONCAT_WS'=580 -'FORMAT'=581 -'INITCAP'=582 -'LENGTH'=583 -'LPAD'=584 -'LTRIM'=585 -'MD5'=586 -'PARSE_IDENT'=587 -'PG_CLIENT_ENCODING'=588 -'QUOTE_IDENT'=589 -'QUOTE_LITERAL'=590 -'QUOTE_NULLABLE'=591 -'REGEXP_COUNT'=592 -'REGEXP_INSTR'=593 -'REGEXP_LIKE'=594 -'REGEXP_MATCH'=595 -'REGEXP_MATCHES'=596 -'REGEXP_REPLACE'=597 -'REGEXP_SPLIT_TO_ARRAY'=598 -'REGEXP_SPLIT_TO_TABLE'=599 -'REGEXP_SUBSTR'=600 -'REPEAT'=601 -'RPAD'=602 -'RTRIM'=603 -'SPLIT_PART'=604 -'STARTS_WITH'=605 -'STRING_TO_ARRAY'=606 -'STRING_TO_TABLE'=607 -'STRPOS'=608 -'SUBSTR'=609 -'TO_ASCII'=610 -'TO_HEX'=611 -'TRANSLATE'=612 -'UNISTR'=613 -'AGE'=614 -'CLOCK_TIMESTAMP'=615 -'DATE_BIN'=616 -'DATE_PART'=617 -'DATE_TRUNC'=618 -'ISFINITE'=619 -'JUSTIFY_DAYS'=620 -'JUSTIFY_HOURS'=621 -'JUSTIFY_INTERVAL'=622 -'MAKE_DATE'=623 -'MAKE_INTERVAL'=624 -'MAKE_TIME'=625 -'MAKE_TIMESTAMP'=626 -'MAKE_TIMESTAMPTZ'=627 -'NOW'=628 -'STATEMENT_TIMESTAMP'=629 -'TIMEOFDAY'=630 -'TRANSACTION_TIMESTAMP'=631 -'TO_TIMESTAMP'=632 -'TO_CHAR'=633 -'TO_DATE'=634 -'TO_NUMBER'=635 -'\\\\'=669 -'\''=679 diff --git a/antlr4_postgresql/PostgreSQLParserListener.py b/antlr4_postgresql/PostgreSQLParserListener.py deleted file mode 100644 index 64dc6e3..0000000 --- a/antlr4_postgresql/PostgreSQLParserListener.py +++ /dev/null @@ -1,7358 +0,0 @@ -# Generated from PostgreSQLParser.g4 by ANTLR 4.13.2 -from antlr4 import * -if "." in __name__: - from .PostgreSQLParser import PostgreSQLParser -else: - from PostgreSQLParser import PostgreSQLParser - - - -# This class defines a complete listener for a parse tree produced by PostgreSQLParser. -class PostgreSQLParserListener(ParseTreeListener): - - # Enter a parse tree produced by PostgreSQLParser#root. - def enterRoot(self, ctx:PostgreSQLParser.RootContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#root. - def exitRoot(self, ctx:PostgreSQLParser.RootContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsqlroot. - def enterPlsqlroot(self, ctx:PostgreSQLParser.PlsqlrootContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsqlroot. - def exitPlsqlroot(self, ctx:PostgreSQLParser.PlsqlrootContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmtblock. - def enterStmtblock(self, ctx:PostgreSQLParser.StmtblockContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmtblock. - def exitStmtblock(self, ctx:PostgreSQLParser.StmtblockContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmtmulti. - def enterStmtmulti(self, ctx:PostgreSQLParser.StmtmultiContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmtmulti. - def exitStmtmulti(self, ctx:PostgreSQLParser.StmtmultiContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt. - def enterStmt(self, ctx:PostgreSQLParser.StmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt. - def exitStmt(self, ctx:PostgreSQLParser.StmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsqlconsolecommand. - def enterPlsqlconsolecommand(self, ctx:PostgreSQLParser.PlsqlconsolecommandContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsqlconsolecommand. - def exitPlsqlconsolecommand(self, ctx:PostgreSQLParser.PlsqlconsolecommandContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#callstmt. - def enterCallstmt(self, ctx:PostgreSQLParser.CallstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#callstmt. - def exitCallstmt(self, ctx:PostgreSQLParser.CallstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createrolestmt. - def enterCreaterolestmt(self, ctx:PostgreSQLParser.CreaterolestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createrolestmt. - def exitCreaterolestmt(self, ctx:PostgreSQLParser.CreaterolestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_with. - def enterOpt_with(self, ctx:PostgreSQLParser.Opt_withContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_with. - def exitOpt_with(self, ctx:PostgreSQLParser.Opt_withContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optrolelist. - def enterOptrolelist(self, ctx:PostgreSQLParser.OptrolelistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optrolelist. - def exitOptrolelist(self, ctx:PostgreSQLParser.OptrolelistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alteroptrolelist. - def enterAlteroptrolelist(self, ctx:PostgreSQLParser.AlteroptrolelistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alteroptrolelist. - def exitAlteroptrolelist(self, ctx:PostgreSQLParser.AlteroptrolelistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alteroptroleelem. - def enterAlteroptroleelem(self, ctx:PostgreSQLParser.AlteroptroleelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alteroptroleelem. - def exitAlteroptroleelem(self, ctx:PostgreSQLParser.AlteroptroleelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createoptroleelem. - def enterCreateoptroleelem(self, ctx:PostgreSQLParser.CreateoptroleelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createoptroleelem. - def exitCreateoptroleelem(self, ctx:PostgreSQLParser.CreateoptroleelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createuserstmt. - def enterCreateuserstmt(self, ctx:PostgreSQLParser.CreateuserstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createuserstmt. - def exitCreateuserstmt(self, ctx:PostgreSQLParser.CreateuserstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterrolestmt. - def enterAlterrolestmt(self, ctx:PostgreSQLParser.AlterrolestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterrolestmt. - def exitAlterrolestmt(self, ctx:PostgreSQLParser.AlterrolestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_in_database. - def enterOpt_in_database(self, ctx:PostgreSQLParser.Opt_in_databaseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_in_database. - def exitOpt_in_database(self, ctx:PostgreSQLParser.Opt_in_databaseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterrolesetstmt. - def enterAlterrolesetstmt(self, ctx:PostgreSQLParser.AlterrolesetstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterrolesetstmt. - def exitAlterrolesetstmt(self, ctx:PostgreSQLParser.AlterrolesetstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#droprolestmt. - def enterDroprolestmt(self, ctx:PostgreSQLParser.DroprolestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#droprolestmt. - def exitDroprolestmt(self, ctx:PostgreSQLParser.DroprolestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#creategroupstmt. - def enterCreategroupstmt(self, ctx:PostgreSQLParser.CreategroupstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#creategroupstmt. - def exitCreategroupstmt(self, ctx:PostgreSQLParser.CreategroupstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altergroupstmt. - def enterAltergroupstmt(self, ctx:PostgreSQLParser.AltergroupstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altergroupstmt. - def exitAltergroupstmt(self, ctx:PostgreSQLParser.AltergroupstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#add_drop. - def enterAdd_drop(self, ctx:PostgreSQLParser.Add_dropContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#add_drop. - def exitAdd_drop(self, ctx:PostgreSQLParser.Add_dropContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createschemastmt. - def enterCreateschemastmt(self, ctx:PostgreSQLParser.CreateschemastmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createschemastmt. - def exitCreateschemastmt(self, ctx:PostgreSQLParser.CreateschemastmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optschemaname. - def enterOptschemaname(self, ctx:PostgreSQLParser.OptschemanameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optschemaname. - def exitOptschemaname(self, ctx:PostgreSQLParser.OptschemanameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optschemaeltlist. - def enterOptschemaeltlist(self, ctx:PostgreSQLParser.OptschemaeltlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optschemaeltlist. - def exitOptschemaeltlist(self, ctx:PostgreSQLParser.OptschemaeltlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#schema_stmt. - def enterSchema_stmt(self, ctx:PostgreSQLParser.Schema_stmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#schema_stmt. - def exitSchema_stmt(self, ctx:PostgreSQLParser.Schema_stmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#variablesetstmt. - def enterVariablesetstmt(self, ctx:PostgreSQLParser.VariablesetstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#variablesetstmt. - def exitVariablesetstmt(self, ctx:PostgreSQLParser.VariablesetstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_rest. - def enterSet_rest(self, ctx:PostgreSQLParser.Set_restContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_rest. - def exitSet_rest(self, ctx:PostgreSQLParser.Set_restContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_set. - def enterGeneric_set(self, ctx:PostgreSQLParser.Generic_setContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_set. - def exitGeneric_set(self, ctx:PostgreSQLParser.Generic_setContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_rest_more. - def enterSet_rest_more(self, ctx:PostgreSQLParser.Set_rest_moreContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_rest_more. - def exitSet_rest_more(self, ctx:PostgreSQLParser.Set_rest_moreContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#var_name. - def enterVar_name(self, ctx:PostgreSQLParser.Var_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#var_name. - def exitVar_name(self, ctx:PostgreSQLParser.Var_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#var_list. - def enterVar_list(self, ctx:PostgreSQLParser.Var_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#var_list. - def exitVar_list(self, ctx:PostgreSQLParser.Var_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#var_value. - def enterVar_value(self, ctx:PostgreSQLParser.Var_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#var_value. - def exitVar_value(self, ctx:PostgreSQLParser.Var_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#iso_level. - def enterIso_level(self, ctx:PostgreSQLParser.Iso_levelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#iso_level. - def exitIso_level(self, ctx:PostgreSQLParser.Iso_levelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_boolean_or_string. - def enterOpt_boolean_or_string(self, ctx:PostgreSQLParser.Opt_boolean_or_stringContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_boolean_or_string. - def exitOpt_boolean_or_string(self, ctx:PostgreSQLParser.Opt_boolean_or_stringContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#zone_value. - def enterZone_value(self, ctx:PostgreSQLParser.Zone_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#zone_value. - def exitZone_value(self, ctx:PostgreSQLParser.Zone_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_encoding. - def enterOpt_encoding(self, ctx:PostgreSQLParser.Opt_encodingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_encoding. - def exitOpt_encoding(self, ctx:PostgreSQLParser.Opt_encodingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#nonreservedword_or_sconst. - def enterNonreservedword_or_sconst(self, ctx:PostgreSQLParser.Nonreservedword_or_sconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#nonreservedword_or_sconst. - def exitNonreservedword_or_sconst(self, ctx:PostgreSQLParser.Nonreservedword_or_sconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#variableresetstmt. - def enterVariableresetstmt(self, ctx:PostgreSQLParser.VariableresetstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#variableresetstmt. - def exitVariableresetstmt(self, ctx:PostgreSQLParser.VariableresetstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reset_rest. - def enterReset_rest(self, ctx:PostgreSQLParser.Reset_restContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reset_rest. - def exitReset_rest(self, ctx:PostgreSQLParser.Reset_restContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_reset. - def enterGeneric_reset(self, ctx:PostgreSQLParser.Generic_resetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_reset. - def exitGeneric_reset(self, ctx:PostgreSQLParser.Generic_resetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#setresetclause. - def enterSetresetclause(self, ctx:PostgreSQLParser.SetresetclauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#setresetclause. - def exitSetresetclause(self, ctx:PostgreSQLParser.SetresetclauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#functionsetresetclause. - def enterFunctionsetresetclause(self, ctx:PostgreSQLParser.FunctionsetresetclauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#functionsetresetclause. - def exitFunctionsetresetclause(self, ctx:PostgreSQLParser.FunctionsetresetclauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#variableshowstmt. - def enterVariableshowstmt(self, ctx:PostgreSQLParser.VariableshowstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#variableshowstmt. - def exitVariableshowstmt(self, ctx:PostgreSQLParser.VariableshowstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraintssetstmt. - def enterConstraintssetstmt(self, ctx:PostgreSQLParser.ConstraintssetstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraintssetstmt. - def exitConstraintssetstmt(self, ctx:PostgreSQLParser.ConstraintssetstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraints_set_list. - def enterConstraints_set_list(self, ctx:PostgreSQLParser.Constraints_set_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraints_set_list. - def exitConstraints_set_list(self, ctx:PostgreSQLParser.Constraints_set_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraints_set_mode. - def enterConstraints_set_mode(self, ctx:PostgreSQLParser.Constraints_set_modeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraints_set_mode. - def exitConstraints_set_mode(self, ctx:PostgreSQLParser.Constraints_set_modeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#checkpointstmt. - def enterCheckpointstmt(self, ctx:PostgreSQLParser.CheckpointstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#checkpointstmt. - def exitCheckpointstmt(self, ctx:PostgreSQLParser.CheckpointstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#discardstmt. - def enterDiscardstmt(self, ctx:PostgreSQLParser.DiscardstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#discardstmt. - def exitDiscardstmt(self, ctx:PostgreSQLParser.DiscardstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altertablestmt. - def enterAltertablestmt(self, ctx:PostgreSQLParser.AltertablestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altertablestmt. - def exitAltertablestmt(self, ctx:PostgreSQLParser.AltertablestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_table_cmds. - def enterAlter_table_cmds(self, ctx:PostgreSQLParser.Alter_table_cmdsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_table_cmds. - def exitAlter_table_cmds(self, ctx:PostgreSQLParser.Alter_table_cmdsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#partition_cmd. - def enterPartition_cmd(self, ctx:PostgreSQLParser.Partition_cmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#partition_cmd. - def exitPartition_cmd(self, ctx:PostgreSQLParser.Partition_cmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#index_partition_cmd. - def enterIndex_partition_cmd(self, ctx:PostgreSQLParser.Index_partition_cmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#index_partition_cmd. - def exitIndex_partition_cmd(self, ctx:PostgreSQLParser.Index_partition_cmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_table_cmd. - def enterAlter_table_cmd(self, ctx:PostgreSQLParser.Alter_table_cmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_table_cmd. - def exitAlter_table_cmd(self, ctx:PostgreSQLParser.Alter_table_cmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_column_default. - def enterAlter_column_default(self, ctx:PostgreSQLParser.Alter_column_defaultContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_column_default. - def exitAlter_column_default(self, ctx:PostgreSQLParser.Alter_column_defaultContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_drop_behavior. - def enterOpt_drop_behavior(self, ctx:PostgreSQLParser.Opt_drop_behaviorContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_drop_behavior. - def exitOpt_drop_behavior(self, ctx:PostgreSQLParser.Opt_drop_behaviorContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_collate_clause. - def enterOpt_collate_clause(self, ctx:PostgreSQLParser.Opt_collate_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_collate_clause. - def exitOpt_collate_clause(self, ctx:PostgreSQLParser.Opt_collate_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_using. - def enterAlter_using(self, ctx:PostgreSQLParser.Alter_usingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_using. - def exitAlter_using(self, ctx:PostgreSQLParser.Alter_usingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#replica_identity. - def enterReplica_identity(self, ctx:PostgreSQLParser.Replica_identityContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#replica_identity. - def exitReplica_identity(self, ctx:PostgreSQLParser.Replica_identityContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reloptions. - def enterReloptions(self, ctx:PostgreSQLParser.ReloptionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reloptions. - def exitReloptions(self, ctx:PostgreSQLParser.ReloptionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_reloptions. - def enterOpt_reloptions(self, ctx:PostgreSQLParser.Opt_reloptionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_reloptions. - def exitOpt_reloptions(self, ctx:PostgreSQLParser.Opt_reloptionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reloption_list. - def enterReloption_list(self, ctx:PostgreSQLParser.Reloption_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reloption_list. - def exitReloption_list(self, ctx:PostgreSQLParser.Reloption_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reloption_elem. - def enterReloption_elem(self, ctx:PostgreSQLParser.Reloption_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reloption_elem. - def exitReloption_elem(self, ctx:PostgreSQLParser.Reloption_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_identity_column_option_list. - def enterAlter_identity_column_option_list(self, ctx:PostgreSQLParser.Alter_identity_column_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_identity_column_option_list. - def exitAlter_identity_column_option_list(self, ctx:PostgreSQLParser.Alter_identity_column_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_identity_column_option. - def enterAlter_identity_column_option(self, ctx:PostgreSQLParser.Alter_identity_column_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_identity_column_option. - def exitAlter_identity_column_option(self, ctx:PostgreSQLParser.Alter_identity_column_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#partitionboundspec. - def enterPartitionboundspec(self, ctx:PostgreSQLParser.PartitionboundspecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#partitionboundspec. - def exitPartitionboundspec(self, ctx:PostgreSQLParser.PartitionboundspecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#hash_partbound_elem. - def enterHash_partbound_elem(self, ctx:PostgreSQLParser.Hash_partbound_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#hash_partbound_elem. - def exitHash_partbound_elem(self, ctx:PostgreSQLParser.Hash_partbound_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#hash_partbound. - def enterHash_partbound(self, ctx:PostgreSQLParser.Hash_partboundContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#hash_partbound. - def exitHash_partbound(self, ctx:PostgreSQLParser.Hash_partboundContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altercompositetypestmt. - def enterAltercompositetypestmt(self, ctx:PostgreSQLParser.AltercompositetypestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altercompositetypestmt. - def exitAltercompositetypestmt(self, ctx:PostgreSQLParser.AltercompositetypestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_type_cmds. - def enterAlter_type_cmds(self, ctx:PostgreSQLParser.Alter_type_cmdsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_type_cmds. - def exitAlter_type_cmds(self, ctx:PostgreSQLParser.Alter_type_cmdsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_type_cmd. - def enterAlter_type_cmd(self, ctx:PostgreSQLParser.Alter_type_cmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_type_cmd. - def exitAlter_type_cmd(self, ctx:PostgreSQLParser.Alter_type_cmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#closeportalstmt. - def enterCloseportalstmt(self, ctx:PostgreSQLParser.CloseportalstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#closeportalstmt. - def exitCloseportalstmt(self, ctx:PostgreSQLParser.CloseportalstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copystmt. - def enterCopystmt(self, ctx:PostgreSQLParser.CopystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copystmt. - def exitCopystmt(self, ctx:PostgreSQLParser.CopystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_from. - def enterCopy_from(self, ctx:PostgreSQLParser.Copy_fromContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_from. - def exitCopy_from(self, ctx:PostgreSQLParser.Copy_fromContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_program. - def enterOpt_program(self, ctx:PostgreSQLParser.Opt_programContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_program. - def exitOpt_program(self, ctx:PostgreSQLParser.Opt_programContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_file_name. - def enterCopy_file_name(self, ctx:PostgreSQLParser.Copy_file_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_file_name. - def exitCopy_file_name(self, ctx:PostgreSQLParser.Copy_file_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_options. - def enterCopy_options(self, ctx:PostgreSQLParser.Copy_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_options. - def exitCopy_options(self, ctx:PostgreSQLParser.Copy_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_opt_list. - def enterCopy_opt_list(self, ctx:PostgreSQLParser.Copy_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_opt_list. - def exitCopy_opt_list(self, ctx:PostgreSQLParser.Copy_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_opt_item. - def enterCopy_opt_item(self, ctx:PostgreSQLParser.Copy_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_opt_item. - def exitCopy_opt_item(self, ctx:PostgreSQLParser.Copy_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_binary. - def enterOpt_binary(self, ctx:PostgreSQLParser.Opt_binaryContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_binary. - def exitOpt_binary(self, ctx:PostgreSQLParser.Opt_binaryContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_delimiter. - def enterCopy_delimiter(self, ctx:PostgreSQLParser.Copy_delimiterContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_delimiter. - def exitCopy_delimiter(self, ctx:PostgreSQLParser.Copy_delimiterContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_using. - def enterOpt_using(self, ctx:PostgreSQLParser.Opt_usingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_using. - def exitOpt_using(self, ctx:PostgreSQLParser.Opt_usingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_generic_opt_list. - def enterCopy_generic_opt_list(self, ctx:PostgreSQLParser.Copy_generic_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_generic_opt_list. - def exitCopy_generic_opt_list(self, ctx:PostgreSQLParser.Copy_generic_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_generic_opt_elem. - def enterCopy_generic_opt_elem(self, ctx:PostgreSQLParser.Copy_generic_opt_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_generic_opt_elem. - def exitCopy_generic_opt_elem(self, ctx:PostgreSQLParser.Copy_generic_opt_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_generic_opt_arg. - def enterCopy_generic_opt_arg(self, ctx:PostgreSQLParser.Copy_generic_opt_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg. - def exitCopy_generic_opt_arg(self, ctx:PostgreSQLParser.Copy_generic_opt_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list. - def enterCopy_generic_opt_arg_list(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list. - def exitCopy_generic_opt_arg_list(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list_item. - def enterCopy_generic_opt_arg_list_item(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_list_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list_item. - def exitCopy_generic_opt_arg_list_item(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_list_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createstmt. - def enterCreatestmt(self, ctx:PostgreSQLParser.CreatestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createstmt. - def exitCreatestmt(self, ctx:PostgreSQLParser.CreatestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttemp. - def enterOpttemp(self, ctx:PostgreSQLParser.OpttempContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttemp. - def exitOpttemp(self, ctx:PostgreSQLParser.OpttempContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttableelementlist. - def enterOpttableelementlist(self, ctx:PostgreSQLParser.OpttableelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttableelementlist. - def exitOpttableelementlist(self, ctx:PostgreSQLParser.OpttableelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttypedtableelementlist. - def enterOpttypedtableelementlist(self, ctx:PostgreSQLParser.OpttypedtableelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttypedtableelementlist. - def exitOpttypedtableelementlist(self, ctx:PostgreSQLParser.OpttypedtableelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tableelementlist. - def enterTableelementlist(self, ctx:PostgreSQLParser.TableelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tableelementlist. - def exitTableelementlist(self, ctx:PostgreSQLParser.TableelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#typedtableelementlist. - def enterTypedtableelementlist(self, ctx:PostgreSQLParser.TypedtableelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#typedtableelementlist. - def exitTypedtableelementlist(self, ctx:PostgreSQLParser.TypedtableelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tableelement. - def enterTableelement(self, ctx:PostgreSQLParser.TableelementContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tableelement. - def exitTableelement(self, ctx:PostgreSQLParser.TableelementContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#typedtableelement. - def enterTypedtableelement(self, ctx:PostgreSQLParser.TypedtableelementContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#typedtableelement. - def exitTypedtableelement(self, ctx:PostgreSQLParser.TypedtableelementContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#columnDef. - def enterColumnDef(self, ctx:PostgreSQLParser.ColumnDefContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#columnDef. - def exitColumnDef(self, ctx:PostgreSQLParser.ColumnDefContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#columnOptions. - def enterColumnOptions(self, ctx:PostgreSQLParser.ColumnOptionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#columnOptions. - def exitColumnOptions(self, ctx:PostgreSQLParser.ColumnOptionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#colquallist. - def enterColquallist(self, ctx:PostgreSQLParser.ColquallistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#colquallist. - def exitColquallist(self, ctx:PostgreSQLParser.ColquallistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#colconstraint. - def enterColconstraint(self, ctx:PostgreSQLParser.ColconstraintContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#colconstraint. - def exitColconstraint(self, ctx:PostgreSQLParser.ColconstraintContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#colconstraintelem. - def enterColconstraintelem(self, ctx:PostgreSQLParser.ColconstraintelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#colconstraintelem. - def exitColconstraintelem(self, ctx:PostgreSQLParser.ColconstraintelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generated_when. - def enterGenerated_when(self, ctx:PostgreSQLParser.Generated_whenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generated_when. - def exitGenerated_when(self, ctx:PostgreSQLParser.Generated_whenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraintattr. - def enterConstraintattr(self, ctx:PostgreSQLParser.ConstraintattrContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraintattr. - def exitConstraintattr(self, ctx:PostgreSQLParser.ConstraintattrContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablelikeclause. - def enterTablelikeclause(self, ctx:PostgreSQLParser.TablelikeclauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablelikeclause. - def exitTablelikeclause(self, ctx:PostgreSQLParser.TablelikeclauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablelikeoptionlist. - def enterTablelikeoptionlist(self, ctx:PostgreSQLParser.TablelikeoptionlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablelikeoptionlist. - def exitTablelikeoptionlist(self, ctx:PostgreSQLParser.TablelikeoptionlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablelikeoption. - def enterTablelikeoption(self, ctx:PostgreSQLParser.TablelikeoptionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablelikeoption. - def exitTablelikeoption(self, ctx:PostgreSQLParser.TablelikeoptionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tableconstraint. - def enterTableconstraint(self, ctx:PostgreSQLParser.TableconstraintContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tableconstraint. - def exitTableconstraint(self, ctx:PostgreSQLParser.TableconstraintContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraintelem. - def enterConstraintelem(self, ctx:PostgreSQLParser.ConstraintelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraintelem. - def exitConstraintelem(self, ctx:PostgreSQLParser.ConstraintelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_no_inherit. - def enterOpt_no_inherit(self, ctx:PostgreSQLParser.Opt_no_inheritContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_no_inherit. - def exitOpt_no_inherit(self, ctx:PostgreSQLParser.Opt_no_inheritContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_column_list. - def enterOpt_column_list(self, ctx:PostgreSQLParser.Opt_column_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_column_list. - def exitOpt_column_list(self, ctx:PostgreSQLParser.Opt_column_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#columnlist. - def enterColumnlist(self, ctx:PostgreSQLParser.ColumnlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#columnlist. - def exitColumnlist(self, ctx:PostgreSQLParser.ColumnlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#columnElem. - def enterColumnElem(self, ctx:PostgreSQLParser.ColumnElemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#columnElem. - def exitColumnElem(self, ctx:PostgreSQLParser.ColumnElemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_c_include. - def enterOpt_c_include(self, ctx:PostgreSQLParser.Opt_c_includeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_c_include. - def exitOpt_c_include(self, ctx:PostgreSQLParser.Opt_c_includeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#key_match. - def enterKey_match(self, ctx:PostgreSQLParser.Key_matchContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#key_match. - def exitKey_match(self, ctx:PostgreSQLParser.Key_matchContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#exclusionconstraintlist. - def enterExclusionconstraintlist(self, ctx:PostgreSQLParser.ExclusionconstraintlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#exclusionconstraintlist. - def exitExclusionconstraintlist(self, ctx:PostgreSQLParser.ExclusionconstraintlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#exclusionconstraintelem. - def enterExclusionconstraintelem(self, ctx:PostgreSQLParser.ExclusionconstraintelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#exclusionconstraintelem. - def exitExclusionconstraintelem(self, ctx:PostgreSQLParser.ExclusionconstraintelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#exclusionwhereclause. - def enterExclusionwhereclause(self, ctx:PostgreSQLParser.ExclusionwhereclauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#exclusionwhereclause. - def exitExclusionwhereclause(self, ctx:PostgreSQLParser.ExclusionwhereclauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#key_actions. - def enterKey_actions(self, ctx:PostgreSQLParser.Key_actionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#key_actions. - def exitKey_actions(self, ctx:PostgreSQLParser.Key_actionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#key_update. - def enterKey_update(self, ctx:PostgreSQLParser.Key_updateContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#key_update. - def exitKey_update(self, ctx:PostgreSQLParser.Key_updateContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#key_delete. - def enterKey_delete(self, ctx:PostgreSQLParser.Key_deleteContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#key_delete. - def exitKey_delete(self, ctx:PostgreSQLParser.Key_deleteContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#key_action. - def enterKey_action(self, ctx:PostgreSQLParser.Key_actionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#key_action. - def exitKey_action(self, ctx:PostgreSQLParser.Key_actionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optinherit. - def enterOptinherit(self, ctx:PostgreSQLParser.OptinheritContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optinherit. - def exitOptinherit(self, ctx:PostgreSQLParser.OptinheritContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optpartitionspec. - def enterOptpartitionspec(self, ctx:PostgreSQLParser.OptpartitionspecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optpartitionspec. - def exitOptpartitionspec(self, ctx:PostgreSQLParser.OptpartitionspecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#partitionspec. - def enterPartitionspec(self, ctx:PostgreSQLParser.PartitionspecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#partitionspec. - def exitPartitionspec(self, ctx:PostgreSQLParser.PartitionspecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#part_params. - def enterPart_params(self, ctx:PostgreSQLParser.Part_paramsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#part_params. - def exitPart_params(self, ctx:PostgreSQLParser.Part_paramsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#part_elem. - def enterPart_elem(self, ctx:PostgreSQLParser.Part_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#part_elem. - def exitPart_elem(self, ctx:PostgreSQLParser.Part_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_access_method_clause. - def enterTable_access_method_clause(self, ctx:PostgreSQLParser.Table_access_method_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_access_method_clause. - def exitTable_access_method_clause(self, ctx:PostgreSQLParser.Table_access_method_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optwith. - def enterOptwith(self, ctx:PostgreSQLParser.OptwithContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optwith. - def exitOptwith(self, ctx:PostgreSQLParser.OptwithContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#oncommitoption. - def enterOncommitoption(self, ctx:PostgreSQLParser.OncommitoptionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#oncommitoption. - def exitOncommitoption(self, ctx:PostgreSQLParser.OncommitoptionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttablespace. - def enterOpttablespace(self, ctx:PostgreSQLParser.OpttablespaceContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttablespace. - def exitOpttablespace(self, ctx:PostgreSQLParser.OpttablespaceContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optconstablespace. - def enterOptconstablespace(self, ctx:PostgreSQLParser.OptconstablespaceContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optconstablespace. - def exitOptconstablespace(self, ctx:PostgreSQLParser.OptconstablespaceContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#existingindex. - def enterExistingindex(self, ctx:PostgreSQLParser.ExistingindexContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#existingindex. - def exitExistingindex(self, ctx:PostgreSQLParser.ExistingindexContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createstatsstmt. - def enterCreatestatsstmt(self, ctx:PostgreSQLParser.CreatestatsstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createstatsstmt. - def exitCreatestatsstmt(self, ctx:PostgreSQLParser.CreatestatsstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterstatsstmt. - def enterAlterstatsstmt(self, ctx:PostgreSQLParser.AlterstatsstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterstatsstmt. - def exitAlterstatsstmt(self, ctx:PostgreSQLParser.AlterstatsstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createasstmt. - def enterCreateasstmt(self, ctx:PostgreSQLParser.CreateasstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createasstmt. - def exitCreateasstmt(self, ctx:PostgreSQLParser.CreateasstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#create_as_target. - def enterCreate_as_target(self, ctx:PostgreSQLParser.Create_as_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#create_as_target. - def exitCreate_as_target(self, ctx:PostgreSQLParser.Create_as_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_with_data. - def enterOpt_with_data(self, ctx:PostgreSQLParser.Opt_with_dataContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_with_data. - def exitOpt_with_data(self, ctx:PostgreSQLParser.Opt_with_dataContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#creatematviewstmt. - def enterCreatematviewstmt(self, ctx:PostgreSQLParser.CreatematviewstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#creatematviewstmt. - def exitCreatematviewstmt(self, ctx:PostgreSQLParser.CreatematviewstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#create_mv_target. - def enterCreate_mv_target(self, ctx:PostgreSQLParser.Create_mv_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#create_mv_target. - def exitCreate_mv_target(self, ctx:PostgreSQLParser.Create_mv_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optnolog. - def enterOptnolog(self, ctx:PostgreSQLParser.OptnologContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optnolog. - def exitOptnolog(self, ctx:PostgreSQLParser.OptnologContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#refreshmatviewstmt. - def enterRefreshmatviewstmt(self, ctx:PostgreSQLParser.RefreshmatviewstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#refreshmatviewstmt. - def exitRefreshmatviewstmt(self, ctx:PostgreSQLParser.RefreshmatviewstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createseqstmt. - def enterCreateseqstmt(self, ctx:PostgreSQLParser.CreateseqstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createseqstmt. - def exitCreateseqstmt(self, ctx:PostgreSQLParser.CreateseqstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterseqstmt. - def enterAlterseqstmt(self, ctx:PostgreSQLParser.AlterseqstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterseqstmt. - def exitAlterseqstmt(self, ctx:PostgreSQLParser.AlterseqstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optseqoptlist. - def enterOptseqoptlist(self, ctx:PostgreSQLParser.OptseqoptlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optseqoptlist. - def exitOptseqoptlist(self, ctx:PostgreSQLParser.OptseqoptlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optparenthesizedseqoptlist. - def enterOptparenthesizedseqoptlist(self, ctx:PostgreSQLParser.OptparenthesizedseqoptlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optparenthesizedseqoptlist. - def exitOptparenthesizedseqoptlist(self, ctx:PostgreSQLParser.OptparenthesizedseqoptlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#seqoptlist. - def enterSeqoptlist(self, ctx:PostgreSQLParser.SeqoptlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#seqoptlist. - def exitSeqoptlist(self, ctx:PostgreSQLParser.SeqoptlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#seqoptelem. - def enterSeqoptelem(self, ctx:PostgreSQLParser.SeqoptelemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#seqoptelem. - def exitSeqoptelem(self, ctx:PostgreSQLParser.SeqoptelemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_by. - def enterOpt_by(self, ctx:PostgreSQLParser.Opt_byContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_by. - def exitOpt_by(self, ctx:PostgreSQLParser.Opt_byContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#numericonly. - def enterNumericonly(self, ctx:PostgreSQLParser.NumericonlyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#numericonly. - def exitNumericonly(self, ctx:PostgreSQLParser.NumericonlyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#numericonly_list. - def enterNumericonly_list(self, ctx:PostgreSQLParser.Numericonly_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#numericonly_list. - def exitNumericonly_list(self, ctx:PostgreSQLParser.Numericonly_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createplangstmt. - def enterCreateplangstmt(self, ctx:PostgreSQLParser.CreateplangstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createplangstmt. - def exitCreateplangstmt(self, ctx:PostgreSQLParser.CreateplangstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_trusted. - def enterOpt_trusted(self, ctx:PostgreSQLParser.Opt_trustedContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_trusted. - def exitOpt_trusted(self, ctx:PostgreSQLParser.Opt_trustedContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#handler_name. - def enterHandler_name(self, ctx:PostgreSQLParser.Handler_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#handler_name. - def exitHandler_name(self, ctx:PostgreSQLParser.Handler_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_inline_handler. - def enterOpt_inline_handler(self, ctx:PostgreSQLParser.Opt_inline_handlerContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_inline_handler. - def exitOpt_inline_handler(self, ctx:PostgreSQLParser.Opt_inline_handlerContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#validator_clause. - def enterValidator_clause(self, ctx:PostgreSQLParser.Validator_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#validator_clause. - def exitValidator_clause(self, ctx:PostgreSQLParser.Validator_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_validator. - def enterOpt_validator(self, ctx:PostgreSQLParser.Opt_validatorContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_validator. - def exitOpt_validator(self, ctx:PostgreSQLParser.Opt_validatorContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_procedural. - def enterOpt_procedural(self, ctx:PostgreSQLParser.Opt_proceduralContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_procedural. - def exitOpt_procedural(self, ctx:PostgreSQLParser.Opt_proceduralContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createtablespacestmt. - def enterCreatetablespacestmt(self, ctx:PostgreSQLParser.CreatetablespacestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createtablespacestmt. - def exitCreatetablespacestmt(self, ctx:PostgreSQLParser.CreatetablespacestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttablespaceowner. - def enterOpttablespaceowner(self, ctx:PostgreSQLParser.OpttablespaceownerContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttablespaceowner. - def exitOpttablespaceowner(self, ctx:PostgreSQLParser.OpttablespaceownerContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#droptablespacestmt. - def enterDroptablespacestmt(self, ctx:PostgreSQLParser.DroptablespacestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#droptablespacestmt. - def exitDroptablespacestmt(self, ctx:PostgreSQLParser.DroptablespacestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createextensionstmt. - def enterCreateextensionstmt(self, ctx:PostgreSQLParser.CreateextensionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createextensionstmt. - def exitCreateextensionstmt(self, ctx:PostgreSQLParser.CreateextensionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#create_extension_opt_list. - def enterCreate_extension_opt_list(self, ctx:PostgreSQLParser.Create_extension_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#create_extension_opt_list. - def exitCreate_extension_opt_list(self, ctx:PostgreSQLParser.Create_extension_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#create_extension_opt_item. - def enterCreate_extension_opt_item(self, ctx:PostgreSQLParser.Create_extension_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#create_extension_opt_item. - def exitCreate_extension_opt_item(self, ctx:PostgreSQLParser.Create_extension_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterextensionstmt. - def enterAlterextensionstmt(self, ctx:PostgreSQLParser.AlterextensionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterextensionstmt. - def exitAlterextensionstmt(self, ctx:PostgreSQLParser.AlterextensionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_extension_opt_list. - def enterAlter_extension_opt_list(self, ctx:PostgreSQLParser.Alter_extension_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_extension_opt_list. - def exitAlter_extension_opt_list(self, ctx:PostgreSQLParser.Alter_extension_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_extension_opt_item. - def enterAlter_extension_opt_item(self, ctx:PostgreSQLParser.Alter_extension_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_extension_opt_item. - def exitAlter_extension_opt_item(self, ctx:PostgreSQLParser.Alter_extension_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterextensioncontentsstmt. - def enterAlterextensioncontentsstmt(self, ctx:PostgreSQLParser.AlterextensioncontentsstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterextensioncontentsstmt. - def exitAlterextensioncontentsstmt(self, ctx:PostgreSQLParser.AlterextensioncontentsstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createfdwstmt. - def enterCreatefdwstmt(self, ctx:PostgreSQLParser.CreatefdwstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createfdwstmt. - def exitCreatefdwstmt(self, ctx:PostgreSQLParser.CreatefdwstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#fdw_option. - def enterFdw_option(self, ctx:PostgreSQLParser.Fdw_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#fdw_option. - def exitFdw_option(self, ctx:PostgreSQLParser.Fdw_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#fdw_options. - def enterFdw_options(self, ctx:PostgreSQLParser.Fdw_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#fdw_options. - def exitFdw_options(self, ctx:PostgreSQLParser.Fdw_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_fdw_options. - def enterOpt_fdw_options(self, ctx:PostgreSQLParser.Opt_fdw_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_fdw_options. - def exitOpt_fdw_options(self, ctx:PostgreSQLParser.Opt_fdw_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterfdwstmt. - def enterAlterfdwstmt(self, ctx:PostgreSQLParser.AlterfdwstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterfdwstmt. - def exitAlterfdwstmt(self, ctx:PostgreSQLParser.AlterfdwstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#create_generic_options. - def enterCreate_generic_options(self, ctx:PostgreSQLParser.Create_generic_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#create_generic_options. - def exitCreate_generic_options(self, ctx:PostgreSQLParser.Create_generic_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_option_list. - def enterGeneric_option_list(self, ctx:PostgreSQLParser.Generic_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_option_list. - def exitGeneric_option_list(self, ctx:PostgreSQLParser.Generic_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_generic_options. - def enterAlter_generic_options(self, ctx:PostgreSQLParser.Alter_generic_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_generic_options. - def exitAlter_generic_options(self, ctx:PostgreSQLParser.Alter_generic_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_generic_option_list. - def enterAlter_generic_option_list(self, ctx:PostgreSQLParser.Alter_generic_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_generic_option_list. - def exitAlter_generic_option_list(self, ctx:PostgreSQLParser.Alter_generic_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alter_generic_option_elem. - def enterAlter_generic_option_elem(self, ctx:PostgreSQLParser.Alter_generic_option_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alter_generic_option_elem. - def exitAlter_generic_option_elem(self, ctx:PostgreSQLParser.Alter_generic_option_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_option_elem. - def enterGeneric_option_elem(self, ctx:PostgreSQLParser.Generic_option_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_option_elem. - def exitGeneric_option_elem(self, ctx:PostgreSQLParser.Generic_option_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_option_name. - def enterGeneric_option_name(self, ctx:PostgreSQLParser.Generic_option_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_option_name. - def exitGeneric_option_name(self, ctx:PostgreSQLParser.Generic_option_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generic_option_arg. - def enterGeneric_option_arg(self, ctx:PostgreSQLParser.Generic_option_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generic_option_arg. - def exitGeneric_option_arg(self, ctx:PostgreSQLParser.Generic_option_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createforeignserverstmt. - def enterCreateforeignserverstmt(self, ctx:PostgreSQLParser.CreateforeignserverstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createforeignserverstmt. - def exitCreateforeignserverstmt(self, ctx:PostgreSQLParser.CreateforeignserverstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_type. - def enterOpt_type(self, ctx:PostgreSQLParser.Opt_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_type. - def exitOpt_type(self, ctx:PostgreSQLParser.Opt_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#foreign_server_version. - def enterForeign_server_version(self, ctx:PostgreSQLParser.Foreign_server_versionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#foreign_server_version. - def exitForeign_server_version(self, ctx:PostgreSQLParser.Foreign_server_versionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_foreign_server_version. - def enterOpt_foreign_server_version(self, ctx:PostgreSQLParser.Opt_foreign_server_versionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_foreign_server_version. - def exitOpt_foreign_server_version(self, ctx:PostgreSQLParser.Opt_foreign_server_versionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterforeignserverstmt. - def enterAlterforeignserverstmt(self, ctx:PostgreSQLParser.AlterforeignserverstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterforeignserverstmt. - def exitAlterforeignserverstmt(self, ctx:PostgreSQLParser.AlterforeignserverstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createforeigntablestmt. - def enterCreateforeigntablestmt(self, ctx:PostgreSQLParser.CreateforeigntablestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createforeigntablestmt. - def exitCreateforeigntablestmt(self, ctx:PostgreSQLParser.CreateforeigntablestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#importforeignschemastmt. - def enterImportforeignschemastmt(self, ctx:PostgreSQLParser.ImportforeignschemastmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#importforeignschemastmt. - def exitImportforeignschemastmt(self, ctx:PostgreSQLParser.ImportforeignschemastmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#import_qualification_type. - def enterImport_qualification_type(self, ctx:PostgreSQLParser.Import_qualification_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#import_qualification_type. - def exitImport_qualification_type(self, ctx:PostgreSQLParser.Import_qualification_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#import_qualification. - def enterImport_qualification(self, ctx:PostgreSQLParser.Import_qualificationContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#import_qualification. - def exitImport_qualification(self, ctx:PostgreSQLParser.Import_qualificationContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createusermappingstmt. - def enterCreateusermappingstmt(self, ctx:PostgreSQLParser.CreateusermappingstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createusermappingstmt. - def exitCreateusermappingstmt(self, ctx:PostgreSQLParser.CreateusermappingstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#auth_ident. - def enterAuth_ident(self, ctx:PostgreSQLParser.Auth_identContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#auth_ident. - def exitAuth_ident(self, ctx:PostgreSQLParser.Auth_identContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropusermappingstmt. - def enterDropusermappingstmt(self, ctx:PostgreSQLParser.DropusermappingstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropusermappingstmt. - def exitDropusermappingstmt(self, ctx:PostgreSQLParser.DropusermappingstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterusermappingstmt. - def enterAlterusermappingstmt(self, ctx:PostgreSQLParser.AlterusermappingstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterusermappingstmt. - def exitAlterusermappingstmt(self, ctx:PostgreSQLParser.AlterusermappingstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createpolicystmt. - def enterCreatepolicystmt(self, ctx:PostgreSQLParser.CreatepolicystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createpolicystmt. - def exitCreatepolicystmt(self, ctx:PostgreSQLParser.CreatepolicystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterpolicystmt. - def enterAlterpolicystmt(self, ctx:PostgreSQLParser.AlterpolicystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterpolicystmt. - def exitAlterpolicystmt(self, ctx:PostgreSQLParser.AlterpolicystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecurityoptionalexpr. - def enterRowsecurityoptionalexpr(self, ctx:PostgreSQLParser.RowsecurityoptionalexprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecurityoptionalexpr. - def exitRowsecurityoptionalexpr(self, ctx:PostgreSQLParser.RowsecurityoptionalexprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecurityoptionalwithcheck. - def enterRowsecurityoptionalwithcheck(self, ctx:PostgreSQLParser.RowsecurityoptionalwithcheckContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecurityoptionalwithcheck. - def exitRowsecurityoptionalwithcheck(self, ctx:PostgreSQLParser.RowsecurityoptionalwithcheckContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecuritydefaulttorole. - def enterRowsecuritydefaulttorole(self, ctx:PostgreSQLParser.RowsecuritydefaulttoroleContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecuritydefaulttorole. - def exitRowsecuritydefaulttorole(self, ctx:PostgreSQLParser.RowsecuritydefaulttoroleContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecurityoptionaltorole. - def enterRowsecurityoptionaltorole(self, ctx:PostgreSQLParser.RowsecurityoptionaltoroleContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecurityoptionaltorole. - def exitRowsecurityoptionaltorole(self, ctx:PostgreSQLParser.RowsecurityoptionaltoroleContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecuritydefaultpermissive. - def enterRowsecuritydefaultpermissive(self, ctx:PostgreSQLParser.RowsecuritydefaultpermissiveContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecuritydefaultpermissive. - def exitRowsecuritydefaultpermissive(self, ctx:PostgreSQLParser.RowsecuritydefaultpermissiveContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsecuritydefaultforcmd. - def enterRowsecuritydefaultforcmd(self, ctx:PostgreSQLParser.RowsecuritydefaultforcmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsecuritydefaultforcmd. - def exitRowsecuritydefaultforcmd(self, ctx:PostgreSQLParser.RowsecuritydefaultforcmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#row_security_cmd. - def enterRow_security_cmd(self, ctx:PostgreSQLParser.Row_security_cmdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#row_security_cmd. - def exitRow_security_cmd(self, ctx:PostgreSQLParser.Row_security_cmdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createamstmt. - def enterCreateamstmt(self, ctx:PostgreSQLParser.CreateamstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createamstmt. - def exitCreateamstmt(self, ctx:PostgreSQLParser.CreateamstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#am_type. - def enterAm_type(self, ctx:PostgreSQLParser.Am_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#am_type. - def exitAm_type(self, ctx:PostgreSQLParser.Am_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createtrigstmt. - def enterCreatetrigstmt(self, ctx:PostgreSQLParser.CreatetrigstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createtrigstmt. - def exitCreatetrigstmt(self, ctx:PostgreSQLParser.CreatetrigstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggeractiontime. - def enterTriggeractiontime(self, ctx:PostgreSQLParser.TriggeractiontimeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggeractiontime. - def exitTriggeractiontime(self, ctx:PostgreSQLParser.TriggeractiontimeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerevents. - def enterTriggerevents(self, ctx:PostgreSQLParser.TriggereventsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerevents. - def exitTriggerevents(self, ctx:PostgreSQLParser.TriggereventsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggeroneevent. - def enterTriggeroneevent(self, ctx:PostgreSQLParser.TriggeroneeventContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggeroneevent. - def exitTriggeroneevent(self, ctx:PostgreSQLParser.TriggeroneeventContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerreferencing. - def enterTriggerreferencing(self, ctx:PostgreSQLParser.TriggerreferencingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerreferencing. - def exitTriggerreferencing(self, ctx:PostgreSQLParser.TriggerreferencingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggertransitions. - def enterTriggertransitions(self, ctx:PostgreSQLParser.TriggertransitionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggertransitions. - def exitTriggertransitions(self, ctx:PostgreSQLParser.TriggertransitionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggertransition. - def enterTriggertransition(self, ctx:PostgreSQLParser.TriggertransitionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggertransition. - def exitTriggertransition(self, ctx:PostgreSQLParser.TriggertransitionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transitionoldornew. - def enterTransitionoldornew(self, ctx:PostgreSQLParser.TransitionoldornewContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transitionoldornew. - def exitTransitionoldornew(self, ctx:PostgreSQLParser.TransitionoldornewContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transitionrowortable. - def enterTransitionrowortable(self, ctx:PostgreSQLParser.TransitionrowortableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transitionrowortable. - def exitTransitionrowortable(self, ctx:PostgreSQLParser.TransitionrowortableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transitionrelname. - def enterTransitionrelname(self, ctx:PostgreSQLParser.TransitionrelnameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transitionrelname. - def exitTransitionrelname(self, ctx:PostgreSQLParser.TransitionrelnameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerforspec. - def enterTriggerforspec(self, ctx:PostgreSQLParser.TriggerforspecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerforspec. - def exitTriggerforspec(self, ctx:PostgreSQLParser.TriggerforspecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerforopteach. - def enterTriggerforopteach(self, ctx:PostgreSQLParser.TriggerforopteachContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerforopteach. - def exitTriggerforopteach(self, ctx:PostgreSQLParser.TriggerforopteachContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerfortype. - def enterTriggerfortype(self, ctx:PostgreSQLParser.TriggerfortypeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerfortype. - def exitTriggerfortype(self, ctx:PostgreSQLParser.TriggerfortypeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerwhen. - def enterTriggerwhen(self, ctx:PostgreSQLParser.TriggerwhenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerwhen. - def exitTriggerwhen(self, ctx:PostgreSQLParser.TriggerwhenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#function_or_procedure. - def enterFunction_or_procedure(self, ctx:PostgreSQLParser.Function_or_procedureContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#function_or_procedure. - def exitFunction_or_procedure(self, ctx:PostgreSQLParser.Function_or_procedureContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerfuncargs. - def enterTriggerfuncargs(self, ctx:PostgreSQLParser.TriggerfuncargsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerfuncargs. - def exitTriggerfuncargs(self, ctx:PostgreSQLParser.TriggerfuncargsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#triggerfuncarg. - def enterTriggerfuncarg(self, ctx:PostgreSQLParser.TriggerfuncargContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#triggerfuncarg. - def exitTriggerfuncarg(self, ctx:PostgreSQLParser.TriggerfuncargContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#optconstrfromtable. - def enterOptconstrfromtable(self, ctx:PostgreSQLParser.OptconstrfromtableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#optconstrfromtable. - def exitOptconstrfromtable(self, ctx:PostgreSQLParser.OptconstrfromtableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraintattributespec. - def enterConstraintattributespec(self, ctx:PostgreSQLParser.ConstraintattributespecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraintattributespec. - def exitConstraintattributespec(self, ctx:PostgreSQLParser.ConstraintattributespecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constraintattributeElem. - def enterConstraintattributeElem(self, ctx:PostgreSQLParser.ConstraintattributeElemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constraintattributeElem. - def exitConstraintattributeElem(self, ctx:PostgreSQLParser.ConstraintattributeElemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createeventtrigstmt. - def enterCreateeventtrigstmt(self, ctx:PostgreSQLParser.CreateeventtrigstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createeventtrigstmt. - def exitCreateeventtrigstmt(self, ctx:PostgreSQLParser.CreateeventtrigstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#event_trigger_when_list. - def enterEvent_trigger_when_list(self, ctx:PostgreSQLParser.Event_trigger_when_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#event_trigger_when_list. - def exitEvent_trigger_when_list(self, ctx:PostgreSQLParser.Event_trigger_when_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#event_trigger_when_item. - def enterEvent_trigger_when_item(self, ctx:PostgreSQLParser.Event_trigger_when_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#event_trigger_when_item. - def exitEvent_trigger_when_item(self, ctx:PostgreSQLParser.Event_trigger_when_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#event_trigger_value_list. - def enterEvent_trigger_value_list(self, ctx:PostgreSQLParser.Event_trigger_value_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#event_trigger_value_list. - def exitEvent_trigger_value_list(self, ctx:PostgreSQLParser.Event_trigger_value_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altereventtrigstmt. - def enterAltereventtrigstmt(self, ctx:PostgreSQLParser.AltereventtrigstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altereventtrigstmt. - def exitAltereventtrigstmt(self, ctx:PostgreSQLParser.AltereventtrigstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#enable_trigger. - def enterEnable_trigger(self, ctx:PostgreSQLParser.Enable_triggerContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#enable_trigger. - def exitEnable_trigger(self, ctx:PostgreSQLParser.Enable_triggerContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createassertionstmt. - def enterCreateassertionstmt(self, ctx:PostgreSQLParser.CreateassertionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createassertionstmt. - def exitCreateassertionstmt(self, ctx:PostgreSQLParser.CreateassertionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#definestmt. - def enterDefinestmt(self, ctx:PostgreSQLParser.DefinestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#definestmt. - def exitDefinestmt(self, ctx:PostgreSQLParser.DefinestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#definition. - def enterDefinition(self, ctx:PostgreSQLParser.DefinitionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#definition. - def exitDefinition(self, ctx:PostgreSQLParser.DefinitionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#def_list. - def enterDef_list(self, ctx:PostgreSQLParser.Def_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#def_list. - def exitDef_list(self, ctx:PostgreSQLParser.Def_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#def_elem. - def enterDef_elem(self, ctx:PostgreSQLParser.Def_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#def_elem. - def exitDef_elem(self, ctx:PostgreSQLParser.Def_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#def_arg. - def enterDef_arg(self, ctx:PostgreSQLParser.Def_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#def_arg. - def exitDef_arg(self, ctx:PostgreSQLParser.Def_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#old_aggr_definition. - def enterOld_aggr_definition(self, ctx:PostgreSQLParser.Old_aggr_definitionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#old_aggr_definition. - def exitOld_aggr_definition(self, ctx:PostgreSQLParser.Old_aggr_definitionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#old_aggr_list. - def enterOld_aggr_list(self, ctx:PostgreSQLParser.Old_aggr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#old_aggr_list. - def exitOld_aggr_list(self, ctx:PostgreSQLParser.Old_aggr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#old_aggr_elem. - def enterOld_aggr_elem(self, ctx:PostgreSQLParser.Old_aggr_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#old_aggr_elem. - def exitOld_aggr_elem(self, ctx:PostgreSQLParser.Old_aggr_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_enum_val_list. - def enterOpt_enum_val_list(self, ctx:PostgreSQLParser.Opt_enum_val_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_enum_val_list. - def exitOpt_enum_val_list(self, ctx:PostgreSQLParser.Opt_enum_val_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#enum_val_list. - def enterEnum_val_list(self, ctx:PostgreSQLParser.Enum_val_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#enum_val_list. - def exitEnum_val_list(self, ctx:PostgreSQLParser.Enum_val_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterenumstmt. - def enterAlterenumstmt(self, ctx:PostgreSQLParser.AlterenumstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterenumstmt. - def exitAlterenumstmt(self, ctx:PostgreSQLParser.AlterenumstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_if_not_exists. - def enterOpt_if_not_exists(self, ctx:PostgreSQLParser.Opt_if_not_existsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_if_not_exists. - def exitOpt_if_not_exists(self, ctx:PostgreSQLParser.Opt_if_not_existsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createopclassstmt. - def enterCreateopclassstmt(self, ctx:PostgreSQLParser.CreateopclassstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createopclassstmt. - def exitCreateopclassstmt(self, ctx:PostgreSQLParser.CreateopclassstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opclass_item_list. - def enterOpclass_item_list(self, ctx:PostgreSQLParser.Opclass_item_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opclass_item_list. - def exitOpclass_item_list(self, ctx:PostgreSQLParser.Opclass_item_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opclass_item. - def enterOpclass_item(self, ctx:PostgreSQLParser.Opclass_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opclass_item. - def exitOpclass_item(self, ctx:PostgreSQLParser.Opclass_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_default. - def enterOpt_default(self, ctx:PostgreSQLParser.Opt_defaultContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_default. - def exitOpt_default(self, ctx:PostgreSQLParser.Opt_defaultContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_opfamily. - def enterOpt_opfamily(self, ctx:PostgreSQLParser.Opt_opfamilyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_opfamily. - def exitOpt_opfamily(self, ctx:PostgreSQLParser.Opt_opfamilyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opclass_purpose. - def enterOpclass_purpose(self, ctx:PostgreSQLParser.Opclass_purposeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opclass_purpose. - def exitOpclass_purpose(self, ctx:PostgreSQLParser.Opclass_purposeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_recheck. - def enterOpt_recheck(self, ctx:PostgreSQLParser.Opt_recheckContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_recheck. - def exitOpt_recheck(self, ctx:PostgreSQLParser.Opt_recheckContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createopfamilystmt. - def enterCreateopfamilystmt(self, ctx:PostgreSQLParser.CreateopfamilystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createopfamilystmt. - def exitCreateopfamilystmt(self, ctx:PostgreSQLParser.CreateopfamilystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alteropfamilystmt. - def enterAlteropfamilystmt(self, ctx:PostgreSQLParser.AlteropfamilystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alteropfamilystmt. - def exitAlteropfamilystmt(self, ctx:PostgreSQLParser.AlteropfamilystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opclass_drop_list. - def enterOpclass_drop_list(self, ctx:PostgreSQLParser.Opclass_drop_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opclass_drop_list. - def exitOpclass_drop_list(self, ctx:PostgreSQLParser.Opclass_drop_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opclass_drop. - def enterOpclass_drop(self, ctx:PostgreSQLParser.Opclass_dropContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opclass_drop. - def exitOpclass_drop(self, ctx:PostgreSQLParser.Opclass_dropContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropopclassstmt. - def enterDropopclassstmt(self, ctx:PostgreSQLParser.DropopclassstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropopclassstmt. - def exitDropopclassstmt(self, ctx:PostgreSQLParser.DropopclassstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropopfamilystmt. - def enterDropopfamilystmt(self, ctx:PostgreSQLParser.DropopfamilystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropopfamilystmt. - def exitDropopfamilystmt(self, ctx:PostgreSQLParser.DropopfamilystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropownedstmt. - def enterDropownedstmt(self, ctx:PostgreSQLParser.DropownedstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropownedstmt. - def exitDropownedstmt(self, ctx:PostgreSQLParser.DropownedstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reassignownedstmt. - def enterReassignownedstmt(self, ctx:PostgreSQLParser.ReassignownedstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reassignownedstmt. - def exitReassignownedstmt(self, ctx:PostgreSQLParser.ReassignownedstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropstmt. - def enterDropstmt(self, ctx:PostgreSQLParser.DropstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropstmt. - def exitDropstmt(self, ctx:PostgreSQLParser.DropstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#object_type_any_name. - def enterObject_type_any_name(self, ctx:PostgreSQLParser.Object_type_any_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#object_type_any_name. - def exitObject_type_any_name(self, ctx:PostgreSQLParser.Object_type_any_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#object_type_name. - def enterObject_type_name(self, ctx:PostgreSQLParser.Object_type_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#object_type_name. - def exitObject_type_name(self, ctx:PostgreSQLParser.Object_type_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#drop_type_name. - def enterDrop_type_name(self, ctx:PostgreSQLParser.Drop_type_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#drop_type_name. - def exitDrop_type_name(self, ctx:PostgreSQLParser.Drop_type_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#object_type_name_on_any_name. - def enterObject_type_name_on_any_name(self, ctx:PostgreSQLParser.Object_type_name_on_any_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#object_type_name_on_any_name. - def exitObject_type_name_on_any_name(self, ctx:PostgreSQLParser.Object_type_name_on_any_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#any_name_list. - def enterAny_name_list(self, ctx:PostgreSQLParser.Any_name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#any_name_list. - def exitAny_name_list(self, ctx:PostgreSQLParser.Any_name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#any_name. - def enterAny_name(self, ctx:PostgreSQLParser.Any_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#any_name. - def exitAny_name(self, ctx:PostgreSQLParser.Any_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#attrs. - def enterAttrs(self, ctx:PostgreSQLParser.AttrsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#attrs. - def exitAttrs(self, ctx:PostgreSQLParser.AttrsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#type_name_list. - def enterType_name_list(self, ctx:PostgreSQLParser.Type_name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#type_name_list. - def exitType_name_list(self, ctx:PostgreSQLParser.Type_name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#truncatestmt. - def enterTruncatestmt(self, ctx:PostgreSQLParser.TruncatestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#truncatestmt. - def exitTruncatestmt(self, ctx:PostgreSQLParser.TruncatestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_restart_seqs. - def enterOpt_restart_seqs(self, ctx:PostgreSQLParser.Opt_restart_seqsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_restart_seqs. - def exitOpt_restart_seqs(self, ctx:PostgreSQLParser.Opt_restart_seqsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#commentstmt. - def enterCommentstmt(self, ctx:PostgreSQLParser.CommentstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#commentstmt. - def exitCommentstmt(self, ctx:PostgreSQLParser.CommentstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#comment_text. - def enterComment_text(self, ctx:PostgreSQLParser.Comment_textContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#comment_text. - def exitComment_text(self, ctx:PostgreSQLParser.Comment_textContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#seclabelstmt. - def enterSeclabelstmt(self, ctx:PostgreSQLParser.SeclabelstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#seclabelstmt. - def exitSeclabelstmt(self, ctx:PostgreSQLParser.SeclabelstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_provider. - def enterOpt_provider(self, ctx:PostgreSQLParser.Opt_providerContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_provider. - def exitOpt_provider(self, ctx:PostgreSQLParser.Opt_providerContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#security_label. - def enterSecurity_label(self, ctx:PostgreSQLParser.Security_labelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#security_label. - def exitSecurity_label(self, ctx:PostgreSQLParser.Security_labelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#fetchstmt. - def enterFetchstmt(self, ctx:PostgreSQLParser.FetchstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#fetchstmt. - def exitFetchstmt(self, ctx:PostgreSQLParser.FetchstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#fetch_args. - def enterFetch_args(self, ctx:PostgreSQLParser.Fetch_argsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#fetch_args. - def exitFetch_args(self, ctx:PostgreSQLParser.Fetch_argsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#from_in. - def enterFrom_in(self, ctx:PostgreSQLParser.From_inContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#from_in. - def exitFrom_in(self, ctx:PostgreSQLParser.From_inContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_from_in. - def enterOpt_from_in(self, ctx:PostgreSQLParser.Opt_from_inContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_from_in. - def exitOpt_from_in(self, ctx:PostgreSQLParser.Opt_from_inContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#grantstmt. - def enterGrantstmt(self, ctx:PostgreSQLParser.GrantstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#grantstmt. - def exitGrantstmt(self, ctx:PostgreSQLParser.GrantstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#revokestmt. - def enterRevokestmt(self, ctx:PostgreSQLParser.RevokestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#revokestmt. - def exitRevokestmt(self, ctx:PostgreSQLParser.RevokestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#privileges. - def enterPrivileges(self, ctx:PostgreSQLParser.PrivilegesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#privileges. - def exitPrivileges(self, ctx:PostgreSQLParser.PrivilegesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#privilege_list. - def enterPrivilege_list(self, ctx:PostgreSQLParser.Privilege_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#privilege_list. - def exitPrivilege_list(self, ctx:PostgreSQLParser.Privilege_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#privilege. - def enterPrivilege(self, ctx:PostgreSQLParser.PrivilegeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#privilege. - def exitPrivilege(self, ctx:PostgreSQLParser.PrivilegeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#privilege_target. - def enterPrivilege_target(self, ctx:PostgreSQLParser.Privilege_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#privilege_target. - def exitPrivilege_target(self, ctx:PostgreSQLParser.Privilege_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#grantee_list. - def enterGrantee_list(self, ctx:PostgreSQLParser.Grantee_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#grantee_list. - def exitGrantee_list(self, ctx:PostgreSQLParser.Grantee_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#grantee. - def enterGrantee(self, ctx:PostgreSQLParser.GranteeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#grantee. - def exitGrantee(self, ctx:PostgreSQLParser.GranteeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_grant_grant_option. - def enterOpt_grant_grant_option(self, ctx:PostgreSQLParser.Opt_grant_grant_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_grant_grant_option. - def exitOpt_grant_grant_option(self, ctx:PostgreSQLParser.Opt_grant_grant_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#grantrolestmt. - def enterGrantrolestmt(self, ctx:PostgreSQLParser.GrantrolestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#grantrolestmt. - def exitGrantrolestmt(self, ctx:PostgreSQLParser.GrantrolestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#revokerolestmt. - def enterRevokerolestmt(self, ctx:PostgreSQLParser.RevokerolestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#revokerolestmt. - def exitRevokerolestmt(self, ctx:PostgreSQLParser.RevokerolestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_grant_admin_option. - def enterOpt_grant_admin_option(self, ctx:PostgreSQLParser.Opt_grant_admin_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_grant_admin_option. - def exitOpt_grant_admin_option(self, ctx:PostgreSQLParser.Opt_grant_admin_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_granted_by. - def enterOpt_granted_by(self, ctx:PostgreSQLParser.Opt_granted_byContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_granted_by. - def exitOpt_granted_by(self, ctx:PostgreSQLParser.Opt_granted_byContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterdefaultprivilegesstmt. - def enterAlterdefaultprivilegesstmt(self, ctx:PostgreSQLParser.AlterdefaultprivilegesstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterdefaultprivilegesstmt. - def exitAlterdefaultprivilegesstmt(self, ctx:PostgreSQLParser.AlterdefaultprivilegesstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#defacloptionlist. - def enterDefacloptionlist(self, ctx:PostgreSQLParser.DefacloptionlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#defacloptionlist. - def exitDefacloptionlist(self, ctx:PostgreSQLParser.DefacloptionlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#defacloption. - def enterDefacloption(self, ctx:PostgreSQLParser.DefacloptionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#defacloption. - def exitDefacloption(self, ctx:PostgreSQLParser.DefacloptionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#defaclaction. - def enterDefaclaction(self, ctx:PostgreSQLParser.DefaclactionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#defaclaction. - def exitDefaclaction(self, ctx:PostgreSQLParser.DefaclactionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#defacl_privilege_target. - def enterDefacl_privilege_target(self, ctx:PostgreSQLParser.Defacl_privilege_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#defacl_privilege_target. - def exitDefacl_privilege_target(self, ctx:PostgreSQLParser.Defacl_privilege_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#indexstmt. - def enterIndexstmt(self, ctx:PostgreSQLParser.IndexstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#indexstmt. - def exitIndexstmt(self, ctx:PostgreSQLParser.IndexstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_unique. - def enterOpt_unique(self, ctx:PostgreSQLParser.Opt_uniqueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_unique. - def exitOpt_unique(self, ctx:PostgreSQLParser.Opt_uniqueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_concurrently. - def enterOpt_concurrently(self, ctx:PostgreSQLParser.Opt_concurrentlyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_concurrently. - def exitOpt_concurrently(self, ctx:PostgreSQLParser.Opt_concurrentlyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_index_name. - def enterOpt_index_name(self, ctx:PostgreSQLParser.Opt_index_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_index_name. - def exitOpt_index_name(self, ctx:PostgreSQLParser.Opt_index_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#access_method_clause. - def enterAccess_method_clause(self, ctx:PostgreSQLParser.Access_method_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#access_method_clause. - def exitAccess_method_clause(self, ctx:PostgreSQLParser.Access_method_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#index_params. - def enterIndex_params(self, ctx:PostgreSQLParser.Index_paramsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#index_params. - def exitIndex_params(self, ctx:PostgreSQLParser.Index_paramsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#index_elem_options. - def enterIndex_elem_options(self, ctx:PostgreSQLParser.Index_elem_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#index_elem_options. - def exitIndex_elem_options(self, ctx:PostgreSQLParser.Index_elem_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#index_elem. - def enterIndex_elem(self, ctx:PostgreSQLParser.Index_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#index_elem. - def exitIndex_elem(self, ctx:PostgreSQLParser.Index_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_include. - def enterOpt_include(self, ctx:PostgreSQLParser.Opt_includeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_include. - def exitOpt_include(self, ctx:PostgreSQLParser.Opt_includeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#index_including_params. - def enterIndex_including_params(self, ctx:PostgreSQLParser.Index_including_paramsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#index_including_params. - def exitIndex_including_params(self, ctx:PostgreSQLParser.Index_including_paramsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_collate. - def enterOpt_collate(self, ctx:PostgreSQLParser.Opt_collateContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_collate. - def exitOpt_collate(self, ctx:PostgreSQLParser.Opt_collateContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_class. - def enterOpt_class(self, ctx:PostgreSQLParser.Opt_classContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_class. - def exitOpt_class(self, ctx:PostgreSQLParser.Opt_classContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_asc_desc. - def enterOpt_asc_desc(self, ctx:PostgreSQLParser.Opt_asc_descContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_asc_desc. - def exitOpt_asc_desc(self, ctx:PostgreSQLParser.Opt_asc_descContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_nulls_order. - def enterOpt_nulls_order(self, ctx:PostgreSQLParser.Opt_nulls_orderContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_nulls_order. - def exitOpt_nulls_order(self, ctx:PostgreSQLParser.Opt_nulls_orderContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createfunctionstmt. - def enterCreatefunctionstmt(self, ctx:PostgreSQLParser.CreatefunctionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createfunctionstmt. - def exitCreatefunctionstmt(self, ctx:PostgreSQLParser.CreatefunctionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_or_replace. - def enterOpt_or_replace(self, ctx:PostgreSQLParser.Opt_or_replaceContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_or_replace. - def exitOpt_or_replace(self, ctx:PostgreSQLParser.Opt_or_replaceContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_args. - def enterFunc_args(self, ctx:PostgreSQLParser.Func_argsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_args. - def exitFunc_args(self, ctx:PostgreSQLParser.Func_argsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_args_list. - def enterFunc_args_list(self, ctx:PostgreSQLParser.Func_args_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_args_list. - def exitFunc_args_list(self, ctx:PostgreSQLParser.Func_args_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#function_with_argtypes_list. - def enterFunction_with_argtypes_list(self, ctx:PostgreSQLParser.Function_with_argtypes_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#function_with_argtypes_list. - def exitFunction_with_argtypes_list(self, ctx:PostgreSQLParser.Function_with_argtypes_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#function_with_argtypes. - def enterFunction_with_argtypes(self, ctx:PostgreSQLParser.Function_with_argtypesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#function_with_argtypes. - def exitFunction_with_argtypes(self, ctx:PostgreSQLParser.Function_with_argtypesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_args_with_defaults. - def enterFunc_args_with_defaults(self, ctx:PostgreSQLParser.Func_args_with_defaultsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_args_with_defaults. - def exitFunc_args_with_defaults(self, ctx:PostgreSQLParser.Func_args_with_defaultsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_args_with_defaults_list. - def enterFunc_args_with_defaults_list(self, ctx:PostgreSQLParser.Func_args_with_defaults_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_args_with_defaults_list. - def exitFunc_args_with_defaults_list(self, ctx:PostgreSQLParser.Func_args_with_defaults_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_arg. - def enterFunc_arg(self, ctx:PostgreSQLParser.Func_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_arg. - def exitFunc_arg(self, ctx:PostgreSQLParser.Func_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#arg_class. - def enterArg_class(self, ctx:PostgreSQLParser.Arg_classContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#arg_class. - def exitArg_class(self, ctx:PostgreSQLParser.Arg_classContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#param_name. - def enterParam_name(self, ctx:PostgreSQLParser.Param_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#param_name. - def exitParam_name(self, ctx:PostgreSQLParser.Param_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_return. - def enterFunc_return(self, ctx:PostgreSQLParser.Func_returnContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_return. - def exitFunc_return(self, ctx:PostgreSQLParser.Func_returnContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_type. - def enterFunc_type(self, ctx:PostgreSQLParser.Func_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_type. - def exitFunc_type(self, ctx:PostgreSQLParser.Func_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_arg_with_default. - def enterFunc_arg_with_default(self, ctx:PostgreSQLParser.Func_arg_with_defaultContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_arg_with_default. - def exitFunc_arg_with_default(self, ctx:PostgreSQLParser.Func_arg_with_defaultContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aggr_arg. - def enterAggr_arg(self, ctx:PostgreSQLParser.Aggr_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aggr_arg. - def exitAggr_arg(self, ctx:PostgreSQLParser.Aggr_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aggr_args. - def enterAggr_args(self, ctx:PostgreSQLParser.Aggr_argsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aggr_args. - def exitAggr_args(self, ctx:PostgreSQLParser.Aggr_argsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aggr_args_list. - def enterAggr_args_list(self, ctx:PostgreSQLParser.Aggr_args_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aggr_args_list. - def exitAggr_args_list(self, ctx:PostgreSQLParser.Aggr_args_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aggregate_with_argtypes. - def enterAggregate_with_argtypes(self, ctx:PostgreSQLParser.Aggregate_with_argtypesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aggregate_with_argtypes. - def exitAggregate_with_argtypes(self, ctx:PostgreSQLParser.Aggregate_with_argtypesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aggregate_with_argtypes_list. - def enterAggregate_with_argtypes_list(self, ctx:PostgreSQLParser.Aggregate_with_argtypes_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aggregate_with_argtypes_list. - def exitAggregate_with_argtypes_list(self, ctx:PostgreSQLParser.Aggregate_with_argtypes_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createfunc_opt_list. - def enterCreatefunc_opt_list(self, ctx:PostgreSQLParser.Createfunc_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createfunc_opt_list. - def exitCreatefunc_opt_list(self, ctx:PostgreSQLParser.Createfunc_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#common_func_opt_item. - def enterCommon_func_opt_item(self, ctx:PostgreSQLParser.Common_func_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#common_func_opt_item. - def exitCommon_func_opt_item(self, ctx:PostgreSQLParser.Common_func_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createfunc_opt_item. - def enterCreatefunc_opt_item(self, ctx:PostgreSQLParser.Createfunc_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createfunc_opt_item. - def exitCreatefunc_opt_item(self, ctx:PostgreSQLParser.Createfunc_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_as. - def enterFunc_as(self, ctx:PostgreSQLParser.Func_asContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_as. - def exitFunc_as(self, ctx:PostgreSQLParser.Func_asContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transform_type_list. - def enterTransform_type_list(self, ctx:PostgreSQLParser.Transform_type_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transform_type_list. - def exitTransform_type_list(self, ctx:PostgreSQLParser.Transform_type_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_definition. - def enterOpt_definition(self, ctx:PostgreSQLParser.Opt_definitionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_definition. - def exitOpt_definition(self, ctx:PostgreSQLParser.Opt_definitionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_func_column. - def enterTable_func_column(self, ctx:PostgreSQLParser.Table_func_columnContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_func_column. - def exitTable_func_column(self, ctx:PostgreSQLParser.Table_func_columnContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_func_column_list. - def enterTable_func_column_list(self, ctx:PostgreSQLParser.Table_func_column_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_func_column_list. - def exitTable_func_column_list(self, ctx:PostgreSQLParser.Table_func_column_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterfunctionstmt. - def enterAlterfunctionstmt(self, ctx:PostgreSQLParser.AlterfunctionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterfunctionstmt. - def exitAlterfunctionstmt(self, ctx:PostgreSQLParser.AlterfunctionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterfunc_opt_list. - def enterAlterfunc_opt_list(self, ctx:PostgreSQLParser.Alterfunc_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterfunc_opt_list. - def exitAlterfunc_opt_list(self, ctx:PostgreSQLParser.Alterfunc_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_restrict. - def enterOpt_restrict(self, ctx:PostgreSQLParser.Opt_restrictContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_restrict. - def exitOpt_restrict(self, ctx:PostgreSQLParser.Opt_restrictContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#removefuncstmt. - def enterRemovefuncstmt(self, ctx:PostgreSQLParser.RemovefuncstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#removefuncstmt. - def exitRemovefuncstmt(self, ctx:PostgreSQLParser.RemovefuncstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#removeaggrstmt. - def enterRemoveaggrstmt(self, ctx:PostgreSQLParser.RemoveaggrstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#removeaggrstmt. - def exitRemoveaggrstmt(self, ctx:PostgreSQLParser.RemoveaggrstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#removeoperstmt. - def enterRemoveoperstmt(self, ctx:PostgreSQLParser.RemoveoperstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#removeoperstmt. - def exitRemoveoperstmt(self, ctx:PostgreSQLParser.RemoveoperstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#oper_argtypes. - def enterOper_argtypes(self, ctx:PostgreSQLParser.Oper_argtypesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#oper_argtypes. - def exitOper_argtypes(self, ctx:PostgreSQLParser.Oper_argtypesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#any_operator. - def enterAny_operator(self, ctx:PostgreSQLParser.Any_operatorContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#any_operator. - def exitAny_operator(self, ctx:PostgreSQLParser.Any_operatorContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#operator_with_argtypes_list. - def enterOperator_with_argtypes_list(self, ctx:PostgreSQLParser.Operator_with_argtypes_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#operator_with_argtypes_list. - def exitOperator_with_argtypes_list(self, ctx:PostgreSQLParser.Operator_with_argtypes_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#operator_with_argtypes. - def enterOperator_with_argtypes(self, ctx:PostgreSQLParser.Operator_with_argtypesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#operator_with_argtypes. - def exitOperator_with_argtypes(self, ctx:PostgreSQLParser.Operator_with_argtypesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dostmt. - def enterDostmt(self, ctx:PostgreSQLParser.DostmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dostmt. - def exitDostmt(self, ctx:PostgreSQLParser.DostmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dostmt_opt_list. - def enterDostmt_opt_list(self, ctx:PostgreSQLParser.Dostmt_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dostmt_opt_list. - def exitDostmt_opt_list(self, ctx:PostgreSQLParser.Dostmt_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dostmt_opt_item. - def enterDostmt_opt_item(self, ctx:PostgreSQLParser.Dostmt_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dostmt_opt_item. - def exitDostmt_opt_item(self, ctx:PostgreSQLParser.Dostmt_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createcaststmt. - def enterCreatecaststmt(self, ctx:PostgreSQLParser.CreatecaststmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createcaststmt. - def exitCreatecaststmt(self, ctx:PostgreSQLParser.CreatecaststmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cast_context. - def enterCast_context(self, ctx:PostgreSQLParser.Cast_contextContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cast_context. - def exitCast_context(self, ctx:PostgreSQLParser.Cast_contextContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropcaststmt. - def enterDropcaststmt(self, ctx:PostgreSQLParser.DropcaststmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropcaststmt. - def exitDropcaststmt(self, ctx:PostgreSQLParser.DropcaststmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_if_exists. - def enterOpt_if_exists(self, ctx:PostgreSQLParser.Opt_if_existsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_if_exists. - def exitOpt_if_exists(self, ctx:PostgreSQLParser.Opt_if_existsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createtransformstmt. - def enterCreatetransformstmt(self, ctx:PostgreSQLParser.CreatetransformstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createtransformstmt. - def exitCreatetransformstmt(self, ctx:PostgreSQLParser.CreatetransformstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transform_element_list. - def enterTransform_element_list(self, ctx:PostgreSQLParser.Transform_element_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transform_element_list. - def exitTransform_element_list(self, ctx:PostgreSQLParser.Transform_element_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#droptransformstmt. - def enterDroptransformstmt(self, ctx:PostgreSQLParser.DroptransformstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#droptransformstmt. - def exitDroptransformstmt(self, ctx:PostgreSQLParser.DroptransformstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reindexstmt. - def enterReindexstmt(self, ctx:PostgreSQLParser.ReindexstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reindexstmt. - def exitReindexstmt(self, ctx:PostgreSQLParser.ReindexstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reindex_target_type. - def enterReindex_target_type(self, ctx:PostgreSQLParser.Reindex_target_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reindex_target_type. - def exitReindex_target_type(self, ctx:PostgreSQLParser.Reindex_target_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reindex_target_multitable. - def enterReindex_target_multitable(self, ctx:PostgreSQLParser.Reindex_target_multitableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reindex_target_multitable. - def exitReindex_target_multitable(self, ctx:PostgreSQLParser.Reindex_target_multitableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reindex_option_list. - def enterReindex_option_list(self, ctx:PostgreSQLParser.Reindex_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reindex_option_list. - def exitReindex_option_list(self, ctx:PostgreSQLParser.Reindex_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reindex_option_elem. - def enterReindex_option_elem(self, ctx:PostgreSQLParser.Reindex_option_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reindex_option_elem. - def exitReindex_option_elem(self, ctx:PostgreSQLParser.Reindex_option_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altertblspcstmt. - def enterAltertblspcstmt(self, ctx:PostgreSQLParser.AltertblspcstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altertblspcstmt. - def exitAltertblspcstmt(self, ctx:PostgreSQLParser.AltertblspcstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#renamestmt. - def enterRenamestmt(self, ctx:PostgreSQLParser.RenamestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#renamestmt. - def exitRenamestmt(self, ctx:PostgreSQLParser.RenamestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_column. - def enterOpt_column(self, ctx:PostgreSQLParser.Opt_columnContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_column. - def exitOpt_column(self, ctx:PostgreSQLParser.Opt_columnContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_set_data. - def enterOpt_set_data(self, ctx:PostgreSQLParser.Opt_set_dataContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_set_data. - def exitOpt_set_data(self, ctx:PostgreSQLParser.Opt_set_dataContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterobjectdependsstmt. - def enterAlterobjectdependsstmt(self, ctx:PostgreSQLParser.AlterobjectdependsstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterobjectdependsstmt. - def exitAlterobjectdependsstmt(self, ctx:PostgreSQLParser.AlterobjectdependsstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_no. - def enterOpt_no(self, ctx:PostgreSQLParser.Opt_noContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_no. - def exitOpt_no(self, ctx:PostgreSQLParser.Opt_noContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterobjectschemastmt. - def enterAlterobjectschemastmt(self, ctx:PostgreSQLParser.AlterobjectschemastmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterobjectschemastmt. - def exitAlterobjectschemastmt(self, ctx:PostgreSQLParser.AlterobjectschemastmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alteroperatorstmt. - def enterAlteroperatorstmt(self, ctx:PostgreSQLParser.AlteroperatorstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alteroperatorstmt. - def exitAlteroperatorstmt(self, ctx:PostgreSQLParser.AlteroperatorstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#operator_def_list. - def enterOperator_def_list(self, ctx:PostgreSQLParser.Operator_def_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#operator_def_list. - def exitOperator_def_list(self, ctx:PostgreSQLParser.Operator_def_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#operator_def_elem. - def enterOperator_def_elem(self, ctx:PostgreSQLParser.Operator_def_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#operator_def_elem. - def exitOperator_def_elem(self, ctx:PostgreSQLParser.Operator_def_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#operator_def_arg. - def enterOperator_def_arg(self, ctx:PostgreSQLParser.Operator_def_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#operator_def_arg. - def exitOperator_def_arg(self, ctx:PostgreSQLParser.Operator_def_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altertypestmt. - def enterAltertypestmt(self, ctx:PostgreSQLParser.AltertypestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altertypestmt. - def exitAltertypestmt(self, ctx:PostgreSQLParser.AltertypestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterownerstmt. - def enterAlterownerstmt(self, ctx:PostgreSQLParser.AlterownerstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterownerstmt. - def exitAlterownerstmt(self, ctx:PostgreSQLParser.AlterownerstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createpublicationstmt. - def enterCreatepublicationstmt(self, ctx:PostgreSQLParser.CreatepublicationstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createpublicationstmt. - def exitCreatepublicationstmt(self, ctx:PostgreSQLParser.CreatepublicationstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_publication_for_tables. - def enterOpt_publication_for_tables(self, ctx:PostgreSQLParser.Opt_publication_for_tablesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_publication_for_tables. - def exitOpt_publication_for_tables(self, ctx:PostgreSQLParser.Opt_publication_for_tablesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#publication_for_tables. - def enterPublication_for_tables(self, ctx:PostgreSQLParser.Publication_for_tablesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#publication_for_tables. - def exitPublication_for_tables(self, ctx:PostgreSQLParser.Publication_for_tablesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterpublicationstmt. - def enterAlterpublicationstmt(self, ctx:PostgreSQLParser.AlterpublicationstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterpublicationstmt. - def exitAlterpublicationstmt(self, ctx:PostgreSQLParser.AlterpublicationstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createsubscriptionstmt. - def enterCreatesubscriptionstmt(self, ctx:PostgreSQLParser.CreatesubscriptionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createsubscriptionstmt. - def exitCreatesubscriptionstmt(self, ctx:PostgreSQLParser.CreatesubscriptionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#publication_name_list. - def enterPublication_name_list(self, ctx:PostgreSQLParser.Publication_name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#publication_name_list. - def exitPublication_name_list(self, ctx:PostgreSQLParser.Publication_name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#publication_name_item. - def enterPublication_name_item(self, ctx:PostgreSQLParser.Publication_name_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#publication_name_item. - def exitPublication_name_item(self, ctx:PostgreSQLParser.Publication_name_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altersubscriptionstmt. - def enterAltersubscriptionstmt(self, ctx:PostgreSQLParser.AltersubscriptionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altersubscriptionstmt. - def exitAltersubscriptionstmt(self, ctx:PostgreSQLParser.AltersubscriptionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropsubscriptionstmt. - def enterDropsubscriptionstmt(self, ctx:PostgreSQLParser.DropsubscriptionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropsubscriptionstmt. - def exitDropsubscriptionstmt(self, ctx:PostgreSQLParser.DropsubscriptionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rulestmt. - def enterRulestmt(self, ctx:PostgreSQLParser.RulestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rulestmt. - def exitRulestmt(self, ctx:PostgreSQLParser.RulestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#ruleactionlist. - def enterRuleactionlist(self, ctx:PostgreSQLParser.RuleactionlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#ruleactionlist. - def exitRuleactionlist(self, ctx:PostgreSQLParser.RuleactionlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#ruleactionmulti. - def enterRuleactionmulti(self, ctx:PostgreSQLParser.RuleactionmultiContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#ruleactionmulti. - def exitRuleactionmulti(self, ctx:PostgreSQLParser.RuleactionmultiContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#ruleactionstmt. - def enterRuleactionstmt(self, ctx:PostgreSQLParser.RuleactionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#ruleactionstmt. - def exitRuleactionstmt(self, ctx:PostgreSQLParser.RuleactionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#ruleactionstmtOrEmpty. - def enterRuleactionstmtOrEmpty(self, ctx:PostgreSQLParser.RuleactionstmtOrEmptyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#ruleactionstmtOrEmpty. - def exitRuleactionstmtOrEmpty(self, ctx:PostgreSQLParser.RuleactionstmtOrEmptyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#event. - def enterEvent(self, ctx:PostgreSQLParser.EventContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#event. - def exitEvent(self, ctx:PostgreSQLParser.EventContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_instead. - def enterOpt_instead(self, ctx:PostgreSQLParser.Opt_insteadContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_instead. - def exitOpt_instead(self, ctx:PostgreSQLParser.Opt_insteadContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#notifystmt. - def enterNotifystmt(self, ctx:PostgreSQLParser.NotifystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#notifystmt. - def exitNotifystmt(self, ctx:PostgreSQLParser.NotifystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#notify_payload. - def enterNotify_payload(self, ctx:PostgreSQLParser.Notify_payloadContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#notify_payload. - def exitNotify_payload(self, ctx:PostgreSQLParser.Notify_payloadContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#listenstmt. - def enterListenstmt(self, ctx:PostgreSQLParser.ListenstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#listenstmt. - def exitListenstmt(self, ctx:PostgreSQLParser.ListenstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#unlistenstmt. - def enterUnlistenstmt(self, ctx:PostgreSQLParser.UnlistenstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#unlistenstmt. - def exitUnlistenstmt(self, ctx:PostgreSQLParser.UnlistenstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transactionstmt. - def enterTransactionstmt(self, ctx:PostgreSQLParser.TransactionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transactionstmt. - def exitTransactionstmt(self, ctx:PostgreSQLParser.TransactionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_transaction. - def enterOpt_transaction(self, ctx:PostgreSQLParser.Opt_transactionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_transaction. - def exitOpt_transaction(self, ctx:PostgreSQLParser.Opt_transactionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transaction_mode_item. - def enterTransaction_mode_item(self, ctx:PostgreSQLParser.Transaction_mode_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transaction_mode_item. - def exitTransaction_mode_item(self, ctx:PostgreSQLParser.Transaction_mode_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transaction_mode_list. - def enterTransaction_mode_list(self, ctx:PostgreSQLParser.Transaction_mode_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transaction_mode_list. - def exitTransaction_mode_list(self, ctx:PostgreSQLParser.Transaction_mode_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#transaction_mode_list_or_empty. - def enterTransaction_mode_list_or_empty(self, ctx:PostgreSQLParser.Transaction_mode_list_or_emptyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#transaction_mode_list_or_empty. - def exitTransaction_mode_list_or_empty(self, ctx:PostgreSQLParser.Transaction_mode_list_or_emptyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_transaction_chain. - def enterOpt_transaction_chain(self, ctx:PostgreSQLParser.Opt_transaction_chainContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_transaction_chain. - def exitOpt_transaction_chain(self, ctx:PostgreSQLParser.Opt_transaction_chainContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#viewstmt. - def enterViewstmt(self, ctx:PostgreSQLParser.ViewstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#viewstmt. - def exitViewstmt(self, ctx:PostgreSQLParser.ViewstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_check_option. - def enterOpt_check_option(self, ctx:PostgreSQLParser.Opt_check_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_check_option. - def exitOpt_check_option(self, ctx:PostgreSQLParser.Opt_check_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#loadstmt. - def enterLoadstmt(self, ctx:PostgreSQLParser.LoadstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#loadstmt. - def exitLoadstmt(self, ctx:PostgreSQLParser.LoadstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdbstmt. - def enterCreatedbstmt(self, ctx:PostgreSQLParser.CreatedbstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdbstmt. - def exitCreatedbstmt(self, ctx:PostgreSQLParser.CreatedbstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdb_opt_list. - def enterCreatedb_opt_list(self, ctx:PostgreSQLParser.Createdb_opt_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdb_opt_list. - def exitCreatedb_opt_list(self, ctx:PostgreSQLParser.Createdb_opt_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdb_opt_items. - def enterCreatedb_opt_items(self, ctx:PostgreSQLParser.Createdb_opt_itemsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdb_opt_items. - def exitCreatedb_opt_items(self, ctx:PostgreSQLParser.Createdb_opt_itemsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdb_opt_item. - def enterCreatedb_opt_item(self, ctx:PostgreSQLParser.Createdb_opt_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdb_opt_item. - def exitCreatedb_opt_item(self, ctx:PostgreSQLParser.Createdb_opt_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdb_opt_name. - def enterCreatedb_opt_name(self, ctx:PostgreSQLParser.Createdb_opt_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdb_opt_name. - def exitCreatedb_opt_name(self, ctx:PostgreSQLParser.Createdb_opt_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_equal. - def enterOpt_equal(self, ctx:PostgreSQLParser.Opt_equalContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_equal. - def exitOpt_equal(self, ctx:PostgreSQLParser.Opt_equalContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterdatabasestmt. - def enterAlterdatabasestmt(self, ctx:PostgreSQLParser.AlterdatabasestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterdatabasestmt. - def exitAlterdatabasestmt(self, ctx:PostgreSQLParser.AlterdatabasestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterdatabasesetstmt. - def enterAlterdatabasesetstmt(self, ctx:PostgreSQLParser.AlterdatabasesetstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterdatabasesetstmt. - def exitAlterdatabasesetstmt(self, ctx:PostgreSQLParser.AlterdatabasesetstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#dropdbstmt. - def enterDropdbstmt(self, ctx:PostgreSQLParser.DropdbstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#dropdbstmt. - def exitDropdbstmt(self, ctx:PostgreSQLParser.DropdbstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#drop_option_list. - def enterDrop_option_list(self, ctx:PostgreSQLParser.Drop_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#drop_option_list. - def exitDrop_option_list(self, ctx:PostgreSQLParser.Drop_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#drop_option. - def enterDrop_option(self, ctx:PostgreSQLParser.Drop_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#drop_option. - def exitDrop_option(self, ctx:PostgreSQLParser.Drop_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altercollationstmt. - def enterAltercollationstmt(self, ctx:PostgreSQLParser.AltercollationstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altercollationstmt. - def exitAltercollationstmt(self, ctx:PostgreSQLParser.AltercollationstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altersystemstmt. - def enterAltersystemstmt(self, ctx:PostgreSQLParser.AltersystemstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altersystemstmt. - def exitAltersystemstmt(self, ctx:PostgreSQLParser.AltersystemstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createdomainstmt. - def enterCreatedomainstmt(self, ctx:PostgreSQLParser.CreatedomainstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createdomainstmt. - def exitCreatedomainstmt(self, ctx:PostgreSQLParser.CreatedomainstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alterdomainstmt. - def enterAlterdomainstmt(self, ctx:PostgreSQLParser.AlterdomainstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alterdomainstmt. - def exitAlterdomainstmt(self, ctx:PostgreSQLParser.AlterdomainstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_as. - def enterOpt_as(self, ctx:PostgreSQLParser.Opt_asContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_as. - def exitOpt_as(self, ctx:PostgreSQLParser.Opt_asContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altertsdictionarystmt. - def enterAltertsdictionarystmt(self, ctx:PostgreSQLParser.AltertsdictionarystmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altertsdictionarystmt. - def exitAltertsdictionarystmt(self, ctx:PostgreSQLParser.AltertsdictionarystmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#altertsconfigurationstmt. - def enterAltertsconfigurationstmt(self, ctx:PostgreSQLParser.AltertsconfigurationstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#altertsconfigurationstmt. - def exitAltertsconfigurationstmt(self, ctx:PostgreSQLParser.AltertsconfigurationstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#any_with. - def enterAny_with(self, ctx:PostgreSQLParser.Any_withContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#any_with. - def exitAny_with(self, ctx:PostgreSQLParser.Any_withContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#createconversionstmt. - def enterCreateconversionstmt(self, ctx:PostgreSQLParser.CreateconversionstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#createconversionstmt. - def exitCreateconversionstmt(self, ctx:PostgreSQLParser.CreateconversionstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#clusterstmt. - def enterClusterstmt(self, ctx:PostgreSQLParser.ClusterstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#clusterstmt. - def exitClusterstmt(self, ctx:PostgreSQLParser.ClusterstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cluster_index_specification. - def enterCluster_index_specification(self, ctx:PostgreSQLParser.Cluster_index_specificationContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cluster_index_specification. - def exitCluster_index_specification(self, ctx:PostgreSQLParser.Cluster_index_specificationContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vacuumstmt. - def enterVacuumstmt(self, ctx:PostgreSQLParser.VacuumstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vacuumstmt. - def exitVacuumstmt(self, ctx:PostgreSQLParser.VacuumstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#analyzestmt. - def enterAnalyzestmt(self, ctx:PostgreSQLParser.AnalyzestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#analyzestmt. - def exitAnalyzestmt(self, ctx:PostgreSQLParser.AnalyzestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vac_analyze_option_list. - def enterVac_analyze_option_list(self, ctx:PostgreSQLParser.Vac_analyze_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vac_analyze_option_list. - def exitVac_analyze_option_list(self, ctx:PostgreSQLParser.Vac_analyze_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#analyze_keyword. - def enterAnalyze_keyword(self, ctx:PostgreSQLParser.Analyze_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#analyze_keyword. - def exitAnalyze_keyword(self, ctx:PostgreSQLParser.Analyze_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vac_analyze_option_elem. - def enterVac_analyze_option_elem(self, ctx:PostgreSQLParser.Vac_analyze_option_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vac_analyze_option_elem. - def exitVac_analyze_option_elem(self, ctx:PostgreSQLParser.Vac_analyze_option_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vac_analyze_option_name. - def enterVac_analyze_option_name(self, ctx:PostgreSQLParser.Vac_analyze_option_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vac_analyze_option_name. - def exitVac_analyze_option_name(self, ctx:PostgreSQLParser.Vac_analyze_option_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vac_analyze_option_arg. - def enterVac_analyze_option_arg(self, ctx:PostgreSQLParser.Vac_analyze_option_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vac_analyze_option_arg. - def exitVac_analyze_option_arg(self, ctx:PostgreSQLParser.Vac_analyze_option_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_analyze. - def enterOpt_analyze(self, ctx:PostgreSQLParser.Opt_analyzeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_analyze. - def exitOpt_analyze(self, ctx:PostgreSQLParser.Opt_analyzeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_verbose. - def enterOpt_verbose(self, ctx:PostgreSQLParser.Opt_verboseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_verbose. - def exitOpt_verbose(self, ctx:PostgreSQLParser.Opt_verboseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_full. - def enterOpt_full(self, ctx:PostgreSQLParser.Opt_fullContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_full. - def exitOpt_full(self, ctx:PostgreSQLParser.Opt_fullContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_freeze. - def enterOpt_freeze(self, ctx:PostgreSQLParser.Opt_freezeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_freeze. - def exitOpt_freeze(self, ctx:PostgreSQLParser.Opt_freezeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_name_list. - def enterOpt_name_list(self, ctx:PostgreSQLParser.Opt_name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_name_list. - def exitOpt_name_list(self, ctx:PostgreSQLParser.Opt_name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vacuum_relation. - def enterVacuum_relation(self, ctx:PostgreSQLParser.Vacuum_relationContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vacuum_relation. - def exitVacuum_relation(self, ctx:PostgreSQLParser.Vacuum_relationContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#vacuum_relation_list. - def enterVacuum_relation_list(self, ctx:PostgreSQLParser.Vacuum_relation_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#vacuum_relation_list. - def exitVacuum_relation_list(self, ctx:PostgreSQLParser.Vacuum_relation_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_vacuum_relation_list. - def enterOpt_vacuum_relation_list(self, ctx:PostgreSQLParser.Opt_vacuum_relation_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_vacuum_relation_list. - def exitOpt_vacuum_relation_list(self, ctx:PostgreSQLParser.Opt_vacuum_relation_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explainstmt. - def enterExplainstmt(self, ctx:PostgreSQLParser.ExplainstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explainstmt. - def exitExplainstmt(self, ctx:PostgreSQLParser.ExplainstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explainablestmt. - def enterExplainablestmt(self, ctx:PostgreSQLParser.ExplainablestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explainablestmt. - def exitExplainablestmt(self, ctx:PostgreSQLParser.ExplainablestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explain_option_list. - def enterExplain_option_list(self, ctx:PostgreSQLParser.Explain_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explain_option_list. - def exitExplain_option_list(self, ctx:PostgreSQLParser.Explain_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explain_option_elem. - def enterExplain_option_elem(self, ctx:PostgreSQLParser.Explain_option_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explain_option_elem. - def exitExplain_option_elem(self, ctx:PostgreSQLParser.Explain_option_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explain_option_name. - def enterExplain_option_name(self, ctx:PostgreSQLParser.Explain_option_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explain_option_name. - def exitExplain_option_name(self, ctx:PostgreSQLParser.Explain_option_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explain_option_arg. - def enterExplain_option_arg(self, ctx:PostgreSQLParser.Explain_option_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explain_option_arg. - def exitExplain_option_arg(self, ctx:PostgreSQLParser.Explain_option_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#preparestmt. - def enterPreparestmt(self, ctx:PostgreSQLParser.PreparestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#preparestmt. - def exitPreparestmt(self, ctx:PostgreSQLParser.PreparestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#prep_type_clause. - def enterPrep_type_clause(self, ctx:PostgreSQLParser.Prep_type_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#prep_type_clause. - def exitPrep_type_clause(self, ctx:PostgreSQLParser.Prep_type_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#preparablestmt. - def enterPreparablestmt(self, ctx:PostgreSQLParser.PreparablestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#preparablestmt. - def exitPreparablestmt(self, ctx:PostgreSQLParser.PreparablestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#executestmt. - def enterExecutestmt(self, ctx:PostgreSQLParser.ExecutestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#executestmt. - def exitExecutestmt(self, ctx:PostgreSQLParser.ExecutestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#execute_param_clause. - def enterExecute_param_clause(self, ctx:PostgreSQLParser.Execute_param_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#execute_param_clause. - def exitExecute_param_clause(self, ctx:PostgreSQLParser.Execute_param_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#deallocatestmt. - def enterDeallocatestmt(self, ctx:PostgreSQLParser.DeallocatestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#deallocatestmt. - def exitDeallocatestmt(self, ctx:PostgreSQLParser.DeallocatestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#insertstmt. - def enterInsertstmt(self, ctx:PostgreSQLParser.InsertstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#insertstmt. - def exitInsertstmt(self, ctx:PostgreSQLParser.InsertstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#insert_target. - def enterInsert_target(self, ctx:PostgreSQLParser.Insert_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#insert_target. - def exitInsert_target(self, ctx:PostgreSQLParser.Insert_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#insert_rest. - def enterInsert_rest(self, ctx:PostgreSQLParser.Insert_restContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#insert_rest. - def exitInsert_rest(self, ctx:PostgreSQLParser.Insert_restContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#override_kind. - def enterOverride_kind(self, ctx:PostgreSQLParser.Override_kindContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#override_kind. - def exitOverride_kind(self, ctx:PostgreSQLParser.Override_kindContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#insert_column_list. - def enterInsert_column_list(self, ctx:PostgreSQLParser.Insert_column_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#insert_column_list. - def exitInsert_column_list(self, ctx:PostgreSQLParser.Insert_column_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#insert_column_item. - def enterInsert_column_item(self, ctx:PostgreSQLParser.Insert_column_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#insert_column_item. - def exitInsert_column_item(self, ctx:PostgreSQLParser.Insert_column_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_on_conflict. - def enterOpt_on_conflict(self, ctx:PostgreSQLParser.Opt_on_conflictContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_on_conflict. - def exitOpt_on_conflict(self, ctx:PostgreSQLParser.Opt_on_conflictContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_conf_expr. - def enterOpt_conf_expr(self, ctx:PostgreSQLParser.Opt_conf_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_conf_expr. - def exitOpt_conf_expr(self, ctx:PostgreSQLParser.Opt_conf_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#returning_clause. - def enterReturning_clause(self, ctx:PostgreSQLParser.Returning_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#returning_clause. - def exitReturning_clause(self, ctx:PostgreSQLParser.Returning_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#mergestmt. - def enterMergestmt(self, ctx:PostgreSQLParser.MergestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#mergestmt. - def exitMergestmt(self, ctx:PostgreSQLParser.MergestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#merge_insert_clause. - def enterMerge_insert_clause(self, ctx:PostgreSQLParser.Merge_insert_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#merge_insert_clause. - def exitMerge_insert_clause(self, ctx:PostgreSQLParser.Merge_insert_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#merge_update_clause. - def enterMerge_update_clause(self, ctx:PostgreSQLParser.Merge_update_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#merge_update_clause. - def exitMerge_update_clause(self, ctx:PostgreSQLParser.Merge_update_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#merge_delete_clause. - def enterMerge_delete_clause(self, ctx:PostgreSQLParser.Merge_delete_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#merge_delete_clause. - def exitMerge_delete_clause(self, ctx:PostgreSQLParser.Merge_delete_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#deletestmt. - def enterDeletestmt(self, ctx:PostgreSQLParser.DeletestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#deletestmt. - def exitDeletestmt(self, ctx:PostgreSQLParser.DeletestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#using_clause. - def enterUsing_clause(self, ctx:PostgreSQLParser.Using_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#using_clause. - def exitUsing_clause(self, ctx:PostgreSQLParser.Using_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#lockstmt. - def enterLockstmt(self, ctx:PostgreSQLParser.LockstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#lockstmt. - def exitLockstmt(self, ctx:PostgreSQLParser.LockstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_lock. - def enterOpt_lock(self, ctx:PostgreSQLParser.Opt_lockContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_lock. - def exitOpt_lock(self, ctx:PostgreSQLParser.Opt_lockContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#lock_type. - def enterLock_type(self, ctx:PostgreSQLParser.Lock_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#lock_type. - def exitLock_type(self, ctx:PostgreSQLParser.Lock_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_nowait. - def enterOpt_nowait(self, ctx:PostgreSQLParser.Opt_nowaitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_nowait. - def exitOpt_nowait(self, ctx:PostgreSQLParser.Opt_nowaitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_nowait_or_skip. - def enterOpt_nowait_or_skip(self, ctx:PostgreSQLParser.Opt_nowait_or_skipContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_nowait_or_skip. - def exitOpt_nowait_or_skip(self, ctx:PostgreSQLParser.Opt_nowait_or_skipContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#updatestmt. - def enterUpdatestmt(self, ctx:PostgreSQLParser.UpdatestmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#updatestmt. - def exitUpdatestmt(self, ctx:PostgreSQLParser.UpdatestmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_clause_list. - def enterSet_clause_list(self, ctx:PostgreSQLParser.Set_clause_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_clause_list. - def exitSet_clause_list(self, ctx:PostgreSQLParser.Set_clause_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_clause. - def enterSet_clause(self, ctx:PostgreSQLParser.Set_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_clause. - def exitSet_clause(self, ctx:PostgreSQLParser.Set_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_target. - def enterSet_target(self, ctx:PostgreSQLParser.Set_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_target. - def exitSet_target(self, ctx:PostgreSQLParser.Set_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#set_target_list. - def enterSet_target_list(self, ctx:PostgreSQLParser.Set_target_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#set_target_list. - def exitSet_target_list(self, ctx:PostgreSQLParser.Set_target_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#declarecursorstmt. - def enterDeclarecursorstmt(self, ctx:PostgreSQLParser.DeclarecursorstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#declarecursorstmt. - def exitDeclarecursorstmt(self, ctx:PostgreSQLParser.DeclarecursorstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cursor_name. - def enterCursor_name(self, ctx:PostgreSQLParser.Cursor_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cursor_name. - def exitCursor_name(self, ctx:PostgreSQLParser.Cursor_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cursor_options. - def enterCursor_options(self, ctx:PostgreSQLParser.Cursor_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cursor_options. - def exitCursor_options(self, ctx:PostgreSQLParser.Cursor_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_hold. - def enterOpt_hold(self, ctx:PostgreSQLParser.Opt_holdContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_hold. - def exitOpt_hold(self, ctx:PostgreSQLParser.Opt_holdContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#selectstmt. - def enterSelectstmt(self, ctx:PostgreSQLParser.SelectstmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#selectstmt. - def exitSelectstmt(self, ctx:PostgreSQLParser.SelectstmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_with_parens. - def enterSelect_with_parens(self, ctx:PostgreSQLParser.Select_with_parensContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_with_parens. - def exitSelect_with_parens(self, ctx:PostgreSQLParser.Select_with_parensContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_no_parens. - def enterSelect_no_parens(self, ctx:PostgreSQLParser.Select_no_parensContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_no_parens. - def exitSelect_no_parens(self, ctx:PostgreSQLParser.Select_no_parensContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_clause. - def enterSelect_clause(self, ctx:PostgreSQLParser.Select_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_clause. - def exitSelect_clause(self, ctx:PostgreSQLParser.Select_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#simple_select_intersect. - def enterSimple_select_intersect(self, ctx:PostgreSQLParser.Simple_select_intersectContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#simple_select_intersect. - def exitSimple_select_intersect(self, ctx:PostgreSQLParser.Simple_select_intersectContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#simple_select_pramary. - def enterSimple_select_pramary(self, ctx:PostgreSQLParser.Simple_select_pramaryContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#simple_select_pramary. - def exitSimple_select_pramary(self, ctx:PostgreSQLParser.Simple_select_pramaryContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#with_clause. - def enterWith_clause(self, ctx:PostgreSQLParser.With_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#with_clause. - def exitWith_clause(self, ctx:PostgreSQLParser.With_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cte_list. - def enterCte_list(self, ctx:PostgreSQLParser.Cte_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cte_list. - def exitCte_list(self, ctx:PostgreSQLParser.Cte_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#common_table_expr. - def enterCommon_table_expr(self, ctx:PostgreSQLParser.Common_table_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#common_table_expr. - def exitCommon_table_expr(self, ctx:PostgreSQLParser.Common_table_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_materialized. - def enterOpt_materialized(self, ctx:PostgreSQLParser.Opt_materializedContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_materialized. - def exitOpt_materialized(self, ctx:PostgreSQLParser.Opt_materializedContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_with_clause. - def enterOpt_with_clause(self, ctx:PostgreSQLParser.Opt_with_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_with_clause. - def exitOpt_with_clause(self, ctx:PostgreSQLParser.Opt_with_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#into_clause. - def enterInto_clause(self, ctx:PostgreSQLParser.Into_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#into_clause. - def exitInto_clause(self, ctx:PostgreSQLParser.Into_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_strict. - def enterOpt_strict(self, ctx:PostgreSQLParser.Opt_strictContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_strict. - def exitOpt_strict(self, ctx:PostgreSQLParser.Opt_strictContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttempTableName. - def enterOpttempTableName(self, ctx:PostgreSQLParser.OpttempTableNameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttempTableName. - def exitOpttempTableName(self, ctx:PostgreSQLParser.OpttempTableNameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_table. - def enterOpt_table(self, ctx:PostgreSQLParser.Opt_tableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_table. - def exitOpt_table(self, ctx:PostgreSQLParser.Opt_tableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#all_or_distinct. - def enterAll_or_distinct(self, ctx:PostgreSQLParser.All_or_distinctContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#all_or_distinct. - def exitAll_or_distinct(self, ctx:PostgreSQLParser.All_or_distinctContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#distinct_clause. - def enterDistinct_clause(self, ctx:PostgreSQLParser.Distinct_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#distinct_clause. - def exitDistinct_clause(self, ctx:PostgreSQLParser.Distinct_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_all_clause. - def enterOpt_all_clause(self, ctx:PostgreSQLParser.Opt_all_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_all_clause. - def exitOpt_all_clause(self, ctx:PostgreSQLParser.Opt_all_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_sort_clause. - def enterOpt_sort_clause(self, ctx:PostgreSQLParser.Opt_sort_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_sort_clause. - def exitOpt_sort_clause(self, ctx:PostgreSQLParser.Opt_sort_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sort_clause. - def enterSort_clause(self, ctx:PostgreSQLParser.Sort_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sort_clause. - def exitSort_clause(self, ctx:PostgreSQLParser.Sort_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sortby_list. - def enterSortby_list(self, ctx:PostgreSQLParser.Sortby_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sortby_list. - def exitSortby_list(self, ctx:PostgreSQLParser.Sortby_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sortby. - def enterSortby(self, ctx:PostgreSQLParser.SortbyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sortby. - def exitSortby(self, ctx:PostgreSQLParser.SortbyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_limit. - def enterSelect_limit(self, ctx:PostgreSQLParser.Select_limitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_limit. - def exitSelect_limit(self, ctx:PostgreSQLParser.Select_limitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_select_limit. - def enterOpt_select_limit(self, ctx:PostgreSQLParser.Opt_select_limitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_select_limit. - def exitOpt_select_limit(self, ctx:PostgreSQLParser.Opt_select_limitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#limit_clause. - def enterLimit_clause(self, ctx:PostgreSQLParser.Limit_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#limit_clause. - def exitLimit_clause(self, ctx:PostgreSQLParser.Limit_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#offset_clause. - def enterOffset_clause(self, ctx:PostgreSQLParser.Offset_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#offset_clause. - def exitOffset_clause(self, ctx:PostgreSQLParser.Offset_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_limit_value. - def enterSelect_limit_value(self, ctx:PostgreSQLParser.Select_limit_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_limit_value. - def exitSelect_limit_value(self, ctx:PostgreSQLParser.Select_limit_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_offset_value. - def enterSelect_offset_value(self, ctx:PostgreSQLParser.Select_offset_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_offset_value. - def exitSelect_offset_value(self, ctx:PostgreSQLParser.Select_offset_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#select_fetch_first_value. - def enterSelect_fetch_first_value(self, ctx:PostgreSQLParser.Select_fetch_first_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#select_fetch_first_value. - def exitSelect_fetch_first_value(self, ctx:PostgreSQLParser.Select_fetch_first_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#i_or_f_const. - def enterI_or_f_const(self, ctx:PostgreSQLParser.I_or_f_constContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#i_or_f_const. - def exitI_or_f_const(self, ctx:PostgreSQLParser.I_or_f_constContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#row_or_rows. - def enterRow_or_rows(self, ctx:PostgreSQLParser.Row_or_rowsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#row_or_rows. - def exitRow_or_rows(self, ctx:PostgreSQLParser.Row_or_rowsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#first_or_next. - def enterFirst_or_next(self, ctx:PostgreSQLParser.First_or_nextContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#first_or_next. - def exitFirst_or_next(self, ctx:PostgreSQLParser.First_or_nextContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#group_clause. - def enterGroup_clause(self, ctx:PostgreSQLParser.Group_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#group_clause. - def exitGroup_clause(self, ctx:PostgreSQLParser.Group_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#group_by_list. - def enterGroup_by_list(self, ctx:PostgreSQLParser.Group_by_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#group_by_list. - def exitGroup_by_list(self, ctx:PostgreSQLParser.Group_by_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#group_by_item. - def enterGroup_by_item(self, ctx:PostgreSQLParser.Group_by_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#group_by_item. - def exitGroup_by_item(self, ctx:PostgreSQLParser.Group_by_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#empty_grouping_set. - def enterEmpty_grouping_set(self, ctx:PostgreSQLParser.Empty_grouping_setContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#empty_grouping_set. - def exitEmpty_grouping_set(self, ctx:PostgreSQLParser.Empty_grouping_setContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rollup_clause. - def enterRollup_clause(self, ctx:PostgreSQLParser.Rollup_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rollup_clause. - def exitRollup_clause(self, ctx:PostgreSQLParser.Rollup_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cube_clause. - def enterCube_clause(self, ctx:PostgreSQLParser.Cube_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cube_clause. - def exitCube_clause(self, ctx:PostgreSQLParser.Cube_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#grouping_sets_clause. - def enterGrouping_sets_clause(self, ctx:PostgreSQLParser.Grouping_sets_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#grouping_sets_clause. - def exitGrouping_sets_clause(self, ctx:PostgreSQLParser.Grouping_sets_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#having_clause. - def enterHaving_clause(self, ctx:PostgreSQLParser.Having_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#having_clause. - def exitHaving_clause(self, ctx:PostgreSQLParser.Having_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_locking_clause. - def enterFor_locking_clause(self, ctx:PostgreSQLParser.For_locking_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_locking_clause. - def exitFor_locking_clause(self, ctx:PostgreSQLParser.For_locking_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_for_locking_clause. - def enterOpt_for_locking_clause(self, ctx:PostgreSQLParser.Opt_for_locking_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_for_locking_clause. - def exitOpt_for_locking_clause(self, ctx:PostgreSQLParser.Opt_for_locking_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_locking_items. - def enterFor_locking_items(self, ctx:PostgreSQLParser.For_locking_itemsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_locking_items. - def exitFor_locking_items(self, ctx:PostgreSQLParser.For_locking_itemsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_locking_item. - def enterFor_locking_item(self, ctx:PostgreSQLParser.For_locking_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_locking_item. - def exitFor_locking_item(self, ctx:PostgreSQLParser.For_locking_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_locking_strength. - def enterFor_locking_strength(self, ctx:PostgreSQLParser.For_locking_strengthContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_locking_strength. - def exitFor_locking_strength(self, ctx:PostgreSQLParser.For_locking_strengthContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#locked_rels_list. - def enterLocked_rels_list(self, ctx:PostgreSQLParser.Locked_rels_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#locked_rels_list. - def exitLocked_rels_list(self, ctx:PostgreSQLParser.Locked_rels_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#values_clause. - def enterValues_clause(self, ctx:PostgreSQLParser.Values_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#values_clause. - def exitValues_clause(self, ctx:PostgreSQLParser.Values_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#from_clause. - def enterFrom_clause(self, ctx:PostgreSQLParser.From_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#from_clause. - def exitFrom_clause(self, ctx:PostgreSQLParser.From_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#from_list. - def enterFrom_list(self, ctx:PostgreSQLParser.From_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#from_list. - def exitFrom_list(self, ctx:PostgreSQLParser.From_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#non_ansi_join. - def enterNon_ansi_join(self, ctx:PostgreSQLParser.Non_ansi_joinContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#non_ansi_join. - def exitNon_ansi_join(self, ctx:PostgreSQLParser.Non_ansi_joinContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_ref. - def enterTable_ref(self, ctx:PostgreSQLParser.Table_refContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_ref. - def exitTable_ref(self, ctx:PostgreSQLParser.Table_refContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#alias_clause. - def enterAlias_clause(self, ctx:PostgreSQLParser.Alias_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#alias_clause. - def exitAlias_clause(self, ctx:PostgreSQLParser.Alias_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_alias_clause. - def enterOpt_alias_clause(self, ctx:PostgreSQLParser.Opt_alias_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_alias_clause. - def exitOpt_alias_clause(self, ctx:PostgreSQLParser.Opt_alias_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_alias_clause. - def enterTable_alias_clause(self, ctx:PostgreSQLParser.Table_alias_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_alias_clause. - def exitTable_alias_clause(self, ctx:PostgreSQLParser.Table_alias_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_alias_clause. - def enterFunc_alias_clause(self, ctx:PostgreSQLParser.Func_alias_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_alias_clause. - def exitFunc_alias_clause(self, ctx:PostgreSQLParser.Func_alias_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#join_type. - def enterJoin_type(self, ctx:PostgreSQLParser.Join_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#join_type. - def exitJoin_type(self, ctx:PostgreSQLParser.Join_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#join_qual. - def enterJoin_qual(self, ctx:PostgreSQLParser.Join_qualContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#join_qual. - def exitJoin_qual(self, ctx:PostgreSQLParser.Join_qualContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#relation_expr. - def enterRelation_expr(self, ctx:PostgreSQLParser.Relation_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#relation_expr. - def exitRelation_expr(self, ctx:PostgreSQLParser.Relation_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#relation_expr_list. - def enterRelation_expr_list(self, ctx:PostgreSQLParser.Relation_expr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#relation_expr_list. - def exitRelation_expr_list(self, ctx:PostgreSQLParser.Relation_expr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#relation_expr_opt_alias. - def enterRelation_expr_opt_alias(self, ctx:PostgreSQLParser.Relation_expr_opt_aliasContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#relation_expr_opt_alias. - def exitRelation_expr_opt_alias(self, ctx:PostgreSQLParser.Relation_expr_opt_aliasContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablesample_clause. - def enterTablesample_clause(self, ctx:PostgreSQLParser.Tablesample_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablesample_clause. - def exitTablesample_clause(self, ctx:PostgreSQLParser.Tablesample_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_repeatable_clause. - def enterOpt_repeatable_clause(self, ctx:PostgreSQLParser.Opt_repeatable_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_repeatable_clause. - def exitOpt_repeatable_clause(self, ctx:PostgreSQLParser.Opt_repeatable_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_table. - def enterFunc_table(self, ctx:PostgreSQLParser.Func_tableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_table. - def exitFunc_table(self, ctx:PostgreSQLParser.Func_tableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsfrom_item. - def enterRowsfrom_item(self, ctx:PostgreSQLParser.Rowsfrom_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsfrom_item. - def exitRowsfrom_item(self, ctx:PostgreSQLParser.Rowsfrom_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rowsfrom_list. - def enterRowsfrom_list(self, ctx:PostgreSQLParser.Rowsfrom_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rowsfrom_list. - def exitRowsfrom_list(self, ctx:PostgreSQLParser.Rowsfrom_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_col_def_list. - def enterOpt_col_def_list(self, ctx:PostgreSQLParser.Opt_col_def_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_col_def_list. - def exitOpt_col_def_list(self, ctx:PostgreSQLParser.Opt_col_def_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_ordinality. - def enterOpt_ordinality(self, ctx:PostgreSQLParser.Opt_ordinalityContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_ordinality. - def exitOpt_ordinality(self, ctx:PostgreSQLParser.Opt_ordinalityContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#where_clause. - def enterWhere_clause(self, ctx:PostgreSQLParser.Where_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#where_clause. - def exitWhere_clause(self, ctx:PostgreSQLParser.Where_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#where_or_current_clause. - def enterWhere_or_current_clause(self, ctx:PostgreSQLParser.Where_or_current_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#where_or_current_clause. - def exitWhere_or_current_clause(self, ctx:PostgreSQLParser.Where_or_current_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opttablefuncelementlist. - def enterOpttablefuncelementlist(self, ctx:PostgreSQLParser.OpttablefuncelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opttablefuncelementlist. - def exitOpttablefuncelementlist(self, ctx:PostgreSQLParser.OpttablefuncelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablefuncelementlist. - def enterTablefuncelementlist(self, ctx:PostgreSQLParser.TablefuncelementlistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablefuncelementlist. - def exitTablefuncelementlist(self, ctx:PostgreSQLParser.TablefuncelementlistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#tablefuncelement. - def enterTablefuncelement(self, ctx:PostgreSQLParser.TablefuncelementContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#tablefuncelement. - def exitTablefuncelement(self, ctx:PostgreSQLParser.TablefuncelementContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmltable. - def enterXmltable(self, ctx:PostgreSQLParser.XmltableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmltable. - def exitXmltable(self, ctx:PostgreSQLParser.XmltableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmltable_column_list. - def enterXmltable_column_list(self, ctx:PostgreSQLParser.Xmltable_column_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmltable_column_list. - def exitXmltable_column_list(self, ctx:PostgreSQLParser.Xmltable_column_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmltable_column_el. - def enterXmltable_column_el(self, ctx:PostgreSQLParser.Xmltable_column_elContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmltable_column_el. - def exitXmltable_column_el(self, ctx:PostgreSQLParser.Xmltable_column_elContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmltable_column_option_list. - def enterXmltable_column_option_list(self, ctx:PostgreSQLParser.Xmltable_column_option_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmltable_column_option_list. - def exitXmltable_column_option_list(self, ctx:PostgreSQLParser.Xmltable_column_option_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmltable_column_option_el. - def enterXmltable_column_option_el(self, ctx:PostgreSQLParser.Xmltable_column_option_elContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmltable_column_option_el. - def exitXmltable_column_option_el(self, ctx:PostgreSQLParser.Xmltable_column_option_elContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_namespace_list. - def enterXml_namespace_list(self, ctx:PostgreSQLParser.Xml_namespace_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_namespace_list. - def exitXml_namespace_list(self, ctx:PostgreSQLParser.Xml_namespace_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_namespace_el. - def enterXml_namespace_el(self, ctx:PostgreSQLParser.Xml_namespace_elContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_namespace_el. - def exitXml_namespace_el(self, ctx:PostgreSQLParser.Xml_namespace_elContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#typename. - def enterTypename(self, ctx:PostgreSQLParser.TypenameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#typename. - def exitTypename(self, ctx:PostgreSQLParser.TypenameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_array_bounds. - def enterOpt_array_bounds(self, ctx:PostgreSQLParser.Opt_array_boundsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_array_bounds. - def exitOpt_array_bounds(self, ctx:PostgreSQLParser.Opt_array_boundsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#simpletypename. - def enterSimpletypename(self, ctx:PostgreSQLParser.SimpletypenameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#simpletypename. - def exitSimpletypename(self, ctx:PostgreSQLParser.SimpletypenameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#consttypename. - def enterConsttypename(self, ctx:PostgreSQLParser.ConsttypenameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#consttypename. - def exitConsttypename(self, ctx:PostgreSQLParser.ConsttypenameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#generictype. - def enterGenerictype(self, ctx:PostgreSQLParser.GenerictypeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#generictype. - def exitGenerictype(self, ctx:PostgreSQLParser.GenerictypeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_type_modifiers. - def enterOpt_type_modifiers(self, ctx:PostgreSQLParser.Opt_type_modifiersContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_type_modifiers. - def exitOpt_type_modifiers(self, ctx:PostgreSQLParser.Opt_type_modifiersContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#numeric. - def enterNumeric(self, ctx:PostgreSQLParser.NumericContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#numeric. - def exitNumeric(self, ctx:PostgreSQLParser.NumericContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_float. - def enterOpt_float(self, ctx:PostgreSQLParser.Opt_floatContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_float. - def exitOpt_float(self, ctx:PostgreSQLParser.Opt_floatContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#bit. - def enterBit(self, ctx:PostgreSQLParser.BitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#bit. - def exitBit(self, ctx:PostgreSQLParser.BitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constbit. - def enterConstbit(self, ctx:PostgreSQLParser.ConstbitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constbit. - def exitConstbit(self, ctx:PostgreSQLParser.ConstbitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#bitwithlength. - def enterBitwithlength(self, ctx:PostgreSQLParser.BitwithlengthContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#bitwithlength. - def exitBitwithlength(self, ctx:PostgreSQLParser.BitwithlengthContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#bitwithoutlength. - def enterBitwithoutlength(self, ctx:PostgreSQLParser.BitwithoutlengthContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#bitwithoutlength. - def exitBitwithoutlength(self, ctx:PostgreSQLParser.BitwithoutlengthContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#character. - def enterCharacter(self, ctx:PostgreSQLParser.CharacterContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#character. - def exitCharacter(self, ctx:PostgreSQLParser.CharacterContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constcharacter. - def enterConstcharacter(self, ctx:PostgreSQLParser.ConstcharacterContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constcharacter. - def exitConstcharacter(self, ctx:PostgreSQLParser.ConstcharacterContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#character_c. - def enterCharacter_c(self, ctx:PostgreSQLParser.Character_cContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#character_c. - def exitCharacter_c(self, ctx:PostgreSQLParser.Character_cContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_varying. - def enterOpt_varying(self, ctx:PostgreSQLParser.Opt_varyingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_varying. - def exitOpt_varying(self, ctx:PostgreSQLParser.Opt_varyingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constdatetime. - def enterConstdatetime(self, ctx:PostgreSQLParser.ConstdatetimeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constdatetime. - def exitConstdatetime(self, ctx:PostgreSQLParser.ConstdatetimeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#constinterval. - def enterConstinterval(self, ctx:PostgreSQLParser.ConstintervalContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#constinterval. - def exitConstinterval(self, ctx:PostgreSQLParser.ConstintervalContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_timezone. - def enterOpt_timezone(self, ctx:PostgreSQLParser.Opt_timezoneContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_timezone. - def exitOpt_timezone(self, ctx:PostgreSQLParser.Opt_timezoneContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_interval. - def enterOpt_interval(self, ctx:PostgreSQLParser.Opt_intervalContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_interval. - def exitOpt_interval(self, ctx:PostgreSQLParser.Opt_intervalContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#interval_second. - def enterInterval_second(self, ctx:PostgreSQLParser.Interval_secondContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#interval_second. - def exitInterval_second(self, ctx:PostgreSQLParser.Interval_secondContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_escape. - def enterOpt_escape(self, ctx:PostgreSQLParser.Opt_escapeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_escape. - def exitOpt_escape(self, ctx:PostgreSQLParser.Opt_escapeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr. - def enterA_expr(self, ctx:PostgreSQLParser.A_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr. - def exitA_expr(self, ctx:PostgreSQLParser.A_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_qual. - def enterA_expr_qual(self, ctx:PostgreSQLParser.A_expr_qualContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_qual. - def exitA_expr_qual(self, ctx:PostgreSQLParser.A_expr_qualContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_lessless. - def enterA_expr_lessless(self, ctx:PostgreSQLParser.A_expr_lesslessContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_lessless. - def exitA_expr_lessless(self, ctx:PostgreSQLParser.A_expr_lesslessContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_or. - def enterA_expr_or(self, ctx:PostgreSQLParser.A_expr_orContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_or. - def exitA_expr_or(self, ctx:PostgreSQLParser.A_expr_orContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_and. - def enterA_expr_and(self, ctx:PostgreSQLParser.A_expr_andContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_and. - def exitA_expr_and(self, ctx:PostgreSQLParser.A_expr_andContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_between. - def enterA_expr_between(self, ctx:PostgreSQLParser.A_expr_betweenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_between. - def exitA_expr_between(self, ctx:PostgreSQLParser.A_expr_betweenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_in. - def enterA_expr_in(self, ctx:PostgreSQLParser.A_expr_inContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_in. - def exitA_expr_in(self, ctx:PostgreSQLParser.A_expr_inContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_unary_not. - def enterA_expr_unary_not(self, ctx:PostgreSQLParser.A_expr_unary_notContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_unary_not. - def exitA_expr_unary_not(self, ctx:PostgreSQLParser.A_expr_unary_notContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_isnull. - def enterA_expr_isnull(self, ctx:PostgreSQLParser.A_expr_isnullContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_isnull. - def exitA_expr_isnull(self, ctx:PostgreSQLParser.A_expr_isnullContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_is_not. - def enterA_expr_is_not(self, ctx:PostgreSQLParser.A_expr_is_notContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_is_not. - def exitA_expr_is_not(self, ctx:PostgreSQLParser.A_expr_is_notContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_compare. - def enterA_expr_compare(self, ctx:PostgreSQLParser.A_expr_compareContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_compare. - def exitA_expr_compare(self, ctx:PostgreSQLParser.A_expr_compareContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_like. - def enterA_expr_like(self, ctx:PostgreSQLParser.A_expr_likeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_like. - def exitA_expr_like(self, ctx:PostgreSQLParser.A_expr_likeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_qual_op. - def enterA_expr_qual_op(self, ctx:PostgreSQLParser.A_expr_qual_opContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_qual_op. - def exitA_expr_qual_op(self, ctx:PostgreSQLParser.A_expr_qual_opContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_unary_qualop. - def enterA_expr_unary_qualop(self, ctx:PostgreSQLParser.A_expr_unary_qualopContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_unary_qualop. - def exitA_expr_unary_qualop(self, ctx:PostgreSQLParser.A_expr_unary_qualopContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_add. - def enterA_expr_add(self, ctx:PostgreSQLParser.A_expr_addContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_add. - def exitA_expr_add(self, ctx:PostgreSQLParser.A_expr_addContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_mul. - def enterA_expr_mul(self, ctx:PostgreSQLParser.A_expr_mulContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_mul. - def exitA_expr_mul(self, ctx:PostgreSQLParser.A_expr_mulContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_caret. - def enterA_expr_caret(self, ctx:PostgreSQLParser.A_expr_caretContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_caret. - def exitA_expr_caret(self, ctx:PostgreSQLParser.A_expr_caretContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_unary_sign. - def enterA_expr_unary_sign(self, ctx:PostgreSQLParser.A_expr_unary_signContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_unary_sign. - def exitA_expr_unary_sign(self, ctx:PostgreSQLParser.A_expr_unary_signContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_at_time_zone. - def enterA_expr_at_time_zone(self, ctx:PostgreSQLParser.A_expr_at_time_zoneContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_at_time_zone. - def exitA_expr_at_time_zone(self, ctx:PostgreSQLParser.A_expr_at_time_zoneContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_collate. - def enterA_expr_collate(self, ctx:PostgreSQLParser.A_expr_collateContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_collate. - def exitA_expr_collate(self, ctx:PostgreSQLParser.A_expr_collateContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#a_expr_typecast. - def enterA_expr_typecast(self, ctx:PostgreSQLParser.A_expr_typecastContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#a_expr_typecast. - def exitA_expr_typecast(self, ctx:PostgreSQLParser.A_expr_typecastContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#b_expr. - def enterB_expr(self, ctx:PostgreSQLParser.B_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#b_expr. - def exitB_expr(self, ctx:PostgreSQLParser.B_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#c_expr_exists. - def enterC_expr_exists(self, ctx:PostgreSQLParser.C_expr_existsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#c_expr_exists. - def exitC_expr_exists(self, ctx:PostgreSQLParser.C_expr_existsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#c_expr_expr. - def enterC_expr_expr(self, ctx:PostgreSQLParser.C_expr_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#c_expr_expr. - def exitC_expr_expr(self, ctx:PostgreSQLParser.C_expr_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#c_expr_case. - def enterC_expr_case(self, ctx:PostgreSQLParser.C_expr_caseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#c_expr_case. - def exitC_expr_case(self, ctx:PostgreSQLParser.C_expr_caseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsqlvariablename. - def enterPlsqlvariablename(self, ctx:PostgreSQLParser.PlsqlvariablenameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsqlvariablename. - def exitPlsqlvariablename(self, ctx:PostgreSQLParser.PlsqlvariablenameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_application. - def enterFunc_application(self, ctx:PostgreSQLParser.Func_applicationContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_application. - def exitFunc_application(self, ctx:PostgreSQLParser.Func_applicationContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_expr. - def enterFunc_expr(self, ctx:PostgreSQLParser.Func_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_expr. - def exitFunc_expr(self, ctx:PostgreSQLParser.Func_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_expr_windowless. - def enterFunc_expr_windowless(self, ctx:PostgreSQLParser.Func_expr_windowlessContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_expr_windowless. - def exitFunc_expr_windowless(self, ctx:PostgreSQLParser.Func_expr_windowlessContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_expr_common_subexpr. - def enterFunc_expr_common_subexpr(self, ctx:PostgreSQLParser.Func_expr_common_subexprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_expr_common_subexpr. - def exitFunc_expr_common_subexpr(self, ctx:PostgreSQLParser.Func_expr_common_subexprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_root_version. - def enterXml_root_version(self, ctx:PostgreSQLParser.Xml_root_versionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_root_version. - def exitXml_root_version(self, ctx:PostgreSQLParser.Xml_root_versionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_xml_root_standalone. - def enterOpt_xml_root_standalone(self, ctx:PostgreSQLParser.Opt_xml_root_standaloneContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_xml_root_standalone. - def exitOpt_xml_root_standalone(self, ctx:PostgreSQLParser.Opt_xml_root_standaloneContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_attributes. - def enterXml_attributes(self, ctx:PostgreSQLParser.Xml_attributesContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_attributes. - def exitXml_attributes(self, ctx:PostgreSQLParser.Xml_attributesContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_attribute_list. - def enterXml_attribute_list(self, ctx:PostgreSQLParser.Xml_attribute_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_attribute_list. - def exitXml_attribute_list(self, ctx:PostgreSQLParser.Xml_attribute_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_attribute_el. - def enterXml_attribute_el(self, ctx:PostgreSQLParser.Xml_attribute_elContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_attribute_el. - def exitXml_attribute_el(self, ctx:PostgreSQLParser.Xml_attribute_elContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#document_or_content. - def enterDocument_or_content(self, ctx:PostgreSQLParser.Document_or_contentContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#document_or_content. - def exitDocument_or_content(self, ctx:PostgreSQLParser.Document_or_contentContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_whitespace_option. - def enterXml_whitespace_option(self, ctx:PostgreSQLParser.Xml_whitespace_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_whitespace_option. - def exitXml_whitespace_option(self, ctx:PostgreSQLParser.Xml_whitespace_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xmlexists_argument. - def enterXmlexists_argument(self, ctx:PostgreSQLParser.Xmlexists_argumentContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xmlexists_argument. - def exitXmlexists_argument(self, ctx:PostgreSQLParser.Xmlexists_argumentContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xml_passing_mech. - def enterXml_passing_mech(self, ctx:PostgreSQLParser.Xml_passing_mechContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xml_passing_mech. - def exitXml_passing_mech(self, ctx:PostgreSQLParser.Xml_passing_mechContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#within_group_clause. - def enterWithin_group_clause(self, ctx:PostgreSQLParser.Within_group_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#within_group_clause. - def exitWithin_group_clause(self, ctx:PostgreSQLParser.Within_group_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#filter_clause. - def enterFilter_clause(self, ctx:PostgreSQLParser.Filter_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#filter_clause. - def exitFilter_clause(self, ctx:PostgreSQLParser.Filter_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#window_clause. - def enterWindow_clause(self, ctx:PostgreSQLParser.Window_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#window_clause. - def exitWindow_clause(self, ctx:PostgreSQLParser.Window_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#window_definition_list. - def enterWindow_definition_list(self, ctx:PostgreSQLParser.Window_definition_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#window_definition_list. - def exitWindow_definition_list(self, ctx:PostgreSQLParser.Window_definition_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#window_definition. - def enterWindow_definition(self, ctx:PostgreSQLParser.Window_definitionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#window_definition. - def exitWindow_definition(self, ctx:PostgreSQLParser.Window_definitionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#over_clause. - def enterOver_clause(self, ctx:PostgreSQLParser.Over_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#over_clause. - def exitOver_clause(self, ctx:PostgreSQLParser.Over_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#window_specification. - def enterWindow_specification(self, ctx:PostgreSQLParser.Window_specificationContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#window_specification. - def exitWindow_specification(self, ctx:PostgreSQLParser.Window_specificationContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_existing_window_name. - def enterOpt_existing_window_name(self, ctx:PostgreSQLParser.Opt_existing_window_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_existing_window_name. - def exitOpt_existing_window_name(self, ctx:PostgreSQLParser.Opt_existing_window_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_partition_clause. - def enterOpt_partition_clause(self, ctx:PostgreSQLParser.Opt_partition_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_partition_clause. - def exitOpt_partition_clause(self, ctx:PostgreSQLParser.Opt_partition_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_frame_clause. - def enterOpt_frame_clause(self, ctx:PostgreSQLParser.Opt_frame_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_frame_clause. - def exitOpt_frame_clause(self, ctx:PostgreSQLParser.Opt_frame_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#frame_extent. - def enterFrame_extent(self, ctx:PostgreSQLParser.Frame_extentContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#frame_extent. - def exitFrame_extent(self, ctx:PostgreSQLParser.Frame_extentContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#frame_bound. - def enterFrame_bound(self, ctx:PostgreSQLParser.Frame_boundContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#frame_bound. - def exitFrame_bound(self, ctx:PostgreSQLParser.Frame_boundContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_window_exclusion_clause. - def enterOpt_window_exclusion_clause(self, ctx:PostgreSQLParser.Opt_window_exclusion_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_window_exclusion_clause. - def exitOpt_window_exclusion_clause(self, ctx:PostgreSQLParser.Opt_window_exclusion_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#row. - def enterRow(self, ctx:PostgreSQLParser.RowContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#row. - def exitRow(self, ctx:PostgreSQLParser.RowContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#explicit_row. - def enterExplicit_row(self, ctx:PostgreSQLParser.Explicit_rowContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#explicit_row. - def exitExplicit_row(self, ctx:PostgreSQLParser.Explicit_rowContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#implicit_row. - def enterImplicit_row(self, ctx:PostgreSQLParser.Implicit_rowContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#implicit_row. - def exitImplicit_row(self, ctx:PostgreSQLParser.Implicit_rowContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sub_type. - def enterSub_type(self, ctx:PostgreSQLParser.Sub_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sub_type. - def exitSub_type(self, ctx:PostgreSQLParser.Sub_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#all_op. - def enterAll_op(self, ctx:PostgreSQLParser.All_opContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#all_op. - def exitAll_op(self, ctx:PostgreSQLParser.All_opContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#mathop. - def enterMathop(self, ctx:PostgreSQLParser.MathopContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#mathop. - def exitMathop(self, ctx:PostgreSQLParser.MathopContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#qual_op. - def enterQual_op(self, ctx:PostgreSQLParser.Qual_opContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#qual_op. - def exitQual_op(self, ctx:PostgreSQLParser.Qual_opContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#qual_all_op. - def enterQual_all_op(self, ctx:PostgreSQLParser.Qual_all_opContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#qual_all_op. - def exitQual_all_op(self, ctx:PostgreSQLParser.Qual_all_opContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#subquery_Op. - def enterSubquery_Op(self, ctx:PostgreSQLParser.Subquery_OpContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#subquery_Op. - def exitSubquery_Op(self, ctx:PostgreSQLParser.Subquery_OpContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#expr_list. - def enterExpr_list(self, ctx:PostgreSQLParser.Expr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#expr_list. - def exitExpr_list(self, ctx:PostgreSQLParser.Expr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_arg_list. - def enterFunc_arg_list(self, ctx:PostgreSQLParser.Func_arg_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_arg_list. - def exitFunc_arg_list(self, ctx:PostgreSQLParser.Func_arg_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_arg_expr. - def enterFunc_arg_expr(self, ctx:PostgreSQLParser.Func_arg_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_arg_expr. - def exitFunc_arg_expr(self, ctx:PostgreSQLParser.Func_arg_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#type_list. - def enterType_list(self, ctx:PostgreSQLParser.Type_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#type_list. - def exitType_list(self, ctx:PostgreSQLParser.Type_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#array_expr. - def enterArray_expr(self, ctx:PostgreSQLParser.Array_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#array_expr. - def exitArray_expr(self, ctx:PostgreSQLParser.Array_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#array_expr_list. - def enterArray_expr_list(self, ctx:PostgreSQLParser.Array_expr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#array_expr_list. - def exitArray_expr_list(self, ctx:PostgreSQLParser.Array_expr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#extract_list. - def enterExtract_list(self, ctx:PostgreSQLParser.Extract_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#extract_list. - def exitExtract_list(self, ctx:PostgreSQLParser.Extract_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#extract_arg. - def enterExtract_arg(self, ctx:PostgreSQLParser.Extract_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#extract_arg. - def exitExtract_arg(self, ctx:PostgreSQLParser.Extract_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#unicode_normal_form. - def enterUnicode_normal_form(self, ctx:PostgreSQLParser.Unicode_normal_formContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#unicode_normal_form. - def exitUnicode_normal_form(self, ctx:PostgreSQLParser.Unicode_normal_formContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#overlay_list. - def enterOverlay_list(self, ctx:PostgreSQLParser.Overlay_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#overlay_list. - def exitOverlay_list(self, ctx:PostgreSQLParser.Overlay_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#position_list. - def enterPosition_list(self, ctx:PostgreSQLParser.Position_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#position_list. - def exitPosition_list(self, ctx:PostgreSQLParser.Position_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#substr_list. - def enterSubstr_list(self, ctx:PostgreSQLParser.Substr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#substr_list. - def exitSubstr_list(self, ctx:PostgreSQLParser.Substr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#trim_list. - def enterTrim_list(self, ctx:PostgreSQLParser.Trim_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#trim_list. - def exitTrim_list(self, ctx:PostgreSQLParser.Trim_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#in_expr_select. - def enterIn_expr_select(self, ctx:PostgreSQLParser.In_expr_selectContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#in_expr_select. - def exitIn_expr_select(self, ctx:PostgreSQLParser.In_expr_selectContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#in_expr_list. - def enterIn_expr_list(self, ctx:PostgreSQLParser.In_expr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#in_expr_list. - def exitIn_expr_list(self, ctx:PostgreSQLParser.In_expr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#case_expr. - def enterCase_expr(self, ctx:PostgreSQLParser.Case_exprContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#case_expr. - def exitCase_expr(self, ctx:PostgreSQLParser.Case_exprContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#when_clause_list. - def enterWhen_clause_list(self, ctx:PostgreSQLParser.When_clause_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#when_clause_list. - def exitWhen_clause_list(self, ctx:PostgreSQLParser.When_clause_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#when_clause. - def enterWhen_clause(self, ctx:PostgreSQLParser.When_clauseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#when_clause. - def exitWhen_clause(self, ctx:PostgreSQLParser.When_clauseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#case_default. - def enterCase_default(self, ctx:PostgreSQLParser.Case_defaultContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#case_default. - def exitCase_default(self, ctx:PostgreSQLParser.Case_defaultContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#case_arg. - def enterCase_arg(self, ctx:PostgreSQLParser.Case_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#case_arg. - def exitCase_arg(self, ctx:PostgreSQLParser.Case_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#columnref. - def enterColumnref(self, ctx:PostgreSQLParser.ColumnrefContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#columnref. - def exitColumnref(self, ctx:PostgreSQLParser.ColumnrefContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#indirection_el. - def enterIndirection_el(self, ctx:PostgreSQLParser.Indirection_elContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#indirection_el. - def exitIndirection_el(self, ctx:PostgreSQLParser.Indirection_elContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_slice_bound. - def enterOpt_slice_bound(self, ctx:PostgreSQLParser.Opt_slice_boundContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_slice_bound. - def exitOpt_slice_bound(self, ctx:PostgreSQLParser.Opt_slice_boundContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#indirection. - def enterIndirection(self, ctx:PostgreSQLParser.IndirectionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#indirection. - def exitIndirection(self, ctx:PostgreSQLParser.IndirectionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_indirection. - def enterOpt_indirection(self, ctx:PostgreSQLParser.Opt_indirectionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_indirection. - def exitOpt_indirection(self, ctx:PostgreSQLParser.Opt_indirectionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_target_list. - def enterOpt_target_list(self, ctx:PostgreSQLParser.Opt_target_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_target_list. - def exitOpt_target_list(self, ctx:PostgreSQLParser.Opt_target_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#target_list. - def enterTarget_list(self, ctx:PostgreSQLParser.Target_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#target_list. - def exitTarget_list(self, ctx:PostgreSQLParser.Target_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#target_label. - def enterTarget_label(self, ctx:PostgreSQLParser.Target_labelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#target_label. - def exitTarget_label(self, ctx:PostgreSQLParser.Target_labelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#target_star. - def enterTarget_star(self, ctx:PostgreSQLParser.Target_starContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#target_star. - def exitTarget_star(self, ctx:PostgreSQLParser.Target_starContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#qualified_name_list. - def enterQualified_name_list(self, ctx:PostgreSQLParser.Qualified_name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#qualified_name_list. - def exitQualified_name_list(self, ctx:PostgreSQLParser.Qualified_name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#qualified_name. - def enterQualified_name(self, ctx:PostgreSQLParser.Qualified_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#qualified_name. - def exitQualified_name(self, ctx:PostgreSQLParser.Qualified_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#name_list. - def enterName_list(self, ctx:PostgreSQLParser.Name_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#name_list. - def exitName_list(self, ctx:PostgreSQLParser.Name_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#name. - def enterName(self, ctx:PostgreSQLParser.NameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#name. - def exitName(self, ctx:PostgreSQLParser.NameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#attr_name. - def enterAttr_name(self, ctx:PostgreSQLParser.Attr_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#attr_name. - def exitAttr_name(self, ctx:PostgreSQLParser.Attr_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#file_name. - def enterFile_name(self, ctx:PostgreSQLParser.File_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#file_name. - def exitFile_name(self, ctx:PostgreSQLParser.File_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#func_name. - def enterFunc_name(self, ctx:PostgreSQLParser.Func_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#func_name. - def exitFunc_name(self, ctx:PostgreSQLParser.Func_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#aexprconst. - def enterAexprconst(self, ctx:PostgreSQLParser.AexprconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#aexprconst. - def exitAexprconst(self, ctx:PostgreSQLParser.AexprconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#xconst. - def enterXconst(self, ctx:PostgreSQLParser.XconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#xconst. - def exitXconst(self, ctx:PostgreSQLParser.XconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#bconst. - def enterBconst(self, ctx:PostgreSQLParser.BconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#bconst. - def exitBconst(self, ctx:PostgreSQLParser.BconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#fconst. - def enterFconst(self, ctx:PostgreSQLParser.FconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#fconst. - def exitFconst(self, ctx:PostgreSQLParser.FconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#iconst. - def enterIconst(self, ctx:PostgreSQLParser.IconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#iconst. - def exitIconst(self, ctx:PostgreSQLParser.IconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sconst. - def enterSconst(self, ctx:PostgreSQLParser.SconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sconst. - def exitSconst(self, ctx:PostgreSQLParser.SconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#anysconst. - def enterAnysconst(self, ctx:PostgreSQLParser.AnysconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#anysconst. - def exitAnysconst(self, ctx:PostgreSQLParser.AnysconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_uescape. - def enterOpt_uescape(self, ctx:PostgreSQLParser.Opt_uescapeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_uescape. - def exitOpt_uescape(self, ctx:PostgreSQLParser.Opt_uescapeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#signediconst. - def enterSignediconst(self, ctx:PostgreSQLParser.SignediconstContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#signediconst. - def exitSignediconst(self, ctx:PostgreSQLParser.SignediconstContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#roleid. - def enterRoleid(self, ctx:PostgreSQLParser.RoleidContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#roleid. - def exitRoleid(self, ctx:PostgreSQLParser.RoleidContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#rolespec. - def enterRolespec(self, ctx:PostgreSQLParser.RolespecContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#rolespec. - def exitRolespec(self, ctx:PostgreSQLParser.RolespecContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#role_list. - def enterRole_list(self, ctx:PostgreSQLParser.Role_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#role_list. - def exitRole_list(self, ctx:PostgreSQLParser.Role_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#colid. - def enterColid(self, ctx:PostgreSQLParser.ColidContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#colid. - def exitColid(self, ctx:PostgreSQLParser.ColidContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#table_alias. - def enterTable_alias(self, ctx:PostgreSQLParser.Table_aliasContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#table_alias. - def exitTable_alias(self, ctx:PostgreSQLParser.Table_aliasContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#type_function_name. - def enterType_function_name(self, ctx:PostgreSQLParser.Type_function_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#type_function_name. - def exitType_function_name(self, ctx:PostgreSQLParser.Type_function_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#nonreservedword. - def enterNonreservedword(self, ctx:PostgreSQLParser.NonreservedwordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#nonreservedword. - def exitNonreservedword(self, ctx:PostgreSQLParser.NonreservedwordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#collabel. - def enterCollabel(self, ctx:PostgreSQLParser.CollabelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#collabel. - def exitCollabel(self, ctx:PostgreSQLParser.CollabelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#identifier. - def enterIdentifier(self, ctx:PostgreSQLParser.IdentifierContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#identifier. - def exitIdentifier(self, ctx:PostgreSQLParser.IdentifierContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsqlidentifier. - def enterPlsqlidentifier(self, ctx:PostgreSQLParser.PlsqlidentifierContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsqlidentifier. - def exitPlsqlidentifier(self, ctx:PostgreSQLParser.PlsqlidentifierContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#unreserved_keyword. - def enterUnreserved_keyword(self, ctx:PostgreSQLParser.Unreserved_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#unreserved_keyword. - def exitUnreserved_keyword(self, ctx:PostgreSQLParser.Unreserved_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#col_name_keyword. - def enterCol_name_keyword(self, ctx:PostgreSQLParser.Col_name_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#col_name_keyword. - def exitCol_name_keyword(self, ctx:PostgreSQLParser.Col_name_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#type_func_name_keyword. - def enterType_func_name_keyword(self, ctx:PostgreSQLParser.Type_func_name_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#type_func_name_keyword. - def exitType_func_name_keyword(self, ctx:PostgreSQLParser.Type_func_name_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#reserved_keyword. - def enterReserved_keyword(self, ctx:PostgreSQLParser.Reserved_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#reserved_keyword. - def exitReserved_keyword(self, ctx:PostgreSQLParser.Reserved_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#builtin_function_name. - def enterBuiltin_function_name(self, ctx:PostgreSQLParser.Builtin_function_nameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#builtin_function_name. - def exitBuiltin_function_name(self, ctx:PostgreSQLParser.Builtin_function_nameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#pl_function. - def enterPl_function(self, ctx:PostgreSQLParser.Pl_functionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#pl_function. - def exitPl_function(self, ctx:PostgreSQLParser.Pl_functionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#comp_options. - def enterComp_options(self, ctx:PostgreSQLParser.Comp_optionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#comp_options. - def exitComp_options(self, ctx:PostgreSQLParser.Comp_optionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#comp_option. - def enterComp_option(self, ctx:PostgreSQLParser.Comp_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#comp_option. - def exitComp_option(self, ctx:PostgreSQLParser.Comp_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sharp. - def enterSharp(self, ctx:PostgreSQLParser.SharpContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sharp. - def exitSharp(self, ctx:PostgreSQLParser.SharpContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#option_value. - def enterOption_value(self, ctx:PostgreSQLParser.Option_valueContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#option_value. - def exitOption_value(self, ctx:PostgreSQLParser.Option_valueContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_semi. - def enterOpt_semi(self, ctx:PostgreSQLParser.Opt_semiContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_semi. - def exitOpt_semi(self, ctx:PostgreSQLParser.Opt_semiContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#pl_block. - def enterPl_block(self, ctx:PostgreSQLParser.Pl_blockContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#pl_block. - def exitPl_block(self, ctx:PostgreSQLParser.Pl_blockContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_sect. - def enterDecl_sect(self, ctx:PostgreSQLParser.Decl_sectContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_sect. - def exitDecl_sect(self, ctx:PostgreSQLParser.Decl_sectContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_start. - def enterDecl_start(self, ctx:PostgreSQLParser.Decl_startContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_start. - def exitDecl_start(self, ctx:PostgreSQLParser.Decl_startContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_stmts. - def enterDecl_stmts(self, ctx:PostgreSQLParser.Decl_stmtsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_stmts. - def exitDecl_stmts(self, ctx:PostgreSQLParser.Decl_stmtsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#label_decl. - def enterLabel_decl(self, ctx:PostgreSQLParser.Label_declContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#label_decl. - def exitLabel_decl(self, ctx:PostgreSQLParser.Label_declContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_stmt. - def enterDecl_stmt(self, ctx:PostgreSQLParser.Decl_stmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_stmt. - def exitDecl_stmt(self, ctx:PostgreSQLParser.Decl_stmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_statement. - def enterDecl_statement(self, ctx:PostgreSQLParser.Decl_statementContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_statement. - def exitDecl_statement(self, ctx:PostgreSQLParser.Decl_statementContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_scrollable. - def enterOpt_scrollable(self, ctx:PostgreSQLParser.Opt_scrollableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_scrollable. - def exitOpt_scrollable(self, ctx:PostgreSQLParser.Opt_scrollableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_cursor_query. - def enterDecl_cursor_query(self, ctx:PostgreSQLParser.Decl_cursor_queryContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_cursor_query. - def exitDecl_cursor_query(self, ctx:PostgreSQLParser.Decl_cursor_queryContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_cursor_args. - def enterDecl_cursor_args(self, ctx:PostgreSQLParser.Decl_cursor_argsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_cursor_args. - def exitDecl_cursor_args(self, ctx:PostgreSQLParser.Decl_cursor_argsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_cursor_arglist. - def enterDecl_cursor_arglist(self, ctx:PostgreSQLParser.Decl_cursor_arglistContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_cursor_arglist. - def exitDecl_cursor_arglist(self, ctx:PostgreSQLParser.Decl_cursor_arglistContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_cursor_arg. - def enterDecl_cursor_arg(self, ctx:PostgreSQLParser.Decl_cursor_argContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_cursor_arg. - def exitDecl_cursor_arg(self, ctx:PostgreSQLParser.Decl_cursor_argContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_is_for. - def enterDecl_is_for(self, ctx:PostgreSQLParser.Decl_is_forContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_is_for. - def exitDecl_is_for(self, ctx:PostgreSQLParser.Decl_is_forContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_aliasitem. - def enterDecl_aliasitem(self, ctx:PostgreSQLParser.Decl_aliasitemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_aliasitem. - def exitDecl_aliasitem(self, ctx:PostgreSQLParser.Decl_aliasitemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_varname. - def enterDecl_varname(self, ctx:PostgreSQLParser.Decl_varnameContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_varname. - def exitDecl_varname(self, ctx:PostgreSQLParser.Decl_varnameContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_const. - def enterDecl_const(self, ctx:PostgreSQLParser.Decl_constContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_const. - def exitDecl_const(self, ctx:PostgreSQLParser.Decl_constContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_datatype. - def enterDecl_datatype(self, ctx:PostgreSQLParser.Decl_datatypeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_datatype. - def exitDecl_datatype(self, ctx:PostgreSQLParser.Decl_datatypeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_collate. - def enterDecl_collate(self, ctx:PostgreSQLParser.Decl_collateContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_collate. - def exitDecl_collate(self, ctx:PostgreSQLParser.Decl_collateContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_notnull. - def enterDecl_notnull(self, ctx:PostgreSQLParser.Decl_notnullContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_notnull. - def exitDecl_notnull(self, ctx:PostgreSQLParser.Decl_notnullContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_defval. - def enterDecl_defval(self, ctx:PostgreSQLParser.Decl_defvalContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_defval. - def exitDecl_defval(self, ctx:PostgreSQLParser.Decl_defvalContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#decl_defkey. - def enterDecl_defkey(self, ctx:PostgreSQLParser.Decl_defkeyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#decl_defkey. - def exitDecl_defkey(self, ctx:PostgreSQLParser.Decl_defkeyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#assign_operator. - def enterAssign_operator(self, ctx:PostgreSQLParser.Assign_operatorContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#assign_operator. - def exitAssign_operator(self, ctx:PostgreSQLParser.Assign_operatorContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_sect. - def enterProc_sect(self, ctx:PostgreSQLParser.Proc_sectContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_sect. - def exitProc_sect(self, ctx:PostgreSQLParser.Proc_sectContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_stmt. - def enterProc_stmt(self, ctx:PostgreSQLParser.Proc_stmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_stmt. - def exitProc_stmt(self, ctx:PostgreSQLParser.Proc_stmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_perform. - def enterStmt_perform(self, ctx:PostgreSQLParser.Stmt_performContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_perform. - def exitStmt_perform(self, ctx:PostgreSQLParser.Stmt_performContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_call. - def enterStmt_call(self, ctx:PostgreSQLParser.Stmt_callContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_call. - def exitStmt_call(self, ctx:PostgreSQLParser.Stmt_callContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_expr_list. - def enterOpt_expr_list(self, ctx:PostgreSQLParser.Opt_expr_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_expr_list. - def exitOpt_expr_list(self, ctx:PostgreSQLParser.Opt_expr_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_assign. - def enterStmt_assign(self, ctx:PostgreSQLParser.Stmt_assignContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_assign. - def exitStmt_assign(self, ctx:PostgreSQLParser.Stmt_assignContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_getdiag. - def enterStmt_getdiag(self, ctx:PostgreSQLParser.Stmt_getdiagContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_getdiag. - def exitStmt_getdiag(self, ctx:PostgreSQLParser.Stmt_getdiagContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#getdiag_area_opt. - def enterGetdiag_area_opt(self, ctx:PostgreSQLParser.Getdiag_area_optContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#getdiag_area_opt. - def exitGetdiag_area_opt(self, ctx:PostgreSQLParser.Getdiag_area_optContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#getdiag_list. - def enterGetdiag_list(self, ctx:PostgreSQLParser.Getdiag_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#getdiag_list. - def exitGetdiag_list(self, ctx:PostgreSQLParser.Getdiag_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#getdiag_list_item. - def enterGetdiag_list_item(self, ctx:PostgreSQLParser.Getdiag_list_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#getdiag_list_item. - def exitGetdiag_list_item(self, ctx:PostgreSQLParser.Getdiag_list_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#getdiag_item. - def enterGetdiag_item(self, ctx:PostgreSQLParser.Getdiag_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#getdiag_item. - def exitGetdiag_item(self, ctx:PostgreSQLParser.Getdiag_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#getdiag_target. - def enterGetdiag_target(self, ctx:PostgreSQLParser.Getdiag_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#getdiag_target. - def exitGetdiag_target(self, ctx:PostgreSQLParser.Getdiag_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#assign_var. - def enterAssign_var(self, ctx:PostgreSQLParser.Assign_varContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#assign_var. - def exitAssign_var(self, ctx:PostgreSQLParser.Assign_varContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_if. - def enterStmt_if(self, ctx:PostgreSQLParser.Stmt_ifContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_if. - def exitStmt_if(self, ctx:PostgreSQLParser.Stmt_ifContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_elsifs. - def enterStmt_elsifs(self, ctx:PostgreSQLParser.Stmt_elsifsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_elsifs. - def exitStmt_elsifs(self, ctx:PostgreSQLParser.Stmt_elsifsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_else. - def enterStmt_else(self, ctx:PostgreSQLParser.Stmt_elseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_else. - def exitStmt_else(self, ctx:PostgreSQLParser.Stmt_elseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_case. - def enterStmt_case(self, ctx:PostgreSQLParser.Stmt_caseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_case. - def exitStmt_case(self, ctx:PostgreSQLParser.Stmt_caseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_expr_until_when. - def enterOpt_expr_until_when(self, ctx:PostgreSQLParser.Opt_expr_until_whenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_expr_until_when. - def exitOpt_expr_until_when(self, ctx:PostgreSQLParser.Opt_expr_until_whenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#case_when_list. - def enterCase_when_list(self, ctx:PostgreSQLParser.Case_when_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#case_when_list. - def exitCase_when_list(self, ctx:PostgreSQLParser.Case_when_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#case_when. - def enterCase_when(self, ctx:PostgreSQLParser.Case_whenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#case_when. - def exitCase_when(self, ctx:PostgreSQLParser.Case_whenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_case_else. - def enterOpt_case_else(self, ctx:PostgreSQLParser.Opt_case_elseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_case_else. - def exitOpt_case_else(self, ctx:PostgreSQLParser.Opt_case_elseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_loop. - def enterStmt_loop(self, ctx:PostgreSQLParser.Stmt_loopContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_loop. - def exitStmt_loop(self, ctx:PostgreSQLParser.Stmt_loopContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_while. - def enterStmt_while(self, ctx:PostgreSQLParser.Stmt_whileContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_while. - def exitStmt_while(self, ctx:PostgreSQLParser.Stmt_whileContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_for. - def enterStmt_for(self, ctx:PostgreSQLParser.Stmt_forContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_for. - def exitStmt_for(self, ctx:PostgreSQLParser.Stmt_forContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_control. - def enterFor_control(self, ctx:PostgreSQLParser.For_controlContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_control. - def exitFor_control(self, ctx:PostgreSQLParser.For_controlContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_for_using_expression. - def enterOpt_for_using_expression(self, ctx:PostgreSQLParser.Opt_for_using_expressionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_for_using_expression. - def exitOpt_for_using_expression(self, ctx:PostgreSQLParser.Opt_for_using_expressionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_cursor_parameters. - def enterOpt_cursor_parameters(self, ctx:PostgreSQLParser.Opt_cursor_parametersContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_cursor_parameters. - def exitOpt_cursor_parameters(self, ctx:PostgreSQLParser.Opt_cursor_parametersContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_reverse. - def enterOpt_reverse(self, ctx:PostgreSQLParser.Opt_reverseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_reverse. - def exitOpt_reverse(self, ctx:PostgreSQLParser.Opt_reverseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_by_expression. - def enterOpt_by_expression(self, ctx:PostgreSQLParser.Opt_by_expressionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_by_expression. - def exitOpt_by_expression(self, ctx:PostgreSQLParser.Opt_by_expressionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#for_variable. - def enterFor_variable(self, ctx:PostgreSQLParser.For_variableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#for_variable. - def exitFor_variable(self, ctx:PostgreSQLParser.For_variableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_foreach_a. - def enterStmt_foreach_a(self, ctx:PostgreSQLParser.Stmt_foreach_aContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_foreach_a. - def exitStmt_foreach_a(self, ctx:PostgreSQLParser.Stmt_foreach_aContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#foreach_slice. - def enterForeach_slice(self, ctx:PostgreSQLParser.Foreach_sliceContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#foreach_slice. - def exitForeach_slice(self, ctx:PostgreSQLParser.Foreach_sliceContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_exit. - def enterStmt_exit(self, ctx:PostgreSQLParser.Stmt_exitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_exit. - def exitStmt_exit(self, ctx:PostgreSQLParser.Stmt_exitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#exit_type. - def enterExit_type(self, ctx:PostgreSQLParser.Exit_typeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#exit_type. - def exitExit_type(self, ctx:PostgreSQLParser.Exit_typeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_return. - def enterStmt_return(self, ctx:PostgreSQLParser.Stmt_returnContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_return. - def exitStmt_return(self, ctx:PostgreSQLParser.Stmt_returnContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_return_result. - def enterOpt_return_result(self, ctx:PostgreSQLParser.Opt_return_resultContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_return_result. - def exitOpt_return_result(self, ctx:PostgreSQLParser.Opt_return_resultContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_raise. - def enterStmt_raise(self, ctx:PostgreSQLParser.Stmt_raiseContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_raise. - def exitStmt_raise(self, ctx:PostgreSQLParser.Stmt_raiseContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_stmt_raise_level. - def enterOpt_stmt_raise_level(self, ctx:PostgreSQLParser.Opt_stmt_raise_levelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_stmt_raise_level. - def exitOpt_stmt_raise_level(self, ctx:PostgreSQLParser.Opt_stmt_raise_levelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_raise_list. - def enterOpt_raise_list(self, ctx:PostgreSQLParser.Opt_raise_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_raise_list. - def exitOpt_raise_list(self, ctx:PostgreSQLParser.Opt_raise_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_raise_using. - def enterOpt_raise_using(self, ctx:PostgreSQLParser.Opt_raise_usingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_raise_using. - def exitOpt_raise_using(self, ctx:PostgreSQLParser.Opt_raise_usingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_raise_using_elem. - def enterOpt_raise_using_elem(self, ctx:PostgreSQLParser.Opt_raise_using_elemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_raise_using_elem. - def exitOpt_raise_using_elem(self, ctx:PostgreSQLParser.Opt_raise_using_elemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_raise_using_elem_list. - def enterOpt_raise_using_elem_list(self, ctx:PostgreSQLParser.Opt_raise_using_elem_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_raise_using_elem_list. - def exitOpt_raise_using_elem_list(self, ctx:PostgreSQLParser.Opt_raise_using_elem_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_assert. - def enterStmt_assert(self, ctx:PostgreSQLParser.Stmt_assertContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_assert. - def exitStmt_assert(self, ctx:PostgreSQLParser.Stmt_assertContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_stmt_assert_message. - def enterOpt_stmt_assert_message(self, ctx:PostgreSQLParser.Opt_stmt_assert_messageContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_stmt_assert_message. - def exitOpt_stmt_assert_message(self, ctx:PostgreSQLParser.Opt_stmt_assert_messageContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#loop_body. - def enterLoop_body(self, ctx:PostgreSQLParser.Loop_bodyContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#loop_body. - def exitLoop_body(self, ctx:PostgreSQLParser.Loop_bodyContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_execsql. - def enterStmt_execsql(self, ctx:PostgreSQLParser.Stmt_execsqlContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_execsql. - def exitStmt_execsql(self, ctx:PostgreSQLParser.Stmt_execsqlContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_dynexecute. - def enterStmt_dynexecute(self, ctx:PostgreSQLParser.Stmt_dynexecuteContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_dynexecute. - def exitStmt_dynexecute(self, ctx:PostgreSQLParser.Stmt_dynexecuteContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_execute_using. - def enterOpt_execute_using(self, ctx:PostgreSQLParser.Opt_execute_usingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_execute_using. - def exitOpt_execute_using(self, ctx:PostgreSQLParser.Opt_execute_usingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_execute_using_list. - def enterOpt_execute_using_list(self, ctx:PostgreSQLParser.Opt_execute_using_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_execute_using_list. - def exitOpt_execute_using_list(self, ctx:PostgreSQLParser.Opt_execute_using_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_execute_into. - def enterOpt_execute_into(self, ctx:PostgreSQLParser.Opt_execute_intoContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_execute_into. - def exitOpt_execute_into(self, ctx:PostgreSQLParser.Opt_execute_intoContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_open. - def enterStmt_open(self, ctx:PostgreSQLParser.Stmt_openContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_open. - def exitStmt_open(self, ctx:PostgreSQLParser.Stmt_openContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_open_bound_list_item. - def enterOpt_open_bound_list_item(self, ctx:PostgreSQLParser.Opt_open_bound_list_itemContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_open_bound_list_item. - def exitOpt_open_bound_list_item(self, ctx:PostgreSQLParser.Opt_open_bound_list_itemContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_open_bound_list. - def enterOpt_open_bound_list(self, ctx:PostgreSQLParser.Opt_open_bound_listContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_open_bound_list. - def exitOpt_open_bound_list(self, ctx:PostgreSQLParser.Opt_open_bound_listContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_open_using. - def enterOpt_open_using(self, ctx:PostgreSQLParser.Opt_open_usingContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_open_using. - def exitOpt_open_using(self, ctx:PostgreSQLParser.Opt_open_usingContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_scroll_option. - def enterOpt_scroll_option(self, ctx:PostgreSQLParser.Opt_scroll_optionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_scroll_option. - def exitOpt_scroll_option(self, ctx:PostgreSQLParser.Opt_scroll_optionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_scroll_option_no. - def enterOpt_scroll_option_no(self, ctx:PostgreSQLParser.Opt_scroll_option_noContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_scroll_option_no. - def exitOpt_scroll_option_no(self, ctx:PostgreSQLParser.Opt_scroll_option_noContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_fetch. - def enterStmt_fetch(self, ctx:PostgreSQLParser.Stmt_fetchContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_fetch. - def exitStmt_fetch(self, ctx:PostgreSQLParser.Stmt_fetchContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#into_target. - def enterInto_target(self, ctx:PostgreSQLParser.Into_targetContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#into_target. - def exitInto_target(self, ctx:PostgreSQLParser.Into_targetContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_cursor_from. - def enterOpt_cursor_from(self, ctx:PostgreSQLParser.Opt_cursor_fromContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_cursor_from. - def exitOpt_cursor_from(self, ctx:PostgreSQLParser.Opt_cursor_fromContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_fetch_direction. - def enterOpt_fetch_direction(self, ctx:PostgreSQLParser.Opt_fetch_directionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_fetch_direction. - def exitOpt_fetch_direction(self, ctx:PostgreSQLParser.Opt_fetch_directionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_move. - def enterStmt_move(self, ctx:PostgreSQLParser.Stmt_moveContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_move. - def exitStmt_move(self, ctx:PostgreSQLParser.Stmt_moveContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_close. - def enterStmt_close(self, ctx:PostgreSQLParser.Stmt_closeContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_close. - def exitStmt_close(self, ctx:PostgreSQLParser.Stmt_closeContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_null. - def enterStmt_null(self, ctx:PostgreSQLParser.Stmt_nullContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_null. - def exitStmt_null(self, ctx:PostgreSQLParser.Stmt_nullContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_commit. - def enterStmt_commit(self, ctx:PostgreSQLParser.Stmt_commitContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_commit. - def exitStmt_commit(self, ctx:PostgreSQLParser.Stmt_commitContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_rollback. - def enterStmt_rollback(self, ctx:PostgreSQLParser.Stmt_rollbackContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_rollback. - def exitStmt_rollback(self, ctx:PostgreSQLParser.Stmt_rollbackContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsql_opt_transaction_chain. - def enterPlsql_opt_transaction_chain(self, ctx:PostgreSQLParser.Plsql_opt_transaction_chainContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsql_opt_transaction_chain. - def exitPlsql_opt_transaction_chain(self, ctx:PostgreSQLParser.Plsql_opt_transaction_chainContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#stmt_set. - def enterStmt_set(self, ctx:PostgreSQLParser.Stmt_setContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#stmt_set. - def exitStmt_set(self, ctx:PostgreSQLParser.Stmt_setContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#cursor_variable. - def enterCursor_variable(self, ctx:PostgreSQLParser.Cursor_variableContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#cursor_variable. - def exitCursor_variable(self, ctx:PostgreSQLParser.Cursor_variableContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#exception_sect. - def enterException_sect(self, ctx:PostgreSQLParser.Exception_sectContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#exception_sect. - def exitException_sect(self, ctx:PostgreSQLParser.Exception_sectContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_exceptions. - def enterProc_exceptions(self, ctx:PostgreSQLParser.Proc_exceptionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_exceptions. - def exitProc_exceptions(self, ctx:PostgreSQLParser.Proc_exceptionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_exception. - def enterProc_exception(self, ctx:PostgreSQLParser.Proc_exceptionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_exception. - def exitProc_exception(self, ctx:PostgreSQLParser.Proc_exceptionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_conditions. - def enterProc_conditions(self, ctx:PostgreSQLParser.Proc_conditionsContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_conditions. - def exitProc_conditions(self, ctx:PostgreSQLParser.Proc_conditionsContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#proc_condition. - def enterProc_condition(self, ctx:PostgreSQLParser.Proc_conditionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#proc_condition. - def exitProc_condition(self, ctx:PostgreSQLParser.Proc_conditionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_block_label. - def enterOpt_block_label(self, ctx:PostgreSQLParser.Opt_block_labelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_block_label. - def exitOpt_block_label(self, ctx:PostgreSQLParser.Opt_block_labelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_loop_label. - def enterOpt_loop_label(self, ctx:PostgreSQLParser.Opt_loop_labelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_loop_label. - def exitOpt_loop_label(self, ctx:PostgreSQLParser.Opt_loop_labelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_label. - def enterOpt_label(self, ctx:PostgreSQLParser.Opt_labelContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_label. - def exitOpt_label(self, ctx:PostgreSQLParser.Opt_labelContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_exitcond. - def enterOpt_exitcond(self, ctx:PostgreSQLParser.Opt_exitcondContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_exitcond. - def exitOpt_exitcond(self, ctx:PostgreSQLParser.Opt_exitcondContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#any_identifier. - def enterAny_identifier(self, ctx:PostgreSQLParser.Any_identifierContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#any_identifier. - def exitAny_identifier(self, ctx:PostgreSQLParser.Any_identifierContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#plsql_unreserved_keyword. - def enterPlsql_unreserved_keyword(self, ctx:PostgreSQLParser.Plsql_unreserved_keywordContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#plsql_unreserved_keyword. - def exitPlsql_unreserved_keyword(self, ctx:PostgreSQLParser.Plsql_unreserved_keywordContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#sql_expression. - def enterSql_expression(self, ctx:PostgreSQLParser.Sql_expressionContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#sql_expression. - def exitSql_expression(self, ctx:PostgreSQLParser.Sql_expressionContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#expr_until_then. - def enterExpr_until_then(self, ctx:PostgreSQLParser.Expr_until_thenContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#expr_until_then. - def exitExpr_until_then(self, ctx:PostgreSQLParser.Expr_until_thenContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#expr_until_semi. - def enterExpr_until_semi(self, ctx:PostgreSQLParser.Expr_until_semiContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#expr_until_semi. - def exitExpr_until_semi(self, ctx:PostgreSQLParser.Expr_until_semiContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#expr_until_rightbracket. - def enterExpr_until_rightbracket(self, ctx:PostgreSQLParser.Expr_until_rightbracketContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#expr_until_rightbracket. - def exitExpr_until_rightbracket(self, ctx:PostgreSQLParser.Expr_until_rightbracketContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#expr_until_loop. - def enterExpr_until_loop(self, ctx:PostgreSQLParser.Expr_until_loopContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#expr_until_loop. - def exitExpr_until_loop(self, ctx:PostgreSQLParser.Expr_until_loopContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#make_execsql_stmt. - def enterMake_execsql_stmt(self, ctx:PostgreSQLParser.Make_execsql_stmtContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#make_execsql_stmt. - def exitMake_execsql_stmt(self, ctx:PostgreSQLParser.Make_execsql_stmtContext): - pass - - - # Enter a parse tree produced by PostgreSQLParser#opt_returning_clause_into. - def enterOpt_returning_clause_into(self, ctx:PostgreSQLParser.Opt_returning_clause_intoContext): - pass - - # Exit a parse tree produced by PostgreSQLParser#opt_returning_clause_into. - def exitOpt_returning_clause_into(self, ctx:PostgreSQLParser.Opt_returning_clause_intoContext): - pass - - - -del PostgreSQLParser \ No newline at end of file diff --git a/antlr4_postgresql/PostgreSQLParserVisitor.py b/antlr4_postgresql/PostgreSQLParserVisitor.py deleted file mode 100644 index dd1b862..0000000 --- a/antlr4_postgresql/PostgreSQLParserVisitor.py +++ /dev/null @@ -1,4095 +0,0 @@ -# Generated from PostgreSQLParser.g4 by ANTLR 4.13.2 -from antlr4 import * -if "." in __name__: - from .PostgreSQLParser import PostgreSQLParser -else: - from PostgreSQLParser import PostgreSQLParser - - - -# This class defines a complete generic visitor for a parse tree produced by PostgreSQLParser. - -class PostgreSQLParserVisitor(ParseTreeVisitor): - - # Visit a parse tree produced by PostgreSQLParser#root. - def visitRoot(self, ctx:PostgreSQLParser.RootContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsqlroot. - def visitPlsqlroot(self, ctx:PostgreSQLParser.PlsqlrootContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmtblock. - def visitStmtblock(self, ctx:PostgreSQLParser.StmtblockContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmtmulti. - def visitStmtmulti(self, ctx:PostgreSQLParser.StmtmultiContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt. - def visitStmt(self, ctx:PostgreSQLParser.StmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsqlconsolecommand. - def visitPlsqlconsolecommand(self, ctx:PostgreSQLParser.PlsqlconsolecommandContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#callstmt. - def visitCallstmt(self, ctx:PostgreSQLParser.CallstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createrolestmt. - def visitCreaterolestmt(self, ctx:PostgreSQLParser.CreaterolestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_with. - def visitOpt_with(self, ctx:PostgreSQLParser.Opt_withContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optrolelist. - def visitOptrolelist(self, ctx:PostgreSQLParser.OptrolelistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alteroptrolelist. - def visitAlteroptrolelist(self, ctx:PostgreSQLParser.AlteroptrolelistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alteroptroleelem. - def visitAlteroptroleelem(self, ctx:PostgreSQLParser.AlteroptroleelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createoptroleelem. - def visitCreateoptroleelem(self, ctx:PostgreSQLParser.CreateoptroleelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createuserstmt. - def visitCreateuserstmt(self, ctx:PostgreSQLParser.CreateuserstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterrolestmt. - def visitAlterrolestmt(self, ctx:PostgreSQLParser.AlterrolestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_in_database. - def visitOpt_in_database(self, ctx:PostgreSQLParser.Opt_in_databaseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterrolesetstmt. - def visitAlterrolesetstmt(self, ctx:PostgreSQLParser.AlterrolesetstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#droprolestmt. - def visitDroprolestmt(self, ctx:PostgreSQLParser.DroprolestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#creategroupstmt. - def visitCreategroupstmt(self, ctx:PostgreSQLParser.CreategroupstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altergroupstmt. - def visitAltergroupstmt(self, ctx:PostgreSQLParser.AltergroupstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#add_drop. - def visitAdd_drop(self, ctx:PostgreSQLParser.Add_dropContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createschemastmt. - def visitCreateschemastmt(self, ctx:PostgreSQLParser.CreateschemastmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optschemaname. - def visitOptschemaname(self, ctx:PostgreSQLParser.OptschemanameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optschemaeltlist. - def visitOptschemaeltlist(self, ctx:PostgreSQLParser.OptschemaeltlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#schema_stmt. - def visitSchema_stmt(self, ctx:PostgreSQLParser.Schema_stmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#variablesetstmt. - def visitVariablesetstmt(self, ctx:PostgreSQLParser.VariablesetstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_rest. - def visitSet_rest(self, ctx:PostgreSQLParser.Set_restContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_set. - def visitGeneric_set(self, ctx:PostgreSQLParser.Generic_setContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_rest_more. - def visitSet_rest_more(self, ctx:PostgreSQLParser.Set_rest_moreContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#var_name. - def visitVar_name(self, ctx:PostgreSQLParser.Var_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#var_list. - def visitVar_list(self, ctx:PostgreSQLParser.Var_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#var_value. - def visitVar_value(self, ctx:PostgreSQLParser.Var_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#iso_level. - def visitIso_level(self, ctx:PostgreSQLParser.Iso_levelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_boolean_or_string. - def visitOpt_boolean_or_string(self, ctx:PostgreSQLParser.Opt_boolean_or_stringContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#zone_value. - def visitZone_value(self, ctx:PostgreSQLParser.Zone_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_encoding. - def visitOpt_encoding(self, ctx:PostgreSQLParser.Opt_encodingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#nonreservedword_or_sconst. - def visitNonreservedword_or_sconst(self, ctx:PostgreSQLParser.Nonreservedword_or_sconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#variableresetstmt. - def visitVariableresetstmt(self, ctx:PostgreSQLParser.VariableresetstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reset_rest. - def visitReset_rest(self, ctx:PostgreSQLParser.Reset_restContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_reset. - def visitGeneric_reset(self, ctx:PostgreSQLParser.Generic_resetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#setresetclause. - def visitSetresetclause(self, ctx:PostgreSQLParser.SetresetclauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#functionsetresetclause. - def visitFunctionsetresetclause(self, ctx:PostgreSQLParser.FunctionsetresetclauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#variableshowstmt. - def visitVariableshowstmt(self, ctx:PostgreSQLParser.VariableshowstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraintssetstmt. - def visitConstraintssetstmt(self, ctx:PostgreSQLParser.ConstraintssetstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraints_set_list. - def visitConstraints_set_list(self, ctx:PostgreSQLParser.Constraints_set_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraints_set_mode. - def visitConstraints_set_mode(self, ctx:PostgreSQLParser.Constraints_set_modeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#checkpointstmt. - def visitCheckpointstmt(self, ctx:PostgreSQLParser.CheckpointstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#discardstmt. - def visitDiscardstmt(self, ctx:PostgreSQLParser.DiscardstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altertablestmt. - def visitAltertablestmt(self, ctx:PostgreSQLParser.AltertablestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_table_cmds. - def visitAlter_table_cmds(self, ctx:PostgreSQLParser.Alter_table_cmdsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#partition_cmd. - def visitPartition_cmd(self, ctx:PostgreSQLParser.Partition_cmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#index_partition_cmd. - def visitIndex_partition_cmd(self, ctx:PostgreSQLParser.Index_partition_cmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_table_cmd. - def visitAlter_table_cmd(self, ctx:PostgreSQLParser.Alter_table_cmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_column_default. - def visitAlter_column_default(self, ctx:PostgreSQLParser.Alter_column_defaultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_drop_behavior. - def visitOpt_drop_behavior(self, ctx:PostgreSQLParser.Opt_drop_behaviorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_collate_clause. - def visitOpt_collate_clause(self, ctx:PostgreSQLParser.Opt_collate_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_using. - def visitAlter_using(self, ctx:PostgreSQLParser.Alter_usingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#replica_identity. - def visitReplica_identity(self, ctx:PostgreSQLParser.Replica_identityContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reloptions. - def visitReloptions(self, ctx:PostgreSQLParser.ReloptionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_reloptions. - def visitOpt_reloptions(self, ctx:PostgreSQLParser.Opt_reloptionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reloption_list. - def visitReloption_list(self, ctx:PostgreSQLParser.Reloption_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reloption_elem. - def visitReloption_elem(self, ctx:PostgreSQLParser.Reloption_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_identity_column_option_list. - def visitAlter_identity_column_option_list(self, ctx:PostgreSQLParser.Alter_identity_column_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_identity_column_option. - def visitAlter_identity_column_option(self, ctx:PostgreSQLParser.Alter_identity_column_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#partitionboundspec. - def visitPartitionboundspec(self, ctx:PostgreSQLParser.PartitionboundspecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#hash_partbound_elem. - def visitHash_partbound_elem(self, ctx:PostgreSQLParser.Hash_partbound_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#hash_partbound. - def visitHash_partbound(self, ctx:PostgreSQLParser.Hash_partboundContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altercompositetypestmt. - def visitAltercompositetypestmt(self, ctx:PostgreSQLParser.AltercompositetypestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_type_cmds. - def visitAlter_type_cmds(self, ctx:PostgreSQLParser.Alter_type_cmdsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_type_cmd. - def visitAlter_type_cmd(self, ctx:PostgreSQLParser.Alter_type_cmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#closeportalstmt. - def visitCloseportalstmt(self, ctx:PostgreSQLParser.CloseportalstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copystmt. - def visitCopystmt(self, ctx:PostgreSQLParser.CopystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_from. - def visitCopy_from(self, ctx:PostgreSQLParser.Copy_fromContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_program. - def visitOpt_program(self, ctx:PostgreSQLParser.Opt_programContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_file_name. - def visitCopy_file_name(self, ctx:PostgreSQLParser.Copy_file_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_options. - def visitCopy_options(self, ctx:PostgreSQLParser.Copy_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_opt_list. - def visitCopy_opt_list(self, ctx:PostgreSQLParser.Copy_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_opt_item. - def visitCopy_opt_item(self, ctx:PostgreSQLParser.Copy_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_binary. - def visitOpt_binary(self, ctx:PostgreSQLParser.Opt_binaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_delimiter. - def visitCopy_delimiter(self, ctx:PostgreSQLParser.Copy_delimiterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_using. - def visitOpt_using(self, ctx:PostgreSQLParser.Opt_usingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_generic_opt_list. - def visitCopy_generic_opt_list(self, ctx:PostgreSQLParser.Copy_generic_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_generic_opt_elem. - def visitCopy_generic_opt_elem(self, ctx:PostgreSQLParser.Copy_generic_opt_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg. - def visitCopy_generic_opt_arg(self, ctx:PostgreSQLParser.Copy_generic_opt_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list. - def visitCopy_generic_opt_arg_list(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#copy_generic_opt_arg_list_item. - def visitCopy_generic_opt_arg_list_item(self, ctx:PostgreSQLParser.Copy_generic_opt_arg_list_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createstmt. - def visitCreatestmt(self, ctx:PostgreSQLParser.CreatestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttemp. - def visitOpttemp(self, ctx:PostgreSQLParser.OpttempContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttableelementlist. - def visitOpttableelementlist(self, ctx:PostgreSQLParser.OpttableelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttypedtableelementlist. - def visitOpttypedtableelementlist(self, ctx:PostgreSQLParser.OpttypedtableelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tableelementlist. - def visitTableelementlist(self, ctx:PostgreSQLParser.TableelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#typedtableelementlist. - def visitTypedtableelementlist(self, ctx:PostgreSQLParser.TypedtableelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tableelement. - def visitTableelement(self, ctx:PostgreSQLParser.TableelementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#typedtableelement. - def visitTypedtableelement(self, ctx:PostgreSQLParser.TypedtableelementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#columnDef. - def visitColumnDef(self, ctx:PostgreSQLParser.ColumnDefContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#columnOptions. - def visitColumnOptions(self, ctx:PostgreSQLParser.ColumnOptionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#colquallist. - def visitColquallist(self, ctx:PostgreSQLParser.ColquallistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#colconstraint. - def visitColconstraint(self, ctx:PostgreSQLParser.ColconstraintContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#colconstraintelem. - def visitColconstraintelem(self, ctx:PostgreSQLParser.ColconstraintelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generated_when. - def visitGenerated_when(self, ctx:PostgreSQLParser.Generated_whenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraintattr. - def visitConstraintattr(self, ctx:PostgreSQLParser.ConstraintattrContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablelikeclause. - def visitTablelikeclause(self, ctx:PostgreSQLParser.TablelikeclauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablelikeoptionlist. - def visitTablelikeoptionlist(self, ctx:PostgreSQLParser.TablelikeoptionlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablelikeoption. - def visitTablelikeoption(self, ctx:PostgreSQLParser.TablelikeoptionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tableconstraint. - def visitTableconstraint(self, ctx:PostgreSQLParser.TableconstraintContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraintelem. - def visitConstraintelem(self, ctx:PostgreSQLParser.ConstraintelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_no_inherit. - def visitOpt_no_inherit(self, ctx:PostgreSQLParser.Opt_no_inheritContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_column_list. - def visitOpt_column_list(self, ctx:PostgreSQLParser.Opt_column_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#columnlist. - def visitColumnlist(self, ctx:PostgreSQLParser.ColumnlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#columnElem. - def visitColumnElem(self, ctx:PostgreSQLParser.ColumnElemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_c_include. - def visitOpt_c_include(self, ctx:PostgreSQLParser.Opt_c_includeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#key_match. - def visitKey_match(self, ctx:PostgreSQLParser.Key_matchContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#exclusionconstraintlist. - def visitExclusionconstraintlist(self, ctx:PostgreSQLParser.ExclusionconstraintlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#exclusionconstraintelem. - def visitExclusionconstraintelem(self, ctx:PostgreSQLParser.ExclusionconstraintelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#exclusionwhereclause. - def visitExclusionwhereclause(self, ctx:PostgreSQLParser.ExclusionwhereclauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#key_actions. - def visitKey_actions(self, ctx:PostgreSQLParser.Key_actionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#key_update. - def visitKey_update(self, ctx:PostgreSQLParser.Key_updateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#key_delete. - def visitKey_delete(self, ctx:PostgreSQLParser.Key_deleteContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#key_action. - def visitKey_action(self, ctx:PostgreSQLParser.Key_actionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optinherit. - def visitOptinherit(self, ctx:PostgreSQLParser.OptinheritContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optpartitionspec. - def visitOptpartitionspec(self, ctx:PostgreSQLParser.OptpartitionspecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#partitionspec. - def visitPartitionspec(self, ctx:PostgreSQLParser.PartitionspecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#part_params. - def visitPart_params(self, ctx:PostgreSQLParser.Part_paramsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#part_elem. - def visitPart_elem(self, ctx:PostgreSQLParser.Part_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_access_method_clause. - def visitTable_access_method_clause(self, ctx:PostgreSQLParser.Table_access_method_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optwith. - def visitOptwith(self, ctx:PostgreSQLParser.OptwithContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#oncommitoption. - def visitOncommitoption(self, ctx:PostgreSQLParser.OncommitoptionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttablespace. - def visitOpttablespace(self, ctx:PostgreSQLParser.OpttablespaceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optconstablespace. - def visitOptconstablespace(self, ctx:PostgreSQLParser.OptconstablespaceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#existingindex. - def visitExistingindex(self, ctx:PostgreSQLParser.ExistingindexContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createstatsstmt. - def visitCreatestatsstmt(self, ctx:PostgreSQLParser.CreatestatsstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterstatsstmt. - def visitAlterstatsstmt(self, ctx:PostgreSQLParser.AlterstatsstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createasstmt. - def visitCreateasstmt(self, ctx:PostgreSQLParser.CreateasstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#create_as_target. - def visitCreate_as_target(self, ctx:PostgreSQLParser.Create_as_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_with_data. - def visitOpt_with_data(self, ctx:PostgreSQLParser.Opt_with_dataContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#creatematviewstmt. - def visitCreatematviewstmt(self, ctx:PostgreSQLParser.CreatematviewstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#create_mv_target. - def visitCreate_mv_target(self, ctx:PostgreSQLParser.Create_mv_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optnolog. - def visitOptnolog(self, ctx:PostgreSQLParser.OptnologContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#refreshmatviewstmt. - def visitRefreshmatviewstmt(self, ctx:PostgreSQLParser.RefreshmatviewstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createseqstmt. - def visitCreateseqstmt(self, ctx:PostgreSQLParser.CreateseqstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterseqstmt. - def visitAlterseqstmt(self, ctx:PostgreSQLParser.AlterseqstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optseqoptlist. - def visitOptseqoptlist(self, ctx:PostgreSQLParser.OptseqoptlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optparenthesizedseqoptlist. - def visitOptparenthesizedseqoptlist(self, ctx:PostgreSQLParser.OptparenthesizedseqoptlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#seqoptlist. - def visitSeqoptlist(self, ctx:PostgreSQLParser.SeqoptlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#seqoptelem. - def visitSeqoptelem(self, ctx:PostgreSQLParser.SeqoptelemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_by. - def visitOpt_by(self, ctx:PostgreSQLParser.Opt_byContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#numericonly. - def visitNumericonly(self, ctx:PostgreSQLParser.NumericonlyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#numericonly_list. - def visitNumericonly_list(self, ctx:PostgreSQLParser.Numericonly_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createplangstmt. - def visitCreateplangstmt(self, ctx:PostgreSQLParser.CreateplangstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_trusted. - def visitOpt_trusted(self, ctx:PostgreSQLParser.Opt_trustedContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#handler_name. - def visitHandler_name(self, ctx:PostgreSQLParser.Handler_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_inline_handler. - def visitOpt_inline_handler(self, ctx:PostgreSQLParser.Opt_inline_handlerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#validator_clause. - def visitValidator_clause(self, ctx:PostgreSQLParser.Validator_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_validator. - def visitOpt_validator(self, ctx:PostgreSQLParser.Opt_validatorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_procedural. - def visitOpt_procedural(self, ctx:PostgreSQLParser.Opt_proceduralContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createtablespacestmt. - def visitCreatetablespacestmt(self, ctx:PostgreSQLParser.CreatetablespacestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttablespaceowner. - def visitOpttablespaceowner(self, ctx:PostgreSQLParser.OpttablespaceownerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#droptablespacestmt. - def visitDroptablespacestmt(self, ctx:PostgreSQLParser.DroptablespacestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createextensionstmt. - def visitCreateextensionstmt(self, ctx:PostgreSQLParser.CreateextensionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#create_extension_opt_list. - def visitCreate_extension_opt_list(self, ctx:PostgreSQLParser.Create_extension_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#create_extension_opt_item. - def visitCreate_extension_opt_item(self, ctx:PostgreSQLParser.Create_extension_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterextensionstmt. - def visitAlterextensionstmt(self, ctx:PostgreSQLParser.AlterextensionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_extension_opt_list. - def visitAlter_extension_opt_list(self, ctx:PostgreSQLParser.Alter_extension_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_extension_opt_item. - def visitAlter_extension_opt_item(self, ctx:PostgreSQLParser.Alter_extension_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterextensioncontentsstmt. - def visitAlterextensioncontentsstmt(self, ctx:PostgreSQLParser.AlterextensioncontentsstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createfdwstmt. - def visitCreatefdwstmt(self, ctx:PostgreSQLParser.CreatefdwstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#fdw_option. - def visitFdw_option(self, ctx:PostgreSQLParser.Fdw_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#fdw_options. - def visitFdw_options(self, ctx:PostgreSQLParser.Fdw_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_fdw_options. - def visitOpt_fdw_options(self, ctx:PostgreSQLParser.Opt_fdw_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterfdwstmt. - def visitAlterfdwstmt(self, ctx:PostgreSQLParser.AlterfdwstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#create_generic_options. - def visitCreate_generic_options(self, ctx:PostgreSQLParser.Create_generic_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_option_list. - def visitGeneric_option_list(self, ctx:PostgreSQLParser.Generic_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_generic_options. - def visitAlter_generic_options(self, ctx:PostgreSQLParser.Alter_generic_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_generic_option_list. - def visitAlter_generic_option_list(self, ctx:PostgreSQLParser.Alter_generic_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alter_generic_option_elem. - def visitAlter_generic_option_elem(self, ctx:PostgreSQLParser.Alter_generic_option_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_option_elem. - def visitGeneric_option_elem(self, ctx:PostgreSQLParser.Generic_option_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_option_name. - def visitGeneric_option_name(self, ctx:PostgreSQLParser.Generic_option_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generic_option_arg. - def visitGeneric_option_arg(self, ctx:PostgreSQLParser.Generic_option_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createforeignserverstmt. - def visitCreateforeignserverstmt(self, ctx:PostgreSQLParser.CreateforeignserverstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_type. - def visitOpt_type(self, ctx:PostgreSQLParser.Opt_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#foreign_server_version. - def visitForeign_server_version(self, ctx:PostgreSQLParser.Foreign_server_versionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_foreign_server_version. - def visitOpt_foreign_server_version(self, ctx:PostgreSQLParser.Opt_foreign_server_versionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterforeignserverstmt. - def visitAlterforeignserverstmt(self, ctx:PostgreSQLParser.AlterforeignserverstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createforeigntablestmt. - def visitCreateforeigntablestmt(self, ctx:PostgreSQLParser.CreateforeigntablestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#importforeignschemastmt. - def visitImportforeignschemastmt(self, ctx:PostgreSQLParser.ImportforeignschemastmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#import_qualification_type. - def visitImport_qualification_type(self, ctx:PostgreSQLParser.Import_qualification_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#import_qualification. - def visitImport_qualification(self, ctx:PostgreSQLParser.Import_qualificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createusermappingstmt. - def visitCreateusermappingstmt(self, ctx:PostgreSQLParser.CreateusermappingstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#auth_ident. - def visitAuth_ident(self, ctx:PostgreSQLParser.Auth_identContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropusermappingstmt. - def visitDropusermappingstmt(self, ctx:PostgreSQLParser.DropusermappingstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterusermappingstmt. - def visitAlterusermappingstmt(self, ctx:PostgreSQLParser.AlterusermappingstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createpolicystmt. - def visitCreatepolicystmt(self, ctx:PostgreSQLParser.CreatepolicystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterpolicystmt. - def visitAlterpolicystmt(self, ctx:PostgreSQLParser.AlterpolicystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecurityoptionalexpr. - def visitRowsecurityoptionalexpr(self, ctx:PostgreSQLParser.RowsecurityoptionalexprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecurityoptionalwithcheck. - def visitRowsecurityoptionalwithcheck(self, ctx:PostgreSQLParser.RowsecurityoptionalwithcheckContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecuritydefaulttorole. - def visitRowsecuritydefaulttorole(self, ctx:PostgreSQLParser.RowsecuritydefaulttoroleContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecurityoptionaltorole. - def visitRowsecurityoptionaltorole(self, ctx:PostgreSQLParser.RowsecurityoptionaltoroleContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecuritydefaultpermissive. - def visitRowsecuritydefaultpermissive(self, ctx:PostgreSQLParser.RowsecuritydefaultpermissiveContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsecuritydefaultforcmd. - def visitRowsecuritydefaultforcmd(self, ctx:PostgreSQLParser.RowsecuritydefaultforcmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#row_security_cmd. - def visitRow_security_cmd(self, ctx:PostgreSQLParser.Row_security_cmdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createamstmt. - def visitCreateamstmt(self, ctx:PostgreSQLParser.CreateamstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#am_type. - def visitAm_type(self, ctx:PostgreSQLParser.Am_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createtrigstmt. - def visitCreatetrigstmt(self, ctx:PostgreSQLParser.CreatetrigstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggeractiontime. - def visitTriggeractiontime(self, ctx:PostgreSQLParser.TriggeractiontimeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerevents. - def visitTriggerevents(self, ctx:PostgreSQLParser.TriggereventsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggeroneevent. - def visitTriggeroneevent(self, ctx:PostgreSQLParser.TriggeroneeventContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerreferencing. - def visitTriggerreferencing(self, ctx:PostgreSQLParser.TriggerreferencingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggertransitions. - def visitTriggertransitions(self, ctx:PostgreSQLParser.TriggertransitionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggertransition. - def visitTriggertransition(self, ctx:PostgreSQLParser.TriggertransitionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transitionoldornew. - def visitTransitionoldornew(self, ctx:PostgreSQLParser.TransitionoldornewContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transitionrowortable. - def visitTransitionrowortable(self, ctx:PostgreSQLParser.TransitionrowortableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transitionrelname. - def visitTransitionrelname(self, ctx:PostgreSQLParser.TransitionrelnameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerforspec. - def visitTriggerforspec(self, ctx:PostgreSQLParser.TriggerforspecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerforopteach. - def visitTriggerforopteach(self, ctx:PostgreSQLParser.TriggerforopteachContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerfortype. - def visitTriggerfortype(self, ctx:PostgreSQLParser.TriggerfortypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerwhen. - def visitTriggerwhen(self, ctx:PostgreSQLParser.TriggerwhenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#function_or_procedure. - def visitFunction_or_procedure(self, ctx:PostgreSQLParser.Function_or_procedureContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerfuncargs. - def visitTriggerfuncargs(self, ctx:PostgreSQLParser.TriggerfuncargsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#triggerfuncarg. - def visitTriggerfuncarg(self, ctx:PostgreSQLParser.TriggerfuncargContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#optconstrfromtable. - def visitOptconstrfromtable(self, ctx:PostgreSQLParser.OptconstrfromtableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraintattributespec. - def visitConstraintattributespec(self, ctx:PostgreSQLParser.ConstraintattributespecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constraintattributeElem. - def visitConstraintattributeElem(self, ctx:PostgreSQLParser.ConstraintattributeElemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createeventtrigstmt. - def visitCreateeventtrigstmt(self, ctx:PostgreSQLParser.CreateeventtrigstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#event_trigger_when_list. - def visitEvent_trigger_when_list(self, ctx:PostgreSQLParser.Event_trigger_when_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#event_trigger_when_item. - def visitEvent_trigger_when_item(self, ctx:PostgreSQLParser.Event_trigger_when_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#event_trigger_value_list. - def visitEvent_trigger_value_list(self, ctx:PostgreSQLParser.Event_trigger_value_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altereventtrigstmt. - def visitAltereventtrigstmt(self, ctx:PostgreSQLParser.AltereventtrigstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#enable_trigger. - def visitEnable_trigger(self, ctx:PostgreSQLParser.Enable_triggerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createassertionstmt. - def visitCreateassertionstmt(self, ctx:PostgreSQLParser.CreateassertionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#definestmt. - def visitDefinestmt(self, ctx:PostgreSQLParser.DefinestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#definition. - def visitDefinition(self, ctx:PostgreSQLParser.DefinitionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#def_list. - def visitDef_list(self, ctx:PostgreSQLParser.Def_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#def_elem. - def visitDef_elem(self, ctx:PostgreSQLParser.Def_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#def_arg. - def visitDef_arg(self, ctx:PostgreSQLParser.Def_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#old_aggr_definition. - def visitOld_aggr_definition(self, ctx:PostgreSQLParser.Old_aggr_definitionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#old_aggr_list. - def visitOld_aggr_list(self, ctx:PostgreSQLParser.Old_aggr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#old_aggr_elem. - def visitOld_aggr_elem(self, ctx:PostgreSQLParser.Old_aggr_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_enum_val_list. - def visitOpt_enum_val_list(self, ctx:PostgreSQLParser.Opt_enum_val_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#enum_val_list. - def visitEnum_val_list(self, ctx:PostgreSQLParser.Enum_val_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterenumstmt. - def visitAlterenumstmt(self, ctx:PostgreSQLParser.AlterenumstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_if_not_exists. - def visitOpt_if_not_exists(self, ctx:PostgreSQLParser.Opt_if_not_existsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createopclassstmt. - def visitCreateopclassstmt(self, ctx:PostgreSQLParser.CreateopclassstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opclass_item_list. - def visitOpclass_item_list(self, ctx:PostgreSQLParser.Opclass_item_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opclass_item. - def visitOpclass_item(self, ctx:PostgreSQLParser.Opclass_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_default. - def visitOpt_default(self, ctx:PostgreSQLParser.Opt_defaultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_opfamily. - def visitOpt_opfamily(self, ctx:PostgreSQLParser.Opt_opfamilyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opclass_purpose. - def visitOpclass_purpose(self, ctx:PostgreSQLParser.Opclass_purposeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_recheck. - def visitOpt_recheck(self, ctx:PostgreSQLParser.Opt_recheckContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createopfamilystmt. - def visitCreateopfamilystmt(self, ctx:PostgreSQLParser.CreateopfamilystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alteropfamilystmt. - def visitAlteropfamilystmt(self, ctx:PostgreSQLParser.AlteropfamilystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opclass_drop_list. - def visitOpclass_drop_list(self, ctx:PostgreSQLParser.Opclass_drop_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opclass_drop. - def visitOpclass_drop(self, ctx:PostgreSQLParser.Opclass_dropContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropopclassstmt. - def visitDropopclassstmt(self, ctx:PostgreSQLParser.DropopclassstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropopfamilystmt. - def visitDropopfamilystmt(self, ctx:PostgreSQLParser.DropopfamilystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropownedstmt. - def visitDropownedstmt(self, ctx:PostgreSQLParser.DropownedstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reassignownedstmt. - def visitReassignownedstmt(self, ctx:PostgreSQLParser.ReassignownedstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropstmt. - def visitDropstmt(self, ctx:PostgreSQLParser.DropstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#object_type_any_name. - def visitObject_type_any_name(self, ctx:PostgreSQLParser.Object_type_any_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#object_type_name. - def visitObject_type_name(self, ctx:PostgreSQLParser.Object_type_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#drop_type_name. - def visitDrop_type_name(self, ctx:PostgreSQLParser.Drop_type_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#object_type_name_on_any_name. - def visitObject_type_name_on_any_name(self, ctx:PostgreSQLParser.Object_type_name_on_any_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#any_name_list. - def visitAny_name_list(self, ctx:PostgreSQLParser.Any_name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#any_name. - def visitAny_name(self, ctx:PostgreSQLParser.Any_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#attrs. - def visitAttrs(self, ctx:PostgreSQLParser.AttrsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#type_name_list. - def visitType_name_list(self, ctx:PostgreSQLParser.Type_name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#truncatestmt. - def visitTruncatestmt(self, ctx:PostgreSQLParser.TruncatestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_restart_seqs. - def visitOpt_restart_seqs(self, ctx:PostgreSQLParser.Opt_restart_seqsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#commentstmt. - def visitCommentstmt(self, ctx:PostgreSQLParser.CommentstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#comment_text. - def visitComment_text(self, ctx:PostgreSQLParser.Comment_textContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#seclabelstmt. - def visitSeclabelstmt(self, ctx:PostgreSQLParser.SeclabelstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_provider. - def visitOpt_provider(self, ctx:PostgreSQLParser.Opt_providerContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#security_label. - def visitSecurity_label(self, ctx:PostgreSQLParser.Security_labelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#fetchstmt. - def visitFetchstmt(self, ctx:PostgreSQLParser.FetchstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#fetch_args. - def visitFetch_args(self, ctx:PostgreSQLParser.Fetch_argsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#from_in. - def visitFrom_in(self, ctx:PostgreSQLParser.From_inContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_from_in. - def visitOpt_from_in(self, ctx:PostgreSQLParser.Opt_from_inContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#grantstmt. - def visitGrantstmt(self, ctx:PostgreSQLParser.GrantstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#revokestmt. - def visitRevokestmt(self, ctx:PostgreSQLParser.RevokestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#privileges. - def visitPrivileges(self, ctx:PostgreSQLParser.PrivilegesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#privilege_list. - def visitPrivilege_list(self, ctx:PostgreSQLParser.Privilege_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#privilege. - def visitPrivilege(self, ctx:PostgreSQLParser.PrivilegeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#privilege_target. - def visitPrivilege_target(self, ctx:PostgreSQLParser.Privilege_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#grantee_list. - def visitGrantee_list(self, ctx:PostgreSQLParser.Grantee_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#grantee. - def visitGrantee(self, ctx:PostgreSQLParser.GranteeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_grant_grant_option. - def visitOpt_grant_grant_option(self, ctx:PostgreSQLParser.Opt_grant_grant_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#grantrolestmt. - def visitGrantrolestmt(self, ctx:PostgreSQLParser.GrantrolestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#revokerolestmt. - def visitRevokerolestmt(self, ctx:PostgreSQLParser.RevokerolestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_grant_admin_option. - def visitOpt_grant_admin_option(self, ctx:PostgreSQLParser.Opt_grant_admin_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_granted_by. - def visitOpt_granted_by(self, ctx:PostgreSQLParser.Opt_granted_byContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterdefaultprivilegesstmt. - def visitAlterdefaultprivilegesstmt(self, ctx:PostgreSQLParser.AlterdefaultprivilegesstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#defacloptionlist. - def visitDefacloptionlist(self, ctx:PostgreSQLParser.DefacloptionlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#defacloption. - def visitDefacloption(self, ctx:PostgreSQLParser.DefacloptionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#defaclaction. - def visitDefaclaction(self, ctx:PostgreSQLParser.DefaclactionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#defacl_privilege_target. - def visitDefacl_privilege_target(self, ctx:PostgreSQLParser.Defacl_privilege_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#indexstmt. - def visitIndexstmt(self, ctx:PostgreSQLParser.IndexstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_unique. - def visitOpt_unique(self, ctx:PostgreSQLParser.Opt_uniqueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_concurrently. - def visitOpt_concurrently(self, ctx:PostgreSQLParser.Opt_concurrentlyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_index_name. - def visitOpt_index_name(self, ctx:PostgreSQLParser.Opt_index_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#access_method_clause. - def visitAccess_method_clause(self, ctx:PostgreSQLParser.Access_method_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#index_params. - def visitIndex_params(self, ctx:PostgreSQLParser.Index_paramsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#index_elem_options. - def visitIndex_elem_options(self, ctx:PostgreSQLParser.Index_elem_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#index_elem. - def visitIndex_elem(self, ctx:PostgreSQLParser.Index_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_include. - def visitOpt_include(self, ctx:PostgreSQLParser.Opt_includeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#index_including_params. - def visitIndex_including_params(self, ctx:PostgreSQLParser.Index_including_paramsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_collate. - def visitOpt_collate(self, ctx:PostgreSQLParser.Opt_collateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_class. - def visitOpt_class(self, ctx:PostgreSQLParser.Opt_classContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_asc_desc. - def visitOpt_asc_desc(self, ctx:PostgreSQLParser.Opt_asc_descContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_nulls_order. - def visitOpt_nulls_order(self, ctx:PostgreSQLParser.Opt_nulls_orderContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createfunctionstmt. - def visitCreatefunctionstmt(self, ctx:PostgreSQLParser.CreatefunctionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_or_replace. - def visitOpt_or_replace(self, ctx:PostgreSQLParser.Opt_or_replaceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_args. - def visitFunc_args(self, ctx:PostgreSQLParser.Func_argsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_args_list. - def visitFunc_args_list(self, ctx:PostgreSQLParser.Func_args_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#function_with_argtypes_list. - def visitFunction_with_argtypes_list(self, ctx:PostgreSQLParser.Function_with_argtypes_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#function_with_argtypes. - def visitFunction_with_argtypes(self, ctx:PostgreSQLParser.Function_with_argtypesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_args_with_defaults. - def visitFunc_args_with_defaults(self, ctx:PostgreSQLParser.Func_args_with_defaultsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_args_with_defaults_list. - def visitFunc_args_with_defaults_list(self, ctx:PostgreSQLParser.Func_args_with_defaults_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_arg. - def visitFunc_arg(self, ctx:PostgreSQLParser.Func_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#arg_class. - def visitArg_class(self, ctx:PostgreSQLParser.Arg_classContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#param_name. - def visitParam_name(self, ctx:PostgreSQLParser.Param_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_return. - def visitFunc_return(self, ctx:PostgreSQLParser.Func_returnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_type. - def visitFunc_type(self, ctx:PostgreSQLParser.Func_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_arg_with_default. - def visitFunc_arg_with_default(self, ctx:PostgreSQLParser.Func_arg_with_defaultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aggr_arg. - def visitAggr_arg(self, ctx:PostgreSQLParser.Aggr_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aggr_args. - def visitAggr_args(self, ctx:PostgreSQLParser.Aggr_argsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aggr_args_list. - def visitAggr_args_list(self, ctx:PostgreSQLParser.Aggr_args_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aggregate_with_argtypes. - def visitAggregate_with_argtypes(self, ctx:PostgreSQLParser.Aggregate_with_argtypesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aggregate_with_argtypes_list. - def visitAggregate_with_argtypes_list(self, ctx:PostgreSQLParser.Aggregate_with_argtypes_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createfunc_opt_list. - def visitCreatefunc_opt_list(self, ctx:PostgreSQLParser.Createfunc_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#common_func_opt_item. - def visitCommon_func_opt_item(self, ctx:PostgreSQLParser.Common_func_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createfunc_opt_item. - def visitCreatefunc_opt_item(self, ctx:PostgreSQLParser.Createfunc_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_as. - def visitFunc_as(self, ctx:PostgreSQLParser.Func_asContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transform_type_list. - def visitTransform_type_list(self, ctx:PostgreSQLParser.Transform_type_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_definition. - def visitOpt_definition(self, ctx:PostgreSQLParser.Opt_definitionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_func_column. - def visitTable_func_column(self, ctx:PostgreSQLParser.Table_func_columnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_func_column_list. - def visitTable_func_column_list(self, ctx:PostgreSQLParser.Table_func_column_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterfunctionstmt. - def visitAlterfunctionstmt(self, ctx:PostgreSQLParser.AlterfunctionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterfunc_opt_list. - def visitAlterfunc_opt_list(self, ctx:PostgreSQLParser.Alterfunc_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_restrict. - def visitOpt_restrict(self, ctx:PostgreSQLParser.Opt_restrictContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#removefuncstmt. - def visitRemovefuncstmt(self, ctx:PostgreSQLParser.RemovefuncstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#removeaggrstmt. - def visitRemoveaggrstmt(self, ctx:PostgreSQLParser.RemoveaggrstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#removeoperstmt. - def visitRemoveoperstmt(self, ctx:PostgreSQLParser.RemoveoperstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#oper_argtypes. - def visitOper_argtypes(self, ctx:PostgreSQLParser.Oper_argtypesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#any_operator. - def visitAny_operator(self, ctx:PostgreSQLParser.Any_operatorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#operator_with_argtypes_list. - def visitOperator_with_argtypes_list(self, ctx:PostgreSQLParser.Operator_with_argtypes_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#operator_with_argtypes. - def visitOperator_with_argtypes(self, ctx:PostgreSQLParser.Operator_with_argtypesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dostmt. - def visitDostmt(self, ctx:PostgreSQLParser.DostmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dostmt_opt_list. - def visitDostmt_opt_list(self, ctx:PostgreSQLParser.Dostmt_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dostmt_opt_item. - def visitDostmt_opt_item(self, ctx:PostgreSQLParser.Dostmt_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createcaststmt. - def visitCreatecaststmt(self, ctx:PostgreSQLParser.CreatecaststmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cast_context. - def visitCast_context(self, ctx:PostgreSQLParser.Cast_contextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropcaststmt. - def visitDropcaststmt(self, ctx:PostgreSQLParser.DropcaststmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_if_exists. - def visitOpt_if_exists(self, ctx:PostgreSQLParser.Opt_if_existsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createtransformstmt. - def visitCreatetransformstmt(self, ctx:PostgreSQLParser.CreatetransformstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transform_element_list. - def visitTransform_element_list(self, ctx:PostgreSQLParser.Transform_element_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#droptransformstmt. - def visitDroptransformstmt(self, ctx:PostgreSQLParser.DroptransformstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reindexstmt. - def visitReindexstmt(self, ctx:PostgreSQLParser.ReindexstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reindex_target_type. - def visitReindex_target_type(self, ctx:PostgreSQLParser.Reindex_target_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reindex_target_multitable. - def visitReindex_target_multitable(self, ctx:PostgreSQLParser.Reindex_target_multitableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reindex_option_list. - def visitReindex_option_list(self, ctx:PostgreSQLParser.Reindex_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reindex_option_elem. - def visitReindex_option_elem(self, ctx:PostgreSQLParser.Reindex_option_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altertblspcstmt. - def visitAltertblspcstmt(self, ctx:PostgreSQLParser.AltertblspcstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#renamestmt. - def visitRenamestmt(self, ctx:PostgreSQLParser.RenamestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_column. - def visitOpt_column(self, ctx:PostgreSQLParser.Opt_columnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_set_data. - def visitOpt_set_data(self, ctx:PostgreSQLParser.Opt_set_dataContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterobjectdependsstmt. - def visitAlterobjectdependsstmt(self, ctx:PostgreSQLParser.AlterobjectdependsstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_no. - def visitOpt_no(self, ctx:PostgreSQLParser.Opt_noContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterobjectschemastmt. - def visitAlterobjectschemastmt(self, ctx:PostgreSQLParser.AlterobjectschemastmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alteroperatorstmt. - def visitAlteroperatorstmt(self, ctx:PostgreSQLParser.AlteroperatorstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#operator_def_list. - def visitOperator_def_list(self, ctx:PostgreSQLParser.Operator_def_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#operator_def_elem. - def visitOperator_def_elem(self, ctx:PostgreSQLParser.Operator_def_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#operator_def_arg. - def visitOperator_def_arg(self, ctx:PostgreSQLParser.Operator_def_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altertypestmt. - def visitAltertypestmt(self, ctx:PostgreSQLParser.AltertypestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterownerstmt. - def visitAlterownerstmt(self, ctx:PostgreSQLParser.AlterownerstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createpublicationstmt. - def visitCreatepublicationstmt(self, ctx:PostgreSQLParser.CreatepublicationstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_publication_for_tables. - def visitOpt_publication_for_tables(self, ctx:PostgreSQLParser.Opt_publication_for_tablesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#publication_for_tables. - def visitPublication_for_tables(self, ctx:PostgreSQLParser.Publication_for_tablesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterpublicationstmt. - def visitAlterpublicationstmt(self, ctx:PostgreSQLParser.AlterpublicationstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createsubscriptionstmt. - def visitCreatesubscriptionstmt(self, ctx:PostgreSQLParser.CreatesubscriptionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#publication_name_list. - def visitPublication_name_list(self, ctx:PostgreSQLParser.Publication_name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#publication_name_item. - def visitPublication_name_item(self, ctx:PostgreSQLParser.Publication_name_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altersubscriptionstmt. - def visitAltersubscriptionstmt(self, ctx:PostgreSQLParser.AltersubscriptionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropsubscriptionstmt. - def visitDropsubscriptionstmt(self, ctx:PostgreSQLParser.DropsubscriptionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rulestmt. - def visitRulestmt(self, ctx:PostgreSQLParser.RulestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#ruleactionlist. - def visitRuleactionlist(self, ctx:PostgreSQLParser.RuleactionlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#ruleactionmulti. - def visitRuleactionmulti(self, ctx:PostgreSQLParser.RuleactionmultiContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#ruleactionstmt. - def visitRuleactionstmt(self, ctx:PostgreSQLParser.RuleactionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#ruleactionstmtOrEmpty. - def visitRuleactionstmtOrEmpty(self, ctx:PostgreSQLParser.RuleactionstmtOrEmptyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#event. - def visitEvent(self, ctx:PostgreSQLParser.EventContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_instead. - def visitOpt_instead(self, ctx:PostgreSQLParser.Opt_insteadContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#notifystmt. - def visitNotifystmt(self, ctx:PostgreSQLParser.NotifystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#notify_payload. - def visitNotify_payload(self, ctx:PostgreSQLParser.Notify_payloadContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#listenstmt. - def visitListenstmt(self, ctx:PostgreSQLParser.ListenstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#unlistenstmt. - def visitUnlistenstmt(self, ctx:PostgreSQLParser.UnlistenstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transactionstmt. - def visitTransactionstmt(self, ctx:PostgreSQLParser.TransactionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_transaction. - def visitOpt_transaction(self, ctx:PostgreSQLParser.Opt_transactionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transaction_mode_item. - def visitTransaction_mode_item(self, ctx:PostgreSQLParser.Transaction_mode_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transaction_mode_list. - def visitTransaction_mode_list(self, ctx:PostgreSQLParser.Transaction_mode_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#transaction_mode_list_or_empty. - def visitTransaction_mode_list_or_empty(self, ctx:PostgreSQLParser.Transaction_mode_list_or_emptyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_transaction_chain. - def visitOpt_transaction_chain(self, ctx:PostgreSQLParser.Opt_transaction_chainContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#viewstmt. - def visitViewstmt(self, ctx:PostgreSQLParser.ViewstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_check_option. - def visitOpt_check_option(self, ctx:PostgreSQLParser.Opt_check_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#loadstmt. - def visitLoadstmt(self, ctx:PostgreSQLParser.LoadstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdbstmt. - def visitCreatedbstmt(self, ctx:PostgreSQLParser.CreatedbstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdb_opt_list. - def visitCreatedb_opt_list(self, ctx:PostgreSQLParser.Createdb_opt_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdb_opt_items. - def visitCreatedb_opt_items(self, ctx:PostgreSQLParser.Createdb_opt_itemsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdb_opt_item. - def visitCreatedb_opt_item(self, ctx:PostgreSQLParser.Createdb_opt_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdb_opt_name. - def visitCreatedb_opt_name(self, ctx:PostgreSQLParser.Createdb_opt_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_equal. - def visitOpt_equal(self, ctx:PostgreSQLParser.Opt_equalContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterdatabasestmt. - def visitAlterdatabasestmt(self, ctx:PostgreSQLParser.AlterdatabasestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterdatabasesetstmt. - def visitAlterdatabasesetstmt(self, ctx:PostgreSQLParser.AlterdatabasesetstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#dropdbstmt. - def visitDropdbstmt(self, ctx:PostgreSQLParser.DropdbstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#drop_option_list. - def visitDrop_option_list(self, ctx:PostgreSQLParser.Drop_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#drop_option. - def visitDrop_option(self, ctx:PostgreSQLParser.Drop_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altercollationstmt. - def visitAltercollationstmt(self, ctx:PostgreSQLParser.AltercollationstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altersystemstmt. - def visitAltersystemstmt(self, ctx:PostgreSQLParser.AltersystemstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createdomainstmt. - def visitCreatedomainstmt(self, ctx:PostgreSQLParser.CreatedomainstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alterdomainstmt. - def visitAlterdomainstmt(self, ctx:PostgreSQLParser.AlterdomainstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_as. - def visitOpt_as(self, ctx:PostgreSQLParser.Opt_asContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altertsdictionarystmt. - def visitAltertsdictionarystmt(self, ctx:PostgreSQLParser.AltertsdictionarystmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#altertsconfigurationstmt. - def visitAltertsconfigurationstmt(self, ctx:PostgreSQLParser.AltertsconfigurationstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#any_with. - def visitAny_with(self, ctx:PostgreSQLParser.Any_withContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#createconversionstmt. - def visitCreateconversionstmt(self, ctx:PostgreSQLParser.CreateconversionstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#clusterstmt. - def visitClusterstmt(self, ctx:PostgreSQLParser.ClusterstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cluster_index_specification. - def visitCluster_index_specification(self, ctx:PostgreSQLParser.Cluster_index_specificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vacuumstmt. - def visitVacuumstmt(self, ctx:PostgreSQLParser.VacuumstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#analyzestmt. - def visitAnalyzestmt(self, ctx:PostgreSQLParser.AnalyzestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vac_analyze_option_list. - def visitVac_analyze_option_list(self, ctx:PostgreSQLParser.Vac_analyze_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#analyze_keyword. - def visitAnalyze_keyword(self, ctx:PostgreSQLParser.Analyze_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vac_analyze_option_elem. - def visitVac_analyze_option_elem(self, ctx:PostgreSQLParser.Vac_analyze_option_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vac_analyze_option_name. - def visitVac_analyze_option_name(self, ctx:PostgreSQLParser.Vac_analyze_option_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vac_analyze_option_arg. - def visitVac_analyze_option_arg(self, ctx:PostgreSQLParser.Vac_analyze_option_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_analyze. - def visitOpt_analyze(self, ctx:PostgreSQLParser.Opt_analyzeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_verbose. - def visitOpt_verbose(self, ctx:PostgreSQLParser.Opt_verboseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_full. - def visitOpt_full(self, ctx:PostgreSQLParser.Opt_fullContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_freeze. - def visitOpt_freeze(self, ctx:PostgreSQLParser.Opt_freezeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_name_list. - def visitOpt_name_list(self, ctx:PostgreSQLParser.Opt_name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vacuum_relation. - def visitVacuum_relation(self, ctx:PostgreSQLParser.Vacuum_relationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#vacuum_relation_list. - def visitVacuum_relation_list(self, ctx:PostgreSQLParser.Vacuum_relation_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_vacuum_relation_list. - def visitOpt_vacuum_relation_list(self, ctx:PostgreSQLParser.Opt_vacuum_relation_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explainstmt. - def visitExplainstmt(self, ctx:PostgreSQLParser.ExplainstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explainablestmt. - def visitExplainablestmt(self, ctx:PostgreSQLParser.ExplainablestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explain_option_list. - def visitExplain_option_list(self, ctx:PostgreSQLParser.Explain_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explain_option_elem. - def visitExplain_option_elem(self, ctx:PostgreSQLParser.Explain_option_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explain_option_name. - def visitExplain_option_name(self, ctx:PostgreSQLParser.Explain_option_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explain_option_arg. - def visitExplain_option_arg(self, ctx:PostgreSQLParser.Explain_option_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#preparestmt. - def visitPreparestmt(self, ctx:PostgreSQLParser.PreparestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#prep_type_clause. - def visitPrep_type_clause(self, ctx:PostgreSQLParser.Prep_type_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#preparablestmt. - def visitPreparablestmt(self, ctx:PostgreSQLParser.PreparablestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#executestmt. - def visitExecutestmt(self, ctx:PostgreSQLParser.ExecutestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#execute_param_clause. - def visitExecute_param_clause(self, ctx:PostgreSQLParser.Execute_param_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#deallocatestmt. - def visitDeallocatestmt(self, ctx:PostgreSQLParser.DeallocatestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#insertstmt. - def visitInsertstmt(self, ctx:PostgreSQLParser.InsertstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#insert_target. - def visitInsert_target(self, ctx:PostgreSQLParser.Insert_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#insert_rest. - def visitInsert_rest(self, ctx:PostgreSQLParser.Insert_restContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#override_kind. - def visitOverride_kind(self, ctx:PostgreSQLParser.Override_kindContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#insert_column_list. - def visitInsert_column_list(self, ctx:PostgreSQLParser.Insert_column_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#insert_column_item. - def visitInsert_column_item(self, ctx:PostgreSQLParser.Insert_column_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_on_conflict. - def visitOpt_on_conflict(self, ctx:PostgreSQLParser.Opt_on_conflictContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_conf_expr. - def visitOpt_conf_expr(self, ctx:PostgreSQLParser.Opt_conf_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#returning_clause. - def visitReturning_clause(self, ctx:PostgreSQLParser.Returning_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#mergestmt. - def visitMergestmt(self, ctx:PostgreSQLParser.MergestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#merge_insert_clause. - def visitMerge_insert_clause(self, ctx:PostgreSQLParser.Merge_insert_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#merge_update_clause. - def visitMerge_update_clause(self, ctx:PostgreSQLParser.Merge_update_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#merge_delete_clause. - def visitMerge_delete_clause(self, ctx:PostgreSQLParser.Merge_delete_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#deletestmt. - def visitDeletestmt(self, ctx:PostgreSQLParser.DeletestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#using_clause. - def visitUsing_clause(self, ctx:PostgreSQLParser.Using_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#lockstmt. - def visitLockstmt(self, ctx:PostgreSQLParser.LockstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_lock. - def visitOpt_lock(self, ctx:PostgreSQLParser.Opt_lockContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#lock_type. - def visitLock_type(self, ctx:PostgreSQLParser.Lock_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_nowait. - def visitOpt_nowait(self, ctx:PostgreSQLParser.Opt_nowaitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_nowait_or_skip. - def visitOpt_nowait_or_skip(self, ctx:PostgreSQLParser.Opt_nowait_or_skipContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#updatestmt. - def visitUpdatestmt(self, ctx:PostgreSQLParser.UpdatestmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_clause_list. - def visitSet_clause_list(self, ctx:PostgreSQLParser.Set_clause_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_clause. - def visitSet_clause(self, ctx:PostgreSQLParser.Set_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_target. - def visitSet_target(self, ctx:PostgreSQLParser.Set_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#set_target_list. - def visitSet_target_list(self, ctx:PostgreSQLParser.Set_target_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#declarecursorstmt. - def visitDeclarecursorstmt(self, ctx:PostgreSQLParser.DeclarecursorstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cursor_name. - def visitCursor_name(self, ctx:PostgreSQLParser.Cursor_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cursor_options. - def visitCursor_options(self, ctx:PostgreSQLParser.Cursor_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_hold. - def visitOpt_hold(self, ctx:PostgreSQLParser.Opt_holdContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#selectstmt. - def visitSelectstmt(self, ctx:PostgreSQLParser.SelectstmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_with_parens. - def visitSelect_with_parens(self, ctx:PostgreSQLParser.Select_with_parensContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_no_parens. - def visitSelect_no_parens(self, ctx:PostgreSQLParser.Select_no_parensContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_clause. - def visitSelect_clause(self, ctx:PostgreSQLParser.Select_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#simple_select_intersect. - def visitSimple_select_intersect(self, ctx:PostgreSQLParser.Simple_select_intersectContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#simple_select_pramary. - def visitSimple_select_pramary(self, ctx:PostgreSQLParser.Simple_select_pramaryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#with_clause. - def visitWith_clause(self, ctx:PostgreSQLParser.With_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cte_list. - def visitCte_list(self, ctx:PostgreSQLParser.Cte_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#common_table_expr. - def visitCommon_table_expr(self, ctx:PostgreSQLParser.Common_table_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_materialized. - def visitOpt_materialized(self, ctx:PostgreSQLParser.Opt_materializedContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_with_clause. - def visitOpt_with_clause(self, ctx:PostgreSQLParser.Opt_with_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#into_clause. - def visitInto_clause(self, ctx:PostgreSQLParser.Into_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_strict. - def visitOpt_strict(self, ctx:PostgreSQLParser.Opt_strictContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttempTableName. - def visitOpttempTableName(self, ctx:PostgreSQLParser.OpttempTableNameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_table. - def visitOpt_table(self, ctx:PostgreSQLParser.Opt_tableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#all_or_distinct. - def visitAll_or_distinct(self, ctx:PostgreSQLParser.All_or_distinctContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#distinct_clause. - def visitDistinct_clause(self, ctx:PostgreSQLParser.Distinct_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_all_clause. - def visitOpt_all_clause(self, ctx:PostgreSQLParser.Opt_all_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_sort_clause. - def visitOpt_sort_clause(self, ctx:PostgreSQLParser.Opt_sort_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sort_clause. - def visitSort_clause(self, ctx:PostgreSQLParser.Sort_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sortby_list. - def visitSortby_list(self, ctx:PostgreSQLParser.Sortby_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sortby. - def visitSortby(self, ctx:PostgreSQLParser.SortbyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_limit. - def visitSelect_limit(self, ctx:PostgreSQLParser.Select_limitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_select_limit. - def visitOpt_select_limit(self, ctx:PostgreSQLParser.Opt_select_limitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#limit_clause. - def visitLimit_clause(self, ctx:PostgreSQLParser.Limit_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#offset_clause. - def visitOffset_clause(self, ctx:PostgreSQLParser.Offset_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_limit_value. - def visitSelect_limit_value(self, ctx:PostgreSQLParser.Select_limit_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_offset_value. - def visitSelect_offset_value(self, ctx:PostgreSQLParser.Select_offset_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#select_fetch_first_value. - def visitSelect_fetch_first_value(self, ctx:PostgreSQLParser.Select_fetch_first_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#i_or_f_const. - def visitI_or_f_const(self, ctx:PostgreSQLParser.I_or_f_constContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#row_or_rows. - def visitRow_or_rows(self, ctx:PostgreSQLParser.Row_or_rowsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#first_or_next. - def visitFirst_or_next(self, ctx:PostgreSQLParser.First_or_nextContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#group_clause. - def visitGroup_clause(self, ctx:PostgreSQLParser.Group_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#group_by_list. - def visitGroup_by_list(self, ctx:PostgreSQLParser.Group_by_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#group_by_item. - def visitGroup_by_item(self, ctx:PostgreSQLParser.Group_by_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#empty_grouping_set. - def visitEmpty_grouping_set(self, ctx:PostgreSQLParser.Empty_grouping_setContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rollup_clause. - def visitRollup_clause(self, ctx:PostgreSQLParser.Rollup_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cube_clause. - def visitCube_clause(self, ctx:PostgreSQLParser.Cube_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#grouping_sets_clause. - def visitGrouping_sets_clause(self, ctx:PostgreSQLParser.Grouping_sets_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#having_clause. - def visitHaving_clause(self, ctx:PostgreSQLParser.Having_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_locking_clause. - def visitFor_locking_clause(self, ctx:PostgreSQLParser.For_locking_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_for_locking_clause. - def visitOpt_for_locking_clause(self, ctx:PostgreSQLParser.Opt_for_locking_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_locking_items. - def visitFor_locking_items(self, ctx:PostgreSQLParser.For_locking_itemsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_locking_item. - def visitFor_locking_item(self, ctx:PostgreSQLParser.For_locking_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_locking_strength. - def visitFor_locking_strength(self, ctx:PostgreSQLParser.For_locking_strengthContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#locked_rels_list. - def visitLocked_rels_list(self, ctx:PostgreSQLParser.Locked_rels_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#values_clause. - def visitValues_clause(self, ctx:PostgreSQLParser.Values_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#from_clause. - def visitFrom_clause(self, ctx:PostgreSQLParser.From_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#from_list. - def visitFrom_list(self, ctx:PostgreSQLParser.From_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#non_ansi_join. - def visitNon_ansi_join(self, ctx:PostgreSQLParser.Non_ansi_joinContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_ref. - def visitTable_ref(self, ctx:PostgreSQLParser.Table_refContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#alias_clause. - def visitAlias_clause(self, ctx:PostgreSQLParser.Alias_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_alias_clause. - def visitOpt_alias_clause(self, ctx:PostgreSQLParser.Opt_alias_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_alias_clause. - def visitTable_alias_clause(self, ctx:PostgreSQLParser.Table_alias_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_alias_clause. - def visitFunc_alias_clause(self, ctx:PostgreSQLParser.Func_alias_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#join_type. - def visitJoin_type(self, ctx:PostgreSQLParser.Join_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#join_qual. - def visitJoin_qual(self, ctx:PostgreSQLParser.Join_qualContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#relation_expr. - def visitRelation_expr(self, ctx:PostgreSQLParser.Relation_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#relation_expr_list. - def visitRelation_expr_list(self, ctx:PostgreSQLParser.Relation_expr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#relation_expr_opt_alias. - def visitRelation_expr_opt_alias(self, ctx:PostgreSQLParser.Relation_expr_opt_aliasContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablesample_clause. - def visitTablesample_clause(self, ctx:PostgreSQLParser.Tablesample_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_repeatable_clause. - def visitOpt_repeatable_clause(self, ctx:PostgreSQLParser.Opt_repeatable_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_table. - def visitFunc_table(self, ctx:PostgreSQLParser.Func_tableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsfrom_item. - def visitRowsfrom_item(self, ctx:PostgreSQLParser.Rowsfrom_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rowsfrom_list. - def visitRowsfrom_list(self, ctx:PostgreSQLParser.Rowsfrom_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_col_def_list. - def visitOpt_col_def_list(self, ctx:PostgreSQLParser.Opt_col_def_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_ordinality. - def visitOpt_ordinality(self, ctx:PostgreSQLParser.Opt_ordinalityContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#where_clause. - def visitWhere_clause(self, ctx:PostgreSQLParser.Where_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#where_or_current_clause. - def visitWhere_or_current_clause(self, ctx:PostgreSQLParser.Where_or_current_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opttablefuncelementlist. - def visitOpttablefuncelementlist(self, ctx:PostgreSQLParser.OpttablefuncelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablefuncelementlist. - def visitTablefuncelementlist(self, ctx:PostgreSQLParser.TablefuncelementlistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#tablefuncelement. - def visitTablefuncelement(self, ctx:PostgreSQLParser.TablefuncelementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmltable. - def visitXmltable(self, ctx:PostgreSQLParser.XmltableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmltable_column_list. - def visitXmltable_column_list(self, ctx:PostgreSQLParser.Xmltable_column_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmltable_column_el. - def visitXmltable_column_el(self, ctx:PostgreSQLParser.Xmltable_column_elContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmltable_column_option_list. - def visitXmltable_column_option_list(self, ctx:PostgreSQLParser.Xmltable_column_option_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmltable_column_option_el. - def visitXmltable_column_option_el(self, ctx:PostgreSQLParser.Xmltable_column_option_elContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_namespace_list. - def visitXml_namespace_list(self, ctx:PostgreSQLParser.Xml_namespace_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_namespace_el. - def visitXml_namespace_el(self, ctx:PostgreSQLParser.Xml_namespace_elContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#typename. - def visitTypename(self, ctx:PostgreSQLParser.TypenameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_array_bounds. - def visitOpt_array_bounds(self, ctx:PostgreSQLParser.Opt_array_boundsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#simpletypename. - def visitSimpletypename(self, ctx:PostgreSQLParser.SimpletypenameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#consttypename. - def visitConsttypename(self, ctx:PostgreSQLParser.ConsttypenameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#generictype. - def visitGenerictype(self, ctx:PostgreSQLParser.GenerictypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_type_modifiers. - def visitOpt_type_modifiers(self, ctx:PostgreSQLParser.Opt_type_modifiersContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#numeric. - def visitNumeric(self, ctx:PostgreSQLParser.NumericContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_float. - def visitOpt_float(self, ctx:PostgreSQLParser.Opt_floatContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#bit. - def visitBit(self, ctx:PostgreSQLParser.BitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constbit. - def visitConstbit(self, ctx:PostgreSQLParser.ConstbitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#bitwithlength. - def visitBitwithlength(self, ctx:PostgreSQLParser.BitwithlengthContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#bitwithoutlength. - def visitBitwithoutlength(self, ctx:PostgreSQLParser.BitwithoutlengthContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#character. - def visitCharacter(self, ctx:PostgreSQLParser.CharacterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constcharacter. - def visitConstcharacter(self, ctx:PostgreSQLParser.ConstcharacterContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#character_c. - def visitCharacter_c(self, ctx:PostgreSQLParser.Character_cContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_varying. - def visitOpt_varying(self, ctx:PostgreSQLParser.Opt_varyingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constdatetime. - def visitConstdatetime(self, ctx:PostgreSQLParser.ConstdatetimeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#constinterval. - def visitConstinterval(self, ctx:PostgreSQLParser.ConstintervalContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_timezone. - def visitOpt_timezone(self, ctx:PostgreSQLParser.Opt_timezoneContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_interval. - def visitOpt_interval(self, ctx:PostgreSQLParser.Opt_intervalContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#interval_second. - def visitInterval_second(self, ctx:PostgreSQLParser.Interval_secondContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_escape. - def visitOpt_escape(self, ctx:PostgreSQLParser.Opt_escapeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr. - def visitA_expr(self, ctx:PostgreSQLParser.A_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_qual. - def visitA_expr_qual(self, ctx:PostgreSQLParser.A_expr_qualContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_lessless. - def visitA_expr_lessless(self, ctx:PostgreSQLParser.A_expr_lesslessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_or. - def visitA_expr_or(self, ctx:PostgreSQLParser.A_expr_orContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_and. - def visitA_expr_and(self, ctx:PostgreSQLParser.A_expr_andContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_between. - def visitA_expr_between(self, ctx:PostgreSQLParser.A_expr_betweenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_in. - def visitA_expr_in(self, ctx:PostgreSQLParser.A_expr_inContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_unary_not. - def visitA_expr_unary_not(self, ctx:PostgreSQLParser.A_expr_unary_notContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_isnull. - def visitA_expr_isnull(self, ctx:PostgreSQLParser.A_expr_isnullContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_is_not. - def visitA_expr_is_not(self, ctx:PostgreSQLParser.A_expr_is_notContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_compare. - def visitA_expr_compare(self, ctx:PostgreSQLParser.A_expr_compareContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_like. - def visitA_expr_like(self, ctx:PostgreSQLParser.A_expr_likeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_qual_op. - def visitA_expr_qual_op(self, ctx:PostgreSQLParser.A_expr_qual_opContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_unary_qualop. - def visitA_expr_unary_qualop(self, ctx:PostgreSQLParser.A_expr_unary_qualopContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_add. - def visitA_expr_add(self, ctx:PostgreSQLParser.A_expr_addContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_mul. - def visitA_expr_mul(self, ctx:PostgreSQLParser.A_expr_mulContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_caret. - def visitA_expr_caret(self, ctx:PostgreSQLParser.A_expr_caretContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_unary_sign. - def visitA_expr_unary_sign(self, ctx:PostgreSQLParser.A_expr_unary_signContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_at_time_zone. - def visitA_expr_at_time_zone(self, ctx:PostgreSQLParser.A_expr_at_time_zoneContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_collate. - def visitA_expr_collate(self, ctx:PostgreSQLParser.A_expr_collateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#a_expr_typecast. - def visitA_expr_typecast(self, ctx:PostgreSQLParser.A_expr_typecastContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#b_expr. - def visitB_expr(self, ctx:PostgreSQLParser.B_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#c_expr_exists. - def visitC_expr_exists(self, ctx:PostgreSQLParser.C_expr_existsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#c_expr_expr. - def visitC_expr_expr(self, ctx:PostgreSQLParser.C_expr_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#c_expr_case. - def visitC_expr_case(self, ctx:PostgreSQLParser.C_expr_caseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsqlvariablename. - def visitPlsqlvariablename(self, ctx:PostgreSQLParser.PlsqlvariablenameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_application. - def visitFunc_application(self, ctx:PostgreSQLParser.Func_applicationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_expr. - def visitFunc_expr(self, ctx:PostgreSQLParser.Func_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_expr_windowless. - def visitFunc_expr_windowless(self, ctx:PostgreSQLParser.Func_expr_windowlessContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_expr_common_subexpr. - def visitFunc_expr_common_subexpr(self, ctx:PostgreSQLParser.Func_expr_common_subexprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_root_version. - def visitXml_root_version(self, ctx:PostgreSQLParser.Xml_root_versionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_xml_root_standalone. - def visitOpt_xml_root_standalone(self, ctx:PostgreSQLParser.Opt_xml_root_standaloneContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_attributes. - def visitXml_attributes(self, ctx:PostgreSQLParser.Xml_attributesContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_attribute_list. - def visitXml_attribute_list(self, ctx:PostgreSQLParser.Xml_attribute_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_attribute_el. - def visitXml_attribute_el(self, ctx:PostgreSQLParser.Xml_attribute_elContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#document_or_content. - def visitDocument_or_content(self, ctx:PostgreSQLParser.Document_or_contentContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_whitespace_option. - def visitXml_whitespace_option(self, ctx:PostgreSQLParser.Xml_whitespace_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xmlexists_argument. - def visitXmlexists_argument(self, ctx:PostgreSQLParser.Xmlexists_argumentContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xml_passing_mech. - def visitXml_passing_mech(self, ctx:PostgreSQLParser.Xml_passing_mechContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#within_group_clause. - def visitWithin_group_clause(self, ctx:PostgreSQLParser.Within_group_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#filter_clause. - def visitFilter_clause(self, ctx:PostgreSQLParser.Filter_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#window_clause. - def visitWindow_clause(self, ctx:PostgreSQLParser.Window_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#window_definition_list. - def visitWindow_definition_list(self, ctx:PostgreSQLParser.Window_definition_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#window_definition. - def visitWindow_definition(self, ctx:PostgreSQLParser.Window_definitionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#over_clause. - def visitOver_clause(self, ctx:PostgreSQLParser.Over_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#window_specification. - def visitWindow_specification(self, ctx:PostgreSQLParser.Window_specificationContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_existing_window_name. - def visitOpt_existing_window_name(self, ctx:PostgreSQLParser.Opt_existing_window_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_partition_clause. - def visitOpt_partition_clause(self, ctx:PostgreSQLParser.Opt_partition_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_frame_clause. - def visitOpt_frame_clause(self, ctx:PostgreSQLParser.Opt_frame_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#frame_extent. - def visitFrame_extent(self, ctx:PostgreSQLParser.Frame_extentContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#frame_bound. - def visitFrame_bound(self, ctx:PostgreSQLParser.Frame_boundContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_window_exclusion_clause. - def visitOpt_window_exclusion_clause(self, ctx:PostgreSQLParser.Opt_window_exclusion_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#row. - def visitRow(self, ctx:PostgreSQLParser.RowContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#explicit_row. - def visitExplicit_row(self, ctx:PostgreSQLParser.Explicit_rowContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#implicit_row. - def visitImplicit_row(self, ctx:PostgreSQLParser.Implicit_rowContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sub_type. - def visitSub_type(self, ctx:PostgreSQLParser.Sub_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#all_op. - def visitAll_op(self, ctx:PostgreSQLParser.All_opContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#mathop. - def visitMathop(self, ctx:PostgreSQLParser.MathopContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#qual_op. - def visitQual_op(self, ctx:PostgreSQLParser.Qual_opContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#qual_all_op. - def visitQual_all_op(self, ctx:PostgreSQLParser.Qual_all_opContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#subquery_Op. - def visitSubquery_Op(self, ctx:PostgreSQLParser.Subquery_OpContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#expr_list. - def visitExpr_list(self, ctx:PostgreSQLParser.Expr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_arg_list. - def visitFunc_arg_list(self, ctx:PostgreSQLParser.Func_arg_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_arg_expr. - def visitFunc_arg_expr(self, ctx:PostgreSQLParser.Func_arg_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#type_list. - def visitType_list(self, ctx:PostgreSQLParser.Type_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#array_expr. - def visitArray_expr(self, ctx:PostgreSQLParser.Array_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#array_expr_list. - def visitArray_expr_list(self, ctx:PostgreSQLParser.Array_expr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#extract_list. - def visitExtract_list(self, ctx:PostgreSQLParser.Extract_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#extract_arg. - def visitExtract_arg(self, ctx:PostgreSQLParser.Extract_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#unicode_normal_form. - def visitUnicode_normal_form(self, ctx:PostgreSQLParser.Unicode_normal_formContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#overlay_list. - def visitOverlay_list(self, ctx:PostgreSQLParser.Overlay_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#position_list. - def visitPosition_list(self, ctx:PostgreSQLParser.Position_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#substr_list. - def visitSubstr_list(self, ctx:PostgreSQLParser.Substr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#trim_list. - def visitTrim_list(self, ctx:PostgreSQLParser.Trim_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#in_expr_select. - def visitIn_expr_select(self, ctx:PostgreSQLParser.In_expr_selectContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#in_expr_list. - def visitIn_expr_list(self, ctx:PostgreSQLParser.In_expr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#case_expr. - def visitCase_expr(self, ctx:PostgreSQLParser.Case_exprContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#when_clause_list. - def visitWhen_clause_list(self, ctx:PostgreSQLParser.When_clause_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#when_clause. - def visitWhen_clause(self, ctx:PostgreSQLParser.When_clauseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#case_default. - def visitCase_default(self, ctx:PostgreSQLParser.Case_defaultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#case_arg. - def visitCase_arg(self, ctx:PostgreSQLParser.Case_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#columnref. - def visitColumnref(self, ctx:PostgreSQLParser.ColumnrefContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#indirection_el. - def visitIndirection_el(self, ctx:PostgreSQLParser.Indirection_elContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_slice_bound. - def visitOpt_slice_bound(self, ctx:PostgreSQLParser.Opt_slice_boundContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#indirection. - def visitIndirection(self, ctx:PostgreSQLParser.IndirectionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_indirection. - def visitOpt_indirection(self, ctx:PostgreSQLParser.Opt_indirectionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_target_list. - def visitOpt_target_list(self, ctx:PostgreSQLParser.Opt_target_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#target_list. - def visitTarget_list(self, ctx:PostgreSQLParser.Target_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#target_label. - def visitTarget_label(self, ctx:PostgreSQLParser.Target_labelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#target_star. - def visitTarget_star(self, ctx:PostgreSQLParser.Target_starContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#qualified_name_list. - def visitQualified_name_list(self, ctx:PostgreSQLParser.Qualified_name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#qualified_name. - def visitQualified_name(self, ctx:PostgreSQLParser.Qualified_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#name_list. - def visitName_list(self, ctx:PostgreSQLParser.Name_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#name. - def visitName(self, ctx:PostgreSQLParser.NameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#attr_name. - def visitAttr_name(self, ctx:PostgreSQLParser.Attr_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#file_name. - def visitFile_name(self, ctx:PostgreSQLParser.File_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#func_name. - def visitFunc_name(self, ctx:PostgreSQLParser.Func_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#aexprconst. - def visitAexprconst(self, ctx:PostgreSQLParser.AexprconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#xconst. - def visitXconst(self, ctx:PostgreSQLParser.XconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#bconst. - def visitBconst(self, ctx:PostgreSQLParser.BconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#fconst. - def visitFconst(self, ctx:PostgreSQLParser.FconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#iconst. - def visitIconst(self, ctx:PostgreSQLParser.IconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sconst. - def visitSconst(self, ctx:PostgreSQLParser.SconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#anysconst. - def visitAnysconst(self, ctx:PostgreSQLParser.AnysconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_uescape. - def visitOpt_uescape(self, ctx:PostgreSQLParser.Opt_uescapeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#signediconst. - def visitSignediconst(self, ctx:PostgreSQLParser.SignediconstContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#roleid. - def visitRoleid(self, ctx:PostgreSQLParser.RoleidContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#rolespec. - def visitRolespec(self, ctx:PostgreSQLParser.RolespecContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#role_list. - def visitRole_list(self, ctx:PostgreSQLParser.Role_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#colid. - def visitColid(self, ctx:PostgreSQLParser.ColidContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#table_alias. - def visitTable_alias(self, ctx:PostgreSQLParser.Table_aliasContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#type_function_name. - def visitType_function_name(self, ctx:PostgreSQLParser.Type_function_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#nonreservedword. - def visitNonreservedword(self, ctx:PostgreSQLParser.NonreservedwordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#collabel. - def visitCollabel(self, ctx:PostgreSQLParser.CollabelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#identifier. - def visitIdentifier(self, ctx:PostgreSQLParser.IdentifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsqlidentifier. - def visitPlsqlidentifier(self, ctx:PostgreSQLParser.PlsqlidentifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#unreserved_keyword. - def visitUnreserved_keyword(self, ctx:PostgreSQLParser.Unreserved_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#col_name_keyword. - def visitCol_name_keyword(self, ctx:PostgreSQLParser.Col_name_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#type_func_name_keyword. - def visitType_func_name_keyword(self, ctx:PostgreSQLParser.Type_func_name_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#reserved_keyword. - def visitReserved_keyword(self, ctx:PostgreSQLParser.Reserved_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#builtin_function_name. - def visitBuiltin_function_name(self, ctx:PostgreSQLParser.Builtin_function_nameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#pl_function. - def visitPl_function(self, ctx:PostgreSQLParser.Pl_functionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#comp_options. - def visitComp_options(self, ctx:PostgreSQLParser.Comp_optionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#comp_option. - def visitComp_option(self, ctx:PostgreSQLParser.Comp_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sharp. - def visitSharp(self, ctx:PostgreSQLParser.SharpContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#option_value. - def visitOption_value(self, ctx:PostgreSQLParser.Option_valueContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_semi. - def visitOpt_semi(self, ctx:PostgreSQLParser.Opt_semiContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#pl_block. - def visitPl_block(self, ctx:PostgreSQLParser.Pl_blockContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_sect. - def visitDecl_sect(self, ctx:PostgreSQLParser.Decl_sectContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_start. - def visitDecl_start(self, ctx:PostgreSQLParser.Decl_startContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_stmts. - def visitDecl_stmts(self, ctx:PostgreSQLParser.Decl_stmtsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#label_decl. - def visitLabel_decl(self, ctx:PostgreSQLParser.Label_declContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_stmt. - def visitDecl_stmt(self, ctx:PostgreSQLParser.Decl_stmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_statement. - def visitDecl_statement(self, ctx:PostgreSQLParser.Decl_statementContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_scrollable. - def visitOpt_scrollable(self, ctx:PostgreSQLParser.Opt_scrollableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_cursor_query. - def visitDecl_cursor_query(self, ctx:PostgreSQLParser.Decl_cursor_queryContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_cursor_args. - def visitDecl_cursor_args(self, ctx:PostgreSQLParser.Decl_cursor_argsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_cursor_arglist. - def visitDecl_cursor_arglist(self, ctx:PostgreSQLParser.Decl_cursor_arglistContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_cursor_arg. - def visitDecl_cursor_arg(self, ctx:PostgreSQLParser.Decl_cursor_argContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_is_for. - def visitDecl_is_for(self, ctx:PostgreSQLParser.Decl_is_forContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_aliasitem. - def visitDecl_aliasitem(self, ctx:PostgreSQLParser.Decl_aliasitemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_varname. - def visitDecl_varname(self, ctx:PostgreSQLParser.Decl_varnameContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_const. - def visitDecl_const(self, ctx:PostgreSQLParser.Decl_constContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_datatype. - def visitDecl_datatype(self, ctx:PostgreSQLParser.Decl_datatypeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_collate. - def visitDecl_collate(self, ctx:PostgreSQLParser.Decl_collateContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_notnull. - def visitDecl_notnull(self, ctx:PostgreSQLParser.Decl_notnullContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_defval. - def visitDecl_defval(self, ctx:PostgreSQLParser.Decl_defvalContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#decl_defkey. - def visitDecl_defkey(self, ctx:PostgreSQLParser.Decl_defkeyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#assign_operator. - def visitAssign_operator(self, ctx:PostgreSQLParser.Assign_operatorContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_sect. - def visitProc_sect(self, ctx:PostgreSQLParser.Proc_sectContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_stmt. - def visitProc_stmt(self, ctx:PostgreSQLParser.Proc_stmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_perform. - def visitStmt_perform(self, ctx:PostgreSQLParser.Stmt_performContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_call. - def visitStmt_call(self, ctx:PostgreSQLParser.Stmt_callContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_expr_list. - def visitOpt_expr_list(self, ctx:PostgreSQLParser.Opt_expr_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_assign. - def visitStmt_assign(self, ctx:PostgreSQLParser.Stmt_assignContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_getdiag. - def visitStmt_getdiag(self, ctx:PostgreSQLParser.Stmt_getdiagContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#getdiag_area_opt. - def visitGetdiag_area_opt(self, ctx:PostgreSQLParser.Getdiag_area_optContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#getdiag_list. - def visitGetdiag_list(self, ctx:PostgreSQLParser.Getdiag_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#getdiag_list_item. - def visitGetdiag_list_item(self, ctx:PostgreSQLParser.Getdiag_list_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#getdiag_item. - def visitGetdiag_item(self, ctx:PostgreSQLParser.Getdiag_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#getdiag_target. - def visitGetdiag_target(self, ctx:PostgreSQLParser.Getdiag_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#assign_var. - def visitAssign_var(self, ctx:PostgreSQLParser.Assign_varContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_if. - def visitStmt_if(self, ctx:PostgreSQLParser.Stmt_ifContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_elsifs. - def visitStmt_elsifs(self, ctx:PostgreSQLParser.Stmt_elsifsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_else. - def visitStmt_else(self, ctx:PostgreSQLParser.Stmt_elseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_case. - def visitStmt_case(self, ctx:PostgreSQLParser.Stmt_caseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_expr_until_when. - def visitOpt_expr_until_when(self, ctx:PostgreSQLParser.Opt_expr_until_whenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#case_when_list. - def visitCase_when_list(self, ctx:PostgreSQLParser.Case_when_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#case_when. - def visitCase_when(self, ctx:PostgreSQLParser.Case_whenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_case_else. - def visitOpt_case_else(self, ctx:PostgreSQLParser.Opt_case_elseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_loop. - def visitStmt_loop(self, ctx:PostgreSQLParser.Stmt_loopContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_while. - def visitStmt_while(self, ctx:PostgreSQLParser.Stmt_whileContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_for. - def visitStmt_for(self, ctx:PostgreSQLParser.Stmt_forContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_control. - def visitFor_control(self, ctx:PostgreSQLParser.For_controlContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_for_using_expression. - def visitOpt_for_using_expression(self, ctx:PostgreSQLParser.Opt_for_using_expressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_cursor_parameters. - def visitOpt_cursor_parameters(self, ctx:PostgreSQLParser.Opt_cursor_parametersContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_reverse. - def visitOpt_reverse(self, ctx:PostgreSQLParser.Opt_reverseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_by_expression. - def visitOpt_by_expression(self, ctx:PostgreSQLParser.Opt_by_expressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#for_variable. - def visitFor_variable(self, ctx:PostgreSQLParser.For_variableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_foreach_a. - def visitStmt_foreach_a(self, ctx:PostgreSQLParser.Stmt_foreach_aContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#foreach_slice. - def visitForeach_slice(self, ctx:PostgreSQLParser.Foreach_sliceContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_exit. - def visitStmt_exit(self, ctx:PostgreSQLParser.Stmt_exitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#exit_type. - def visitExit_type(self, ctx:PostgreSQLParser.Exit_typeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_return. - def visitStmt_return(self, ctx:PostgreSQLParser.Stmt_returnContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_return_result. - def visitOpt_return_result(self, ctx:PostgreSQLParser.Opt_return_resultContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_raise. - def visitStmt_raise(self, ctx:PostgreSQLParser.Stmt_raiseContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_stmt_raise_level. - def visitOpt_stmt_raise_level(self, ctx:PostgreSQLParser.Opt_stmt_raise_levelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_raise_list. - def visitOpt_raise_list(self, ctx:PostgreSQLParser.Opt_raise_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_raise_using. - def visitOpt_raise_using(self, ctx:PostgreSQLParser.Opt_raise_usingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_raise_using_elem. - def visitOpt_raise_using_elem(self, ctx:PostgreSQLParser.Opt_raise_using_elemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_raise_using_elem_list. - def visitOpt_raise_using_elem_list(self, ctx:PostgreSQLParser.Opt_raise_using_elem_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_assert. - def visitStmt_assert(self, ctx:PostgreSQLParser.Stmt_assertContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_stmt_assert_message. - def visitOpt_stmt_assert_message(self, ctx:PostgreSQLParser.Opt_stmt_assert_messageContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#loop_body. - def visitLoop_body(self, ctx:PostgreSQLParser.Loop_bodyContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_execsql. - def visitStmt_execsql(self, ctx:PostgreSQLParser.Stmt_execsqlContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_dynexecute. - def visitStmt_dynexecute(self, ctx:PostgreSQLParser.Stmt_dynexecuteContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_execute_using. - def visitOpt_execute_using(self, ctx:PostgreSQLParser.Opt_execute_usingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_execute_using_list. - def visitOpt_execute_using_list(self, ctx:PostgreSQLParser.Opt_execute_using_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_execute_into. - def visitOpt_execute_into(self, ctx:PostgreSQLParser.Opt_execute_intoContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_open. - def visitStmt_open(self, ctx:PostgreSQLParser.Stmt_openContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_open_bound_list_item. - def visitOpt_open_bound_list_item(self, ctx:PostgreSQLParser.Opt_open_bound_list_itemContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_open_bound_list. - def visitOpt_open_bound_list(self, ctx:PostgreSQLParser.Opt_open_bound_listContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_open_using. - def visitOpt_open_using(self, ctx:PostgreSQLParser.Opt_open_usingContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_scroll_option. - def visitOpt_scroll_option(self, ctx:PostgreSQLParser.Opt_scroll_optionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_scroll_option_no. - def visitOpt_scroll_option_no(self, ctx:PostgreSQLParser.Opt_scroll_option_noContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_fetch. - def visitStmt_fetch(self, ctx:PostgreSQLParser.Stmt_fetchContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#into_target. - def visitInto_target(self, ctx:PostgreSQLParser.Into_targetContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_cursor_from. - def visitOpt_cursor_from(self, ctx:PostgreSQLParser.Opt_cursor_fromContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_fetch_direction. - def visitOpt_fetch_direction(self, ctx:PostgreSQLParser.Opt_fetch_directionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_move. - def visitStmt_move(self, ctx:PostgreSQLParser.Stmt_moveContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_close. - def visitStmt_close(self, ctx:PostgreSQLParser.Stmt_closeContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_null. - def visitStmt_null(self, ctx:PostgreSQLParser.Stmt_nullContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_commit. - def visitStmt_commit(self, ctx:PostgreSQLParser.Stmt_commitContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_rollback. - def visitStmt_rollback(self, ctx:PostgreSQLParser.Stmt_rollbackContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsql_opt_transaction_chain. - def visitPlsql_opt_transaction_chain(self, ctx:PostgreSQLParser.Plsql_opt_transaction_chainContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#stmt_set. - def visitStmt_set(self, ctx:PostgreSQLParser.Stmt_setContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#cursor_variable. - def visitCursor_variable(self, ctx:PostgreSQLParser.Cursor_variableContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#exception_sect. - def visitException_sect(self, ctx:PostgreSQLParser.Exception_sectContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_exceptions. - def visitProc_exceptions(self, ctx:PostgreSQLParser.Proc_exceptionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_exception. - def visitProc_exception(self, ctx:PostgreSQLParser.Proc_exceptionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_conditions. - def visitProc_conditions(self, ctx:PostgreSQLParser.Proc_conditionsContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#proc_condition. - def visitProc_condition(self, ctx:PostgreSQLParser.Proc_conditionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_block_label. - def visitOpt_block_label(self, ctx:PostgreSQLParser.Opt_block_labelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_loop_label. - def visitOpt_loop_label(self, ctx:PostgreSQLParser.Opt_loop_labelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_label. - def visitOpt_label(self, ctx:PostgreSQLParser.Opt_labelContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_exitcond. - def visitOpt_exitcond(self, ctx:PostgreSQLParser.Opt_exitcondContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#any_identifier. - def visitAny_identifier(self, ctx:PostgreSQLParser.Any_identifierContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#plsql_unreserved_keyword. - def visitPlsql_unreserved_keyword(self, ctx:PostgreSQLParser.Plsql_unreserved_keywordContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#sql_expression. - def visitSql_expression(self, ctx:PostgreSQLParser.Sql_expressionContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#expr_until_then. - def visitExpr_until_then(self, ctx:PostgreSQLParser.Expr_until_thenContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#expr_until_semi. - def visitExpr_until_semi(self, ctx:PostgreSQLParser.Expr_until_semiContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#expr_until_rightbracket. - def visitExpr_until_rightbracket(self, ctx:PostgreSQLParser.Expr_until_rightbracketContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#expr_until_loop. - def visitExpr_until_loop(self, ctx:PostgreSQLParser.Expr_until_loopContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#make_execsql_stmt. - def visitMake_execsql_stmt(self, ctx:PostgreSQLParser.Make_execsql_stmtContext): - return self.visitChildren(ctx) - - - # Visit a parse tree produced by PostgreSQLParser#opt_returning_clause_into. - def visitOpt_returning_clause_into(self, ctx:PostgreSQLParser.Opt_returning_clause_intoContext): - return self.visitChildren(ctx) - - - -del PostgreSQLParser \ No newline at end of file diff --git a/handling_dataset/main.py b/handling_dataset/main.py index 56b174a..9ec3b2d 100644 --- a/handling_dataset/main.py +++ b/handling_dataset/main.py @@ -290,32 +290,4 @@ def find_code_section(linked: dict) -> dict: result[question[0]] = list_of_questions_list - return result - - -if __name__ == "__main__": - questions_answers = retrieve_linked('D:\\final.txt') - codes = find_code_section(questions_answers) - print(codes) - - -#TODO vyhodit html charaktery, \s apod. -#TODO rozchodit antlr4 pro postgresql - """ -'\'<p>For example, you create <code>person</code> table, then insert 2 rows into it as shown -below.</p>\\n<pre class="lang-sql prettyprint-override"><code>CREATE TABLE person (\\n id INTEGER,\\n -ame VARCHAR(20)\\n);\\n\\nINSERT INTO person (id, name) \\nVALUES (1, \\\'John\\\'), (2, \\\'David\\\'); -\\n</code></pre>\\n<p>Next, you create <code>log</code> table, then you insert the row whose <code>num -</code> is <code>0</code> into <code>log</code> table as shown below:</p>\\n<pre class="lang-sql -prettyprint-override"><code>CREATE TABLE log (\\n num INTEGER\\n);\\n\\nINSERT INTO log (num) VALUES -(0);\\n</code></pre>\\n<p>Now, you can create <code>my_func()</code> trigger function with <code>RETURNS -trigger</code> and <code>LANGUAGE plpgsql</code> which increments <code>num</code> by 1 as shown below: -</p>\\n<pre class="lang-sql prettyprint-override"><code>CREATE FUNCTION my_func() RETURNS trigger\\nAS -$$\\nBEGIN\\n UPDATE log SET num = num + 1;\\n RETURN NULL;\\nEND;\\n$$ LANGUAGE plpgsql;\\n</code> -</pre>\\n<p>Next, you create <code>my_v</code> view as shown below.</p>\\n<pre class="lang-sql -prettyprint-override"><code>CREATE VIEW my_v AS\\n SELECT * FROM person;\\n</code></pre>\\n<p>Now, -you can create <code>my_t</code> trigger which runs <code>my_func()</code> when <code>UPDATE</code> or -<code>DELETE</code> operation is prevented on <code>my_view</code> - -@> - """ \ No newline at end of file + return result \ No newline at end of file diff --git a/main.py b/main.py index dfe9dba..8cded43 100644 --- a/main.py +++ b/main.py @@ -1,20 +1,71 @@ -from antlr4 import * -from antlr4_postgresql.PostgreSQLLexer import PostgreSQLLexer -from antlr4_postgresql.PostgreSQLParser import PostgreSQLParser +from handling_dataset.main import retrieve_linked, find_code_section +import sqlparse +from sqlparse.tokens import Whitespace, Newline +import re -if __name__ == "__main__": - input_text = input("> ") - lexer = PostgreSQLLexer(InputStream(input_text)) - stream = CommonTokenStream(lexer) - parser = PostgreSQLParser(stream) +from io import StringIO +from html.parser import HTMLParser +class MLStripper(HTMLParser): + def __init__(self): + super().__init__() + self.reset() + self.strict = False + self.convert_charrefs= True + self.text = StringIO() + def handle_data(self, d): + self.text.write(d) + def get_data(self): + return self.text.getvalue() + +def strip_tags(html): + s = MLStripper() + s.feed(html) + return s.get_data() + +def erase_html(code_section: str) -> str: + result = strip_tags(' '.join(code_section)) + + pattern = r"\\+['a-zA-Z]" + matches = re.findall(pattern, result) + + matches = list(set(matches)) + matches.sort(key=len) + matches.reverse() - tree = parser.r() + for match in matches: + if match[-1] == "'": + result = result.replace(match, '\'') + if match[-1] == 'n': + result = result.replace(match, '\n') + else: + result = result.replace(match, match[-2:]) + + return result - print(tree.toStringTree(recog=parser)) +def print_parsed(id: str, codes: list) -> None: + for code in codes: + tmp = erase_html(code) + + statements = sqlparse.split(tmp) + + for statement in statements: + parsed = sqlparse.parse(statement) + for parsed_statement in parsed: + print(f'Statement: {parsed_statement}') + print('Tokens: ') + for token in parsed_statement.tokens: + if token.ttype not in (Whitespace, Newline): + print(f' - {token}') + + print('-----------') + +if __name__ == "__main__": + codes = find_code_section(retrieve_linked('D:\\final.txt')) -""" -warning(146): PostgreSQLLexer.g4:1652:0: non-fragment lexer rule AfterEscapeStringConstantMode_NotContinued can -match the empty string -warning(146): PostgreSQLLexer.g4:1668:0: non-fragment lexer rule AfterEscapeStringConstantWithNewlineMode_NotContinued -can match the empty string -""" \ No newline at end of file + count = 0 + for key, values in codes.items(): + if count > 10: + break + print_parsed(key, values) + count += 1 + \ No newline at end of file diff --git a/tests.py b/tests.py index 4cf7bb3..0685122 100644 --- a/tests.py +++ b/tests.py @@ -77,3 +77,28 @@ def testing2(): mydict = dict(zip(questions, mydict.values())) print(mydict) + + +import sqlparse +def erasing_backslashes(): + xd = """SELECT \\\'ALTER TABLE "\\\'||nspname||\\\'"."\\\'||relname||\\\'" DROP CONSTRAINT "\\\'||conname||\\\'";\\\' + FROM pg_constraint + INNER JOIN pg_class ON conrelid=pg_class.oid + INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace + ORDER BY CASE WHEN contype=\\\'f\\\' THEN 0 ELSE 1 END,contype,nspname,relname,conname + SELECT \\\'ALTER TABLE "\\\'||nspname||\\\'"."\\\'||relname||\\\'" ADD CONSTRAINT "\\\'||conname||\\\'" \\\'|| pg_get_constraintdef(pg_constraint.oid)||\\\';\\\' + FROM pg_constraint + INNER JOIN pg_class ON conrelid=pg_class.oid + INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace + ORDER BY CASE WHEN contype=\\\'f\\\' THEN 0 ELSE 1 END DESC,contype DESC,nspname DESC,relname DESC,conname DESC;""" + + #xd = xd.replace('\\\'', '\'') + xd2 = sqlparse.split(xd) + + for x in xd2: + parsed = sqlparse.parse(x) + for statement in parsed: + print(f'Statement: {statement}') + print('Tokens: ') + for token in statement.tokens: + print(f' - {token}') -- GitLab