From 26c9f523e8fdf065a5806cd402eb22dc7d3d45ce Mon Sep 17 00:00:00 2001
From: Julian Kiryakov
Date: Tue, 15 Jul 2025 14:39:11 -0400
Subject: [PATCH 1/2] Add support for RLIKE (LIST) with pushdown (#129929)
Adds support for RLIKE function alternative syntax with a list of patterns.
Examples:
ROW message = "foobar"
| WHERE message RLIKE ("foo.*", "bar.")
The new syntax is documented as part of the existing RLIKE function documentation. We will use the existing RLike java implementation for existing cases using the old syntax and one list argument case to improve mixed cluster compatibility.
The RLikeList is pushed down as a single Automaton to improve performance.
(cherry picked from commit f0c30f272da3ff36f1a65524cc0e63a07389800a)
# Conflicts:
# docs/reference/query-languages/esql/_snippets/operators/detailedDescription/rlike.md
# x-pack/plugin/esql/src/main/antlr/parser/Expression.g4
# x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
# x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/regex/RLike.java
# x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
# x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
---
docs/changelog/129929.yaml | 5 +
.../predicate/regex/RLikePattern.java | 15 +-
.../predicate/regex/RLikePatternList.java | 92 +
.../xpack/esql/ccq/MultiClustersIT.java | 86 +-
.../esql/qa/single_node/PushQueriesIT.java | 36 +
.../src/main/resources/where-like.csv-spec | 452 +
.../xpack/esql/action/EsqlCapabilities.java | 7 +
.../esql/expression/ExpressionWritables.java | 2 +
.../scalar/string/regex/RLikeList.java | 158 +
...StringCasingWithInsensitiveRegexMatch.java | 5 +-
.../xpack/esql/parser/EsqlBaseParser.interp | 6 +-
.../xpack/esql/parser/EsqlBaseParser.java | 8613 +++++++++--------
.../parser/EsqlBaseParserBaseListener.java | 12 +
.../parser/EsqlBaseParserBaseVisitor.java | 7 +
.../esql/parser/EsqlBaseParserListener.java | 12 +
.../esql/parser/EsqlBaseParserVisitor.java | 7 +
.../xpack/esql/parser/ExpressionBuilder.java | 19 +-
.../scalar/string/RLikeListErrorTests.java | 49 +
.../string/RLikeListSerializationTests.java | 54 +
.../scalar/string/RLikeListTests.java | 206 +
.../esql/parser/StatementParserTests.java | 2 +-
21 files changed, 5742 insertions(+), 4103 deletions(-)
create mode 100644 docs/changelog/129929.yaml
create mode 100644 x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePatternList.java
create mode 100644 x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/regex/RLikeList.java
create mode 100644 x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListErrorTests.java
create mode 100644 x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListSerializationTests.java
create mode 100644 x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListTests.java
diff --git a/docs/changelog/129929.yaml b/docs/changelog/129929.yaml
new file mode 100644
index 0000000000000..c2296a64ab434
--- /dev/null
+++ b/docs/changelog/129929.yaml
@@ -0,0 +1,5 @@
+pr: 129929
+summary: Add support for RLIKE (LIST) with pushdown
+area: ES|QL
+type: enhancement
+issues: []
diff --git a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePattern.java b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePattern.java
index d94db12b0eb9b..58c51028beed4 100644
--- a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePattern.java
+++ b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePattern.java
@@ -9,10 +9,14 @@
import org.apache.lucene.util.automaton.Automaton;
import org.apache.lucene.util.automaton.Operations;
import org.apache.lucene.util.automaton.RegExp;
+import org.elasticsearch.common.io.stream.StreamInput;
+import org.elasticsearch.common.io.stream.StreamOutput;
+import org.elasticsearch.common.io.stream.Writeable;
+import java.io.IOException;
import java.util.Objects;
-public class RLikePattern extends AbstractStringPattern {
+public class RLikePattern extends AbstractStringPattern implements Writeable {
private final String regexpPattern;
@@ -20,6 +24,15 @@ public RLikePattern(String regexpPattern) {
this.regexpPattern = regexpPattern;
}
+ public RLikePattern(StreamInput in) throws IOException {
+ this(in.readString());
+ }
+
+ @Override
+ public void writeTo(StreamOutput out) throws IOException {
+ out.writeString(regexpPattern);
+ }
+
@Override
public Automaton createAutomaton(boolean ignoreCase) {
int matchFlags = ignoreCase ? RegExp.ASCII_CASE_INSENSITIVE : 0;
diff --git a/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePatternList.java b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePatternList.java
new file mode 100644
index 0000000000000..be62d189bafa4
--- /dev/null
+++ b/x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/predicate/regex/RLikePatternList.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+package org.elasticsearch.xpack.esql.core.expression.predicate.regex;
+
+import org.apache.lucene.util.automaton.Automaton;
+import org.apache.lucene.util.automaton.Operations;
+import org.elasticsearch.common.io.stream.StreamInput;
+import org.elasticsearch.common.io.stream.StreamOutput;
+import org.elasticsearch.common.io.stream.Writeable;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public class RLikePatternList extends AbstractStringPattern implements Writeable {
+
+ private final List patternList;
+
+ public RLikePatternList(List patternList) {
+ this.patternList = patternList;
+ }
+
+ public RLikePatternList(StreamInput in) throws IOException {
+ this(in.readCollectionAsList(RLikePattern::new));
+ }
+
+ @Override
+ public void writeTo(StreamOutput out) throws IOException {
+ out.writeCollection(patternList, (o, pattern) -> pattern.writeTo(o));
+ }
+
+ public List patternList() {
+ return patternList;
+ }
+
+ /**
+ * Creates an automaton that matches any of the patterns in the list.
+ * We create a single automaton that is the union of all individual automatons to improve performance
+ */
+ @Override
+ public Automaton createAutomaton(boolean ignoreCase) {
+ List automatonList = patternList.stream().map(x -> x.createAutomaton(ignoreCase)).toList();
+ Automaton result = Operations.union(automatonList);
+ return Operations.determinize(result, Operations.DEFAULT_DETERMINIZE_WORK_LIMIT);
+ }
+
+ /**
+ * Returns a Java regex that matches any of the patterns in the list.
+ * The patterns are joined with the '|' operator to create a single regex.
+ */
+ @Override
+ public String asJavaRegex() {
+ return patternList.stream().map(RLikePattern::asJavaRegex).collect(Collectors.joining("|"));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(patternList);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ RLikePatternList other = (RLikePatternList) obj;
+ return patternList.equals(other.patternList);
+ }
+
+ /**
+ * Returns a string that matches any of the patterns in the list.
+ * The patterns are joined with the '|' operator to create a single regex string.
+ */
+ @Override
+ public String pattern() {
+ if (patternList.isEmpty()) {
+ return "";
+ }
+ if (patternList.size() == 1) {
+ return patternList.get(0).pattern();
+ }
+ return "(\"" + patternList.stream().map(RLikePattern::pattern).collect(Collectors.joining("\", \"")) + "\")";
+ }
+}
diff --git a/x-pack/plugin/esql/qa/server/multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq/MultiClustersIT.java b/x-pack/plugin/esql/qa/server/multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq/MultiClustersIT.java
index a7eeef8e823a2..8fe2a5969a6a3 100644
--- a/x-pack/plugin/esql/qa/server/multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq/MultiClustersIT.java
+++ b/x-pack/plugin/esql/qa/server/multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq/MultiClustersIT.java
@@ -164,25 +164,24 @@ private Map runEsql(RestEsqlTestCase.RequestObjectBuilder reques
}
}
- private void assertResultMapForLike(
+ private void assertResultMapWithCapabilities(
boolean includeCCSMetadata,
Map result,
C columns,
V values,
boolean remoteOnly,
- boolean requireLikeListCapability
+ List fullResultCapabilities
) throws IOException {
- List requiredCapabilities = new ArrayList<>(List.of("like_on_index_fields"));
- if (requireLikeListCapability) {
- requiredCapabilities.add("like_list_on_index_fields");
- }
// the feature is completely supported if both local and remote clusters support it
- boolean isSupported = capabilitiesSupportedNewAndOld(requiredCapabilities);
-
+ // otherwise we expect a partial result, and will not check the data
+ boolean isSupported = capabilitiesSupportedNewAndOld(fullResultCapabilities);
if (isSupported) {
assertResultMap(includeCCSMetadata, result, columns, values, remoteOnly);
} else {
- logger.info("--> skipping data check for like index test, cluster does not support like index feature");
+ logger.info(
+ "--> skipping data check for a test, cluster does not support all of [{}] capabilities",
+ String.join(",", fullResultCapabilities)
+ );
// just verify that we did not get a partial result
var clusters = result.get("_clusters");
var reason = "unexpected partial results" + (clusters != null ? ": _clusters=" + clusters : "");
@@ -427,7 +426,7 @@ public void testLikeIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(remoteDocs.size(), REMOTE_CLUSTER_NAME + ":" + remoteIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
public void testLikeIndexLegacySettingNoResults() throws Exception {
@@ -449,7 +448,7 @@ public void testLikeIndexLegacySettingNoResults() throws Exception {
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
// we expect empty result, since the setting is false
var values = List.of();
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
}
@@ -473,7 +472,7 @@ public void testLikeIndexLegacySettingResults() throws Exception {
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
// we expect results, since the setting is false, but there is : in the LIKE query
var values = List.of(List.of(remoteDocs.size(), REMOTE_CLUSTER_NAME + ":" + remoteIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
}
@@ -487,7 +486,7 @@ public void testNotLikeIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(localDocs.size(), localIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
public void testLikeListIndex() throws Exception {
@@ -502,7 +501,14 @@ public void testLikeListIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(remoteDocs.size(), REMOTE_CLUSTER_NAME + ":" + remoteIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, true);
+ assertResultMapWithCapabilities(
+ includeCCSMetadata,
+ result,
+ columns,
+ values,
+ false,
+ List.of("like_on_index_fields", "like_list_on_index_fields")
+ );
}
public void testNotLikeListIndex() throws Exception {
@@ -516,7 +522,14 @@ public void testNotLikeListIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(localDocs.size(), localIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, true);
+ assertResultMapWithCapabilities(
+ includeCCSMetadata,
+ result,
+ columns,
+ values,
+ false,
+ List.of("like_on_index_fields", "like_list_on_index_fields")
+ );
}
public void testNotLikeListKeyword() throws Exception {
@@ -540,7 +553,14 @@ public void testNotLikeListKeyword() throws Exception {
if (localCount > 0) {
values.add(List.of(localCount, localIndex));
}
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, true);
+ assertResultMapWithCapabilities(
+ includeCCSMetadata,
+ result,
+ columns,
+ values,
+ false,
+ List.of("like_on_index_fields", "like_list_on_index_fields")
+ );
}
public void testRLikeIndex() throws Exception {
@@ -553,7 +573,7 @@ public void testRLikeIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(remoteDocs.size(), REMOTE_CLUSTER_NAME + ":" + remoteIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
public void testNotRLikeIndex() throws Exception {
@@ -566,7 +586,37 @@ public void testNotRLikeIndex() throws Exception {
""", includeCCSMetadata);
var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
var values = List.of(List.of(localDocs.size(), localIndex));
- assertResultMapForLike(includeCCSMetadata, result, columns, values, false, false);
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
+ }
+
+ public void testRLikeListIndex() throws Exception {
+ assumeTrue("not supported", capabilitiesSupportedNewAndOld(List.of("rlike_with_list_of_patterns")));
+ boolean includeCCSMetadata = includeCCSMetadata();
+ Map result = run("""
+ FROM test-local-index,*:test-remote-index METADATA _index
+ | WHERE _index RLIKE (".*remote.*", ".*not-exist.*")
+ | STATS c = COUNT(*) BY _index
+ | SORT _index ASC
+ """, includeCCSMetadata);
+ var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
+ var values = List.of(List.of(remoteDocs.size(), REMOTE_CLUSTER_NAME + ":" + remoteIndex));
+ // we depend on the code in like_on_index_fields to serialize an ExpressionQueryBuilder
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
+ }
+
+ public void testNotRLikeListIndex() throws Exception {
+ assumeTrue("not supported", capabilitiesSupportedNewAndOld(List.of("rlike_with_list_of_patterns")));
+ boolean includeCCSMetadata = includeCCSMetadata();
+ Map result = run("""
+ FROM test-local-index,*:test-remote-index METADATA _index
+ | WHERE _index NOT RLIKE (".*remote.*", ".*not-exist.*")
+ | STATS c = COUNT(*) BY _index
+ | SORT _index ASC
+ """, includeCCSMetadata);
+ var columns = List.of(Map.of("name", "c", "type", "long"), Map.of("name", "_index", "type", "keyword"));
+ var values = List.of(List.of(localDocs.size(), localIndex));
+ // we depend on the code in like_on_index_fields to serialize an ExpressionQueryBuilder
+ assertResultMapWithCapabilities(includeCCSMetadata, result, columns, values, false, List.of("like_on_index_fields"));
}
private RestClient remoteClusterClient() throws IOException {
diff --git a/x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/PushQueriesIT.java b/x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/PushQueriesIT.java
index 56687d0585ff0..c0c3afd061be1 100644
--- a/x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/PushQueriesIT.java
+++ b/x-pack/plugin/esql/qa/server/single-node/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/single_node/PushQueriesIT.java
@@ -275,6 +275,42 @@ public void testLikeList() throws IOException {
testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
}
+ public void testRLike() throws IOException {
+ String value = "v".repeat(between(1, 256));
+ String esqlQuery = """
+ FROM test
+ | WHERE test rlike "%value.*"
+ """;
+ String luceneQuery = switch (type) {
+ case KEYWORD -> "test:/%value.*/";
+ case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, AUTO, TEXT_WITH_KEYWORD -> "*:*";
+ case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
+ };
+ ComputeSignature dataNodeSignature = switch (type) {
+ case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
+ case AUTO, TEXT_WITH_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
+ };
+ testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
+ }
+
+ public void testRLikeList() throws IOException {
+ String value = "v".repeat(between(1, 256));
+ String esqlQuery = """
+ FROM test
+ | WHERE test rlike ("%value.*", "abc.*")
+ """;
+ String luceneQuery = switch (type) {
+ case CONSTANT_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, AUTO, TEXT_WITH_KEYWORD -> "*:*";
+ case SEMANTIC_TEXT_WITH_KEYWORD -> "FieldExistsQuery [field=_primary_term]";
+ case KEYWORD -> "test:RLIKE(\"%value.*\", \"abc.*\"), caseInsensitive=false";
+ };
+ ComputeSignature dataNodeSignature = switch (type) {
+ case CONSTANT_KEYWORD, KEYWORD -> ComputeSignature.FILTER_IN_QUERY;
+ case AUTO, TEXT_WITH_KEYWORD, MATCH_ONLY_TEXT_WITH_KEYWORD, SEMANTIC_TEXT_WITH_KEYWORD -> ComputeSignature.FILTER_IN_COMPUTE;
+ };
+ testPushQuery(value, esqlQuery, List.of(luceneQuery), dataNodeSignature, true);
+ }
+
enum ComputeSignature {
FILTER_IN_COMPUTE(
matchesList().item("LuceneSourceOperator")
diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/where-like.csv-spec b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/where-like.csv-spec
index 0cc5cfe95db94..6ee2987057f00 100644
--- a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/where-like.csv-spec
+++ b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/where-like.csv-spec
@@ -534,6 +534,458 @@ emp_no:integer | first_name:keyword
10055 | Georgy
;
+rlikeListEmptyArgWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+;
+
+rlikeListSingleArgWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name RLIKE ("Eberhardt.*")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+10013 | Eberhardt
+;
+
+rlikeListTwoArgWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("Eberhardt.*", "testString.*")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+10013 | Eberhardt
+;
+
+rlikeListDocExample
+required_capability: rlike_with_list_of_patterns
+// tag::rlikeListDocExample[]
+ROW message = "foobar"
+| WHERE message RLIKE ("foo.*", "bar.")
+// end::rlikeListDocExample[]
+;
+
+message:string
+foobar
+;
+
+rlikeListThreeArgWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("Eberhardt.*", "Ot.*", "Part.")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10003 | Parto
+10013 | Eberhardt
+10029 | Otmar
+;
+
+rlikeListMultipleWhere
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name RLIKE ("Eberhardt.*", "Ot.*", "Part.")
+| WHERE first_name RLIKE ("Eberhard.", "Otm.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10013 | Eberhardt
+10029 | Otmar
+;
+
+rlikeListAllWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike (".*")
+| KEEP emp_no, first_name
+| SORT emp_no
+| LIMIT 2;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10002 | Bezalel
+;
+
+rlikeListOverlappingPatterns
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("Eber.*", "Eberhardt")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+10013 | Eberhardt
+;
+
+rlikeListCaseSensitive
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name RLIKE ("eberhardt", "EBERHARDT")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+;
+
+rlikeListSpecialCharacters
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike (".*ar.*", ".*eor.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10003 | Parto
+10011 | Mary
+10013 | Eberhardt
+10029 | Otmar
+10055 | Georgy
+10058 | Berhard
+10068 | Charlene
+10069 | Margareta
+10074 | Mokhtar
+10082 | Parviz
+10089 | Sudharsan
+10095 | Hilari
+;
+
+rlikeListEscapedWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("Eberhar\\*")
+| KEEP emp_no, first_name;
+
+emp_no:integer | first_name:keyword
+;
+
+rlikeListNineOrMoreLetters
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike (".{9,}.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10004 | Chirstian
+10010 | Duangkaew
+10013 | Eberhardt
+10017 | Cristinel
+10025 | Prasadram
+10059 | Alejandro
+10069 | Margareta
+10089 | Sudharsan
+10092 | Valdiodio
+10098 | Sreekrishna
+;
+
+notRlikeListThreeArgWildcardNotOtherFilter
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name not rlike ("Eberhardt.*", "Ot.*", "Part.") and emp_no < 10010
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10002 | Bezalel
+10004 | Chirstian
+10005 | Kyoichi
+10006 | Anneke
+10007 | Tzvetan
+10008 | Saniya
+10009 | Sumant
+;
+
+rlikeListBeginningWithWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name rlike ("A.*", "B.*", "C.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10002 | Bezalel
+10004 | Chirstian
+10006 | Anneke
+10014 | Berni
+10017 | Cristinel
+10023 | Bojan
+10049 | Basil
+10056 | Brendon
+10058 | Berhard
+10059 | Alejandro
+10060 | Breannda
+10062 | Anoosh
+10067 | Claudi
+10068 | Charlene
+10091 | Amabile
+10094 | Arumugam
+;
+
+notRlikeListThreeArgWildcardOtherFirst
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE emp_no < 10010 and first_name not rlike ("Eberhardt.*", "Ot.*", "Part.")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10002 | Bezalel
+10004 | Chirstian
+10005 | Kyoichi
+10006 | Anneke
+10007 | Tzvetan
+10008 | Saniya
+10009 | Sumant
+;
+
+notRlikeFiveOrLessLetters
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name not rlike (".{6,}.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10003 | Parto
+10011 | Mary
+10014 | Berni
+10021 | Ramzi
+10023 | Bojan
+10029 | Otmar
+10040 | Weiyi
+10041 | Uri
+10042 | Magy
+10045 | Moss
+10049 | Basil
+10057 | Ebbe
+10061 | Tse
+10063 | Gino
+10064 | Udi
+10066 | Kwee
+10071 | Hisao
+10073 | Shir
+10075 | Gao
+10076 | Erez
+10077 | Mona
+10078 | Danel
+10083 | Vishv
+10084 | Tuval
+10097 | Remzi
+;
+
+notRlikeListMultipleWhere
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name NOT RLIKE ("Eberhardt.*", "Ot.*", "Part.", "A.*", "B.*", "C.*", "D.*")
+| WHERE first_name NOT RLIKE ("Eberhard.", "Otm.*", "F.*", "G.*", "H.*", "I.*", "J.*", "K.*", "L.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10007 | Tzvetan
+10008 | Saniya
+10009 | Sumant
+10011 | Mary
+10012 | Patricio
+10020 | Mayuko
+10021 | Ramzi
+10022 | Shahaf
+10024 | Suzette
+10025 | Prasadram
+10026 | Yongqiao
+10040 | Weiyi
+10041 | Uri
+10042 | Magy
+10043 | Yishay
+10044 | Mingsen
+10045 | Moss
+10047 | Zvonko
+10050 | Yinghua
+10053 | Sanjiv
+10054 | Mayumi
+10057 | Ebbe
+10061 | Tse
+10064 | Udi
+10065 | Satosi
+10069 | Margareta
+10070 | Reuven
+10073 | Shir
+10074 | Mokhtar
+10076 | Erez
+10077 | Mona
+10080 | Premal
+10081 | Zhongwei
+10082 | Parviz
+10083 | Vishv
+10084 | Tuval
+10086 | Somnath
+10087 | Xinglin
+10089 | Sudharsan
+10092 | Valdiodio
+10093 | Sailaja
+10097 | Remzi
+10098 | Sreekrishna
+10099 | Valter
+;
+
+notRlikeListNotField
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE NOT first_name RLIKE ("Eberhardt.*", "Ot.*", "Part.", "A.*", "B.*", "C.*", "D.*")
+| WHERE first_name NOT RLIKE ("Eberhard.", "Otm.*", "F.*", "G.*", "H.*", "I.*", "J.*", "K.*", "L.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10007 | Tzvetan
+10008 | Saniya
+10009 | Sumant
+10011 | Mary
+10012 | Patricio
+10020 | Mayuko
+10021 | Ramzi
+10022 | Shahaf
+10024 | Suzette
+10025 | Prasadram
+10026 | Yongqiao
+10040 | Weiyi
+10041 | Uri
+10042 | Magy
+10043 | Yishay
+10044 | Mingsen
+10045 | Moss
+10047 | Zvonko
+10050 | Yinghua
+10053 | Sanjiv
+10054 | Mayumi
+10057 | Ebbe
+10061 | Tse
+10064 | Udi
+10065 | Satosi
+10069 | Margareta
+10070 | Reuven
+10073 | Shir
+10074 | Mokhtar
+10076 | Erez
+10077 | Mona
+10080 | Premal
+10081 | Zhongwei
+10082 | Parviz
+10083 | Vishv
+10084 | Tuval
+10086 | Somnath
+10087 | Xinglin
+10089 | Sudharsan
+10092 | Valdiodio
+10093 | Sailaja
+10097 | Remzi
+10098 | Sreekrishna
+10099 | Valter
+;
+
+notRlikeListAllWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name NOT RLIKE (".*")
+| KEEP emp_no, first_name
+| SORT emp_no
+| LIMIT 2;
+
+emp_no:integer | first_name:keyword
+10030 | null
+10031 | null
+;
+
+notRlikeListWildcard
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE first_name NOT RLIKE ("A.*","B.*", "C.*", "D.*","E.*", "F.*", "G.*", "H.*", "I.*", "J.*", "K.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10003 | Parto
+10007 | Tzvetan
+10008 | Saniya
+10009 | Sumant
+10011 | Mary
+10012 | Patricio
+10019 | Lillian
+10020 | Mayuko
+10021 | Ramzi
+10022 | Shahaf
+10024 | Suzette
+10025 | Prasadram
+10026 | Yongqiao
+10029 | Otmar
+10040 | Weiyi
+10041 | Uri
+10042 | Magy
+10043 | Yishay
+10044 | Mingsen
+10045 | Moss
+10046 | Lucien
+10047 | Zvonko
+10050 | Yinghua
+10053 | Sanjiv
+10054 | Mayumi
+10061 | Tse
+10064 | Udi
+10065 | Satosi
+10069 | Margareta
+10070 | Reuven
+10073 | Shir
+10074 | Mokhtar
+10077 | Mona
+10080 | Premal
+10081 | Zhongwei
+10082 | Parviz
+10083 | Vishv
+10084 | Tuval
+10086 | Somnath
+10087 | Xinglin
+10089 | Sudharsan
+10092 | Valdiodio
+10093 | Sailaja
+10097 | Remzi
+10098 | Sreekrishna
+10099 | Valter
+;
+
+rlikeListWithUpperTurnedInsensitive
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE TO_UPPER(first_name) RLIKE ("GEOR.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10055 | Georgy
+;
+
+rlikeListWithUpperTurnedInsensitiveMult
+required_capability: rlike_with_list_of_patterns
+FROM employees
+| WHERE TO_UPPER(first_name) RLIKE ("GEOR.*", "WE.*")
+| KEEP emp_no, first_name
+| SORT emp_no;
+
+emp_no:integer | first_name:keyword
+10001 | Georgi
+10040 | Weiyi
+10055 | Georgy
+;
+
likeAll
from employees | where first_name like "*" and emp_no > 10028 | sort emp_no | keep emp_no, first_name | limit 2;
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
index 73bbd2d4199d0..a459ebe0a3e23 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
@@ -989,6 +989,9 @@ public enum Cap {
/**
* Support for LIKE operator with a list of patterns
*/
+ /**
+ * Support for the LIKE operator with a list of wildcards.
+ */
LIKE_WITH_LIST_OF_PATTERNS,
LIKE_LIST_ON_INDEX_FIELDS,
@@ -1017,6 +1020,10 @@ public enum Cap {
NO_PLAIN_STRINGS_IN_LITERALS,
/**
+ /**
+ * Support for the RLIKE operator with a list of regexes.
+ */
+ RLIKE_WITH_LIST_OF_PATTERNS,
/**
* Support improved behavior for LIKE operator when used with index fields.
*/
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/ExpressionWritables.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/ExpressionWritables.java
index 901f364a60041..53787508779a2 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/ExpressionWritables.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/ExpressionWritables.java
@@ -82,6 +82,7 @@
import org.elasticsearch.xpack.esql.expression.function.scalar.string.Space;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.Trim;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLike;
+import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLikeList;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.WildcardLike;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.WildcardLikeList;
import org.elasticsearch.xpack.esql.expression.function.scalar.util.Delay;
@@ -182,6 +183,7 @@ public static List unaryScalars() {
entries.add(Neg.ENTRY);
entries.add(Not.ENTRY);
entries.add(RLike.ENTRY);
+ entries.add(RLikeList.ENTRY);
entries.add(RTrim.ENTRY);
entries.add(Scalb.ENTRY);
entries.add(Signum.ENTRY);
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/regex/RLikeList.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/regex/RLikeList.java
new file mode 100644
index 0000000000000..3112cfcd47c93
--- /dev/null
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/regex/RLikeList.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.xpack.esql.expression.function.scalar.string.regex;
+
+import org.apache.lucene.search.MultiTermQuery;
+import org.apache.lucene.util.automaton.Automaton;
+import org.apache.lucene.util.automaton.CharacterRunAutomaton;
+import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
+import org.elasticsearch.common.io.stream.StreamInput;
+import org.elasticsearch.common.io.stream.StreamOutput;
+import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.query.SearchExecutionContext;
+import org.elasticsearch.xpack.esql.core.expression.Expression;
+import org.elasticsearch.xpack.esql.core.expression.FieldAttribute;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePattern;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePatternList;
+import org.elasticsearch.xpack.esql.core.querydsl.query.Query;
+import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
+import org.elasticsearch.xpack.esql.core.tree.Source;
+import org.elasticsearch.xpack.esql.expression.function.Param;
+import org.elasticsearch.xpack.esql.io.stream.ExpressionQuery;
+import org.elasticsearch.xpack.esql.io.stream.PlanStreamInput;
+import org.elasticsearch.xpack.esql.optimizer.rules.physical.local.LucenePushdownPredicates;
+import org.elasticsearch.xpack.esql.planner.TranslatorHandler;
+
+import java.io.IOException;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+public class RLikeList extends RegexMatch {
+ public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(
+ Expression.class,
+ "RLikeList",
+ RLikeList::new
+ );
+
+ Supplier automatonSupplier = new Supplier<>() {
+ Automaton cached;
+
+ @Override
+ public Automaton get() {
+ if (cached == null) {
+ cached = pattern().createAutomaton(caseInsensitive());
+ }
+ return cached;
+ }
+ };
+
+ Supplier characterRunAutomatonSupplier = new Supplier<>() {
+ CharacterRunAutomaton cached;
+
+ @Override
+ public CharacterRunAutomaton get() {
+ if (cached == null) {
+ cached = new CharacterRunAutomaton(automatonSupplier.get());
+ }
+ return cached;
+ }
+ };
+
+ /**
+ * The documentation for this function is in RLike, and shown to the users as `RLIKE` in the docs.
+ */
+ public RLikeList(
+ Source source,
+ @Param(name = "str", type = { "keyword", "text" }, description = "A literal value.") Expression value,
+ @Param(name = "patterns", type = { "keyword", "text" }, description = "A list of regular expressions.") RLikePatternList patterns
+ ) {
+ this(source, value, patterns, false);
+ }
+
+ public RLikeList(Source source, Expression field, RLikePatternList rLikePattern, boolean caseInsensitive) {
+ super(source, field, rLikePattern, caseInsensitive);
+ }
+
+ private RLikeList(StreamInput in) throws IOException {
+ this(
+ Source.readFrom((PlanStreamInput) in),
+ in.readNamedWriteable(Expression.class),
+ new RLikePatternList(in),
+ deserializeCaseInsensitivity(in)
+ );
+ }
+
+ @Override
+ public void writeTo(StreamOutput out) throws IOException {
+ source().writeTo(out);
+ out.writeNamedWriteable(field());
+ pattern().writeTo(out);
+ serializeCaseInsensitivity(out);
+ }
+
+ @Override
+ public String name() {
+ return ENTRY.name;
+ }
+
+ @Override
+ public String getWriteableName() {
+ return ENTRY.name;
+ }
+
+ @Override
+ protected RLikeList replaceChild(Expression newChild) {
+ return new RLikeList(source(), newChild, pattern(), caseInsensitive());
+ }
+
+ @Override
+ public Translatable translatable(LucenePushdownPredicates pushdownPredicates) {
+ return pushdownPredicates.isPushableAttribute(field()) ? Translatable.YES : Translatable.NO;
+ }
+
+ /**
+ * Returns a {@link Query} that matches the field against the provided patterns.
+ * For now, we only support a single pattern in the list for pushdown.
+ */
+ @Override
+ public Query asQuery(LucenePushdownPredicates pushdownPredicates, TranslatorHandler handler) {
+ var field = field();
+ LucenePushdownPredicates.checkIsPushableAttribute(field);
+ return translateField(handler.nameOf(field instanceof FieldAttribute fa ? fa.exactAttribute() : field));
+ }
+
+ private Query translateField(String targetFieldName) {
+ return new ExpressionQuery(source(), targetFieldName, this);
+ }
+
+ @Override
+ public org.apache.lucene.search.Query asLuceneQuery(
+ MappedFieldType fieldType,
+ MultiTermQuery.RewriteMethod constantScoreRewrite,
+ SearchExecutionContext context
+ ) {
+ return fieldType.automatonQuery(
+ automatonSupplier,
+ characterRunAutomatonSupplier,
+ constantScoreRewrite,
+ context,
+ getLuceneQueryDescription()
+ );
+ }
+
+ @Override
+ protected NodeInfo extends Expression> info() {
+ return NodeInfo.create(this, RLikeList::new, field(), pattern(), caseInsensitive());
+ }
+
+ private String getLuceneQueryDescription() {
+ // we use the information used to create the automaton to describe the query here
+ String patternDesc = pattern().patternList().stream().map(RLikePattern::pattern).collect(Collectors.joining("\", \""));
+ return "RLIKE(\"" + patternDesc + "\"), caseInsensitive=" + caseInsensitive();
+ }
+}
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStringCasingWithInsensitiveRegexMatch.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStringCasingWithInsensitiveRegexMatch.java
index 50b040bf0147e..b97fa647de6c1 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStringCasingWithInsensitiveRegexMatch.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/ReplaceStringCasingWithInsensitiveRegexMatch.java
@@ -9,6 +9,7 @@
import org.elasticsearch.xpack.esql.core.expression.Expression;
import org.elasticsearch.xpack.esql.core.expression.Literal;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePatternList;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RegexMatch;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.StringPattern;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.WildcardPatternList;
@@ -29,8 +30,8 @@ public ReplaceStringCasingWithInsensitiveRegexMatch() {
@Override
protected Expression rule(RegexMatch extends StringPattern> regexMatch, LogicalOptimizerContext unused) {
Expression e = regexMatch;
- if (regexMatch.pattern() instanceof WildcardPatternList) {
- // This optimization is not supported for WildcardPatternList for now
+ if (regexMatch.pattern() instanceof WildcardPatternList || regexMatch.pattern() instanceof RLikePatternList) {
+ // This optimization is not supported for WildcardPatternList and RLikePatternList for now
return e;
}
if (regexMatch.field() instanceof ChangeCase changeCase) {
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
index 1bcb0a00147e8..f10d7774fc378 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.interp
@@ -367,4 +367,8 @@ completionCommand
atn:
-[4, 1, 139, 786, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 172, 8, 1, 10, 1, 12, 1, 175, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 183, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 207, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 219, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 226, 8, 5, 10, 5, 12, 5, 229, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 236, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 241, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 249, 8, 5, 10, 5, 12, 5, 252, 9, 5, 1, 6, 1, 6, 3, 6, 256, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 263, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 270, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 277, 8, 6, 10, 6, 12, 6, 280, 9, 6, 1, 6, 1, 6, 3, 6, 284, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 289, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 299, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 305, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 313, 8, 9, 10, 9, 12, 9, 316, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 326, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 331, 8, 10, 10, 10, 12, 10, 334, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 342, 8, 11, 10, 11, 12, 11, 345, 9, 11, 1, 11, 1, 11, 3, 11, 349, 8, 11, 3, 11, 351, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 361, 8, 13, 10, 13, 12, 13, 364, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 380, 8, 17, 10, 17, 12, 17, 383, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 388, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 5, 19, 395, 8, 19, 10, 19, 12, 19, 398, 9, 19, 1, 20, 1, 20, 1, 20, 3, 20, 403, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 409, 8, 21, 10, 21, 12, 21, 412, 9, 21, 1, 21, 3, 21, 415, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 426, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 3, 27, 438, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 444, 8, 28, 10, 28, 12, 28, 447, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 457, 8, 30, 10, 30, 12, 30, 460, 9, 30, 1, 30, 3, 30, 463, 8, 30, 1, 30, 1, 30, 3, 30, 467, 8, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 474, 8, 32, 1, 32, 1, 32, 3, 32, 478, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 483, 8, 33, 10, 33, 12, 33, 486, 9, 33, 1, 34, 1, 34, 1, 34, 3, 34, 491, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 496, 8, 35, 10, 35, 12, 35, 499, 9, 35, 1, 36, 1, 36, 1, 36, 5, 36, 504, 8, 36, 10, 36, 12, 36, 507, 9, 36, 1, 37, 1, 37, 1, 37, 5, 37, 512, 8, 37, 10, 37, 12, 37, 515, 9, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 522, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 537, 8, 40, 10, 40, 12, 40, 540, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 548, 8, 40, 10, 40, 12, 40, 551, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 559, 8, 40, 10, 40, 12, 40, 562, 9, 40, 1, 40, 1, 40, 3, 40, 566, 8, 40, 1, 41, 1, 41, 3, 41, 570, 8, 41, 1, 42, 1, 42, 3, 42, 574, 8, 42, 1, 43, 1, 43, 1, 43, 3, 43, 579, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 588, 8, 45, 10, 45, 12, 45, 591, 9, 45, 1, 46, 1, 46, 3, 46, 595, 8, 46, 1, 46, 1, 46, 3, 46, 599, 8, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 611, 8, 49, 10, 49, 12, 49, 614, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 624, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 630, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 5, 54, 642, 8, 54, 10, 54, 12, 54, 645, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 655, 8, 57, 1, 58, 3, 58, 658, 8, 58, 1, 58, 1, 58, 1, 59, 3, 59, 663, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 685, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 691, 8, 65, 10, 65, 12, 65, 694, 9, 65, 3, 65, 696, 8, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 703, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 711, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 718, 8, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 732, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 745, 8, 74, 10, 74, 12, 74, 748, 9, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 5, 76, 755, 8, 76, 10, 76, 12, 76, 758, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 766, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 774, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 780, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 0, 4, 2, 10, 18, 20, 81, 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, 0, 10, 1, 0, 69, 70, 1, 0, 71, 73, 2, 0, 33, 33, 90, 90, 1, 0, 81, 82, 2, 0, 37, 37, 43, 43, 2, 0, 46, 46, 49, 49, 2, 0, 45, 45, 60, 60, 2, 0, 62, 62, 64, 68, 2, 0, 33, 33, 102, 102, 2, 0, 19, 19, 26, 27, 817, 0, 162, 1, 0, 0, 0, 2, 165, 1, 0, 0, 0, 4, 182, 1, 0, 0, 0, 6, 206, 1, 0, 0, 0, 8, 208, 1, 0, 0, 0, 10, 240, 1, 0, 0, 0, 12, 283, 1, 0, 0, 0, 14, 285, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 304, 1, 0, 0, 0, 20, 325, 1, 0, 0, 0, 22, 335, 1, 0, 0, 0, 24, 354, 1, 0, 0, 0, 26, 356, 1, 0, 0, 0, 28, 367, 1, 0, 0, 0, 30, 371, 1, 0, 0, 0, 32, 373, 1, 0, 0, 0, 34, 376, 1, 0, 0, 0, 36, 387, 1, 0, 0, 0, 38, 391, 1, 0, 0, 0, 40, 399, 1, 0, 0, 0, 42, 404, 1, 0, 0, 0, 44, 425, 1, 0, 0, 0, 46, 427, 1, 0, 0, 0, 48, 429, 1, 0, 0, 0, 50, 431, 1, 0, 0, 0, 52, 433, 1, 0, 0, 0, 54, 437, 1, 0, 0, 0, 56, 439, 1, 0, 0, 0, 58, 448, 1, 0, 0, 0, 60, 452, 1, 0, 0, 0, 62, 468, 1, 0, 0, 0, 64, 471, 1, 0, 0, 0, 66, 479, 1, 0, 0, 0, 68, 487, 1, 0, 0, 0, 70, 492, 1, 0, 0, 0, 72, 500, 1, 0, 0, 0, 74, 508, 1, 0, 0, 0, 76, 516, 1, 0, 0, 0, 78, 521, 1, 0, 0, 0, 80, 565, 1, 0, 0, 0, 82, 569, 1, 0, 0, 0, 84, 573, 1, 0, 0, 0, 86, 578, 1, 0, 0, 0, 88, 580, 1, 0, 0, 0, 90, 583, 1, 0, 0, 0, 92, 592, 1, 0, 0, 0, 94, 600, 1, 0, 0, 0, 96, 603, 1, 0, 0, 0, 98, 606, 1, 0, 0, 0, 100, 623, 1, 0, 0, 0, 102, 625, 1, 0, 0, 0, 104, 631, 1, 0, 0, 0, 106, 635, 1, 0, 0, 0, 108, 638, 1, 0, 0, 0, 110, 646, 1, 0, 0, 0, 112, 650, 1, 0, 0, 0, 114, 654, 1, 0, 0, 0, 116, 657, 1, 0, 0, 0, 118, 662, 1, 0, 0, 0, 120, 666, 1, 0, 0, 0, 122, 668, 1, 0, 0, 0, 124, 670, 1, 0, 0, 0, 126, 673, 1, 0, 0, 0, 128, 677, 1, 0, 0, 0, 130, 680, 1, 0, 0, 0, 132, 697, 1, 0, 0, 0, 134, 702, 1, 0, 0, 0, 136, 706, 1, 0, 0, 0, 138, 719, 1, 0, 0, 0, 140, 722, 1, 0, 0, 0, 142, 727, 1, 0, 0, 0, 144, 733, 1, 0, 0, 0, 146, 738, 1, 0, 0, 0, 148, 740, 1, 0, 0, 0, 150, 749, 1, 0, 0, 0, 152, 751, 1, 0, 0, 0, 154, 759, 1, 0, 0, 0, 156, 765, 1, 0, 0, 0, 158, 767, 1, 0, 0, 0, 160, 775, 1, 0, 0, 0, 162, 163, 3, 2, 1, 0, 163, 164, 5, 0, 0, 1, 164, 1, 1, 0, 0, 0, 165, 166, 6, 1, -1, 0, 166, 167, 3, 4, 2, 0, 167, 173, 1, 0, 0, 0, 168, 169, 10, 1, 0, 0, 169, 170, 5, 32, 0, 0, 170, 172, 3, 6, 3, 0, 171, 168, 1, 0, 0, 0, 172, 175, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 3, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 183, 3, 124, 62, 0, 177, 183, 3, 42, 21, 0, 178, 183, 3, 32, 16, 0, 179, 183, 3, 128, 64, 0, 180, 181, 4, 2, 1, 0, 181, 183, 3, 60, 30, 0, 182, 176, 1, 0, 0, 0, 182, 177, 1, 0, 0, 0, 182, 178, 1, 0, 0, 0, 182, 179, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 5, 1, 0, 0, 0, 184, 207, 3, 62, 31, 0, 185, 207, 3, 8, 4, 0, 186, 207, 3, 94, 47, 0, 187, 207, 3, 88, 44, 0, 188, 207, 3, 64, 32, 0, 189, 207, 3, 90, 45, 0, 190, 207, 3, 96, 48, 0, 191, 207, 3, 98, 49, 0, 192, 207, 3, 102, 51, 0, 193, 207, 3, 104, 52, 0, 194, 207, 3, 130, 65, 0, 195, 207, 3, 106, 53, 0, 196, 207, 3, 144, 72, 0, 197, 207, 3, 136, 68, 0, 198, 207, 3, 160, 80, 0, 199, 207, 3, 138, 69, 0, 200, 201, 4, 3, 2, 0, 201, 207, 3, 142, 71, 0, 202, 203, 4, 3, 3, 0, 203, 207, 3, 140, 70, 0, 204, 205, 4, 3, 4, 0, 205, 207, 3, 158, 79, 0, 206, 184, 1, 0, 0, 0, 206, 185, 1, 0, 0, 0, 206, 186, 1, 0, 0, 0, 206, 187, 1, 0, 0, 0, 206, 188, 1, 0, 0, 0, 206, 189, 1, 0, 0, 0, 206, 190, 1, 0, 0, 0, 206, 191, 1, 0, 0, 0, 206, 192, 1, 0, 0, 0, 206, 193, 1, 0, 0, 0, 206, 194, 1, 0, 0, 0, 206, 195, 1, 0, 0, 0, 206, 196, 1, 0, 0, 0, 206, 197, 1, 0, 0, 0, 206, 198, 1, 0, 0, 0, 206, 199, 1, 0, 0, 0, 206, 200, 1, 0, 0, 0, 206, 202, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 7, 1, 0, 0, 0, 208, 209, 5, 18, 0, 0, 209, 210, 3, 10, 5, 0, 210, 9, 1, 0, 0, 0, 211, 212, 6, 5, -1, 0, 212, 213, 5, 52, 0, 0, 213, 241, 3, 10, 5, 8, 214, 241, 3, 16, 8, 0, 215, 241, 3, 12, 6, 0, 216, 218, 3, 16, 8, 0, 217, 219, 5, 52, 0, 0, 218, 217, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 221, 5, 47, 0, 0, 221, 222, 5, 51, 0, 0, 222, 227, 3, 16, 8, 0, 223, 224, 5, 42, 0, 0, 224, 226, 3, 16, 8, 0, 225, 223, 1, 0, 0, 0, 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 230, 231, 5, 59, 0, 0, 231, 241, 1, 0, 0, 0, 232, 233, 3, 16, 8, 0, 233, 235, 5, 48, 0, 0, 234, 236, 5, 52, 0, 0, 235, 234, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 5, 53, 0, 0, 238, 241, 1, 0, 0, 0, 239, 241, 3, 14, 7, 0, 240, 211, 1, 0, 0, 0, 240, 214, 1, 0, 0, 0, 240, 215, 1, 0, 0, 0, 240, 216, 1, 0, 0, 0, 240, 232, 1, 0, 0, 0, 240, 239, 1, 0, 0, 0, 241, 250, 1, 0, 0, 0, 242, 243, 10, 5, 0, 0, 243, 244, 5, 36, 0, 0, 244, 249, 3, 10, 5, 6, 245, 246, 10, 4, 0, 0, 246, 247, 5, 56, 0, 0, 247, 249, 3, 10, 5, 5, 248, 242, 1, 0, 0, 0, 248, 245, 1, 0, 0, 0, 249, 252, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 11, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 253, 255, 3, 16, 8, 0, 254, 256, 5, 52, 0, 0, 255, 254, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 5, 50, 0, 0, 258, 259, 3, 120, 60, 0, 259, 284, 1, 0, 0, 0, 260, 262, 3, 16, 8, 0, 261, 263, 5, 52, 0, 0, 262, 261, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 5, 58, 0, 0, 265, 266, 3, 120, 60, 0, 266, 284, 1, 0, 0, 0, 267, 269, 3, 16, 8, 0, 268, 270, 5, 52, 0, 0, 269, 268, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 5, 50, 0, 0, 272, 273, 5, 51, 0, 0, 273, 278, 3, 120, 60, 0, 274, 275, 5, 42, 0, 0, 275, 277, 3, 120, 60, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, 5, 59, 0, 0, 282, 284, 1, 0, 0, 0, 283, 253, 1, 0, 0, 0, 283, 260, 1, 0, 0, 0, 283, 267, 1, 0, 0, 0, 284, 13, 1, 0, 0, 0, 285, 288, 3, 70, 35, 0, 286, 287, 5, 40, 0, 0, 287, 289, 3, 30, 15, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 5, 41, 0, 0, 291, 292, 3, 80, 40, 0, 292, 15, 1, 0, 0, 0, 293, 299, 3, 18, 9, 0, 294, 295, 3, 18, 9, 0, 295, 296, 3, 122, 61, 0, 296, 297, 3, 18, 9, 0, 297, 299, 1, 0, 0, 0, 298, 293, 1, 0, 0, 0, 298, 294, 1, 0, 0, 0, 299, 17, 1, 0, 0, 0, 300, 301, 6, 9, -1, 0, 301, 305, 3, 20, 10, 0, 302, 303, 7, 0, 0, 0, 303, 305, 3, 18, 9, 3, 304, 300, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 305, 314, 1, 0, 0, 0, 306, 307, 10, 2, 0, 0, 307, 308, 7, 1, 0, 0, 308, 313, 3, 18, 9, 3, 309, 310, 10, 1, 0, 0, 310, 311, 7, 0, 0, 0, 311, 313, 3, 18, 9, 2, 312, 306, 1, 0, 0, 0, 312, 309, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 19, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 318, 6, 10, -1, 0, 318, 326, 3, 80, 40, 0, 319, 326, 3, 70, 35, 0, 320, 326, 3, 22, 11, 0, 321, 322, 5, 51, 0, 0, 322, 323, 3, 10, 5, 0, 323, 324, 5, 59, 0, 0, 324, 326, 1, 0, 0, 0, 325, 317, 1, 0, 0, 0, 325, 319, 1, 0, 0, 0, 325, 320, 1, 0, 0, 0, 325, 321, 1, 0, 0, 0, 326, 332, 1, 0, 0, 0, 327, 328, 10, 1, 0, 0, 328, 329, 5, 40, 0, 0, 329, 331, 3, 30, 15, 0, 330, 327, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 21, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 336, 3, 24, 12, 0, 336, 350, 5, 51, 0, 0, 337, 351, 5, 71, 0, 0, 338, 343, 3, 10, 5, 0, 339, 340, 5, 42, 0, 0, 340, 342, 3, 10, 5, 0, 341, 339, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 348, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 347, 5, 42, 0, 0, 347, 349, 3, 26, 13, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 337, 1, 0, 0, 0, 350, 338, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 5, 59, 0, 0, 353, 23, 1, 0, 0, 0, 354, 355, 3, 86, 43, 0, 355, 25, 1, 0, 0, 0, 356, 357, 5, 74, 0, 0, 357, 362, 3, 28, 14, 0, 358, 359, 5, 42, 0, 0, 359, 361, 3, 28, 14, 0, 360, 358, 1, 0, 0, 0, 361, 364, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 365, 366, 5, 75, 0, 0, 366, 27, 1, 0, 0, 0, 367, 368, 3, 120, 60, 0, 368, 369, 5, 41, 0, 0, 369, 370, 3, 80, 40, 0, 370, 29, 1, 0, 0, 0, 371, 372, 3, 76, 38, 0, 372, 31, 1, 0, 0, 0, 373, 374, 5, 13, 0, 0, 374, 375, 3, 34, 17, 0, 375, 33, 1, 0, 0, 0, 376, 381, 3, 36, 18, 0, 377, 378, 5, 42, 0, 0, 378, 380, 3, 36, 18, 0, 379, 377, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 35, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 385, 3, 70, 35, 0, 385, 386, 5, 38, 0, 0, 386, 388, 1, 0, 0, 0, 387, 384, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 3, 10, 5, 0, 390, 37, 1, 0, 0, 0, 391, 396, 3, 40, 20, 0, 392, 393, 5, 42, 0, 0, 393, 395, 3, 40, 20, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 39, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 402, 3, 70, 35, 0, 400, 401, 5, 38, 0, 0, 401, 403, 3, 10, 5, 0, 402, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 41, 1, 0, 0, 0, 404, 405, 5, 7, 0, 0, 405, 410, 3, 44, 22, 0, 406, 407, 5, 42, 0, 0, 407, 409, 3, 44, 22, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 415, 3, 54, 27, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 43, 1, 0, 0, 0, 416, 417, 3, 46, 23, 0, 417, 418, 5, 41, 0, 0, 418, 419, 3, 50, 25, 0, 419, 426, 1, 0, 0, 0, 420, 421, 3, 50, 25, 0, 421, 422, 5, 40, 0, 0, 422, 423, 3, 48, 24, 0, 423, 426, 1, 0, 0, 0, 424, 426, 3, 52, 26, 0, 425, 416, 1, 0, 0, 0, 425, 420, 1, 0, 0, 0, 425, 424, 1, 0, 0, 0, 426, 45, 1, 0, 0, 0, 427, 428, 5, 90, 0, 0, 428, 47, 1, 0, 0, 0, 429, 430, 5, 90, 0, 0, 430, 49, 1, 0, 0, 0, 431, 432, 5, 90, 0, 0, 432, 51, 1, 0, 0, 0, 433, 434, 7, 2, 0, 0, 434, 53, 1, 0, 0, 0, 435, 438, 3, 56, 28, 0, 436, 438, 3, 58, 29, 0, 437, 435, 1, 0, 0, 0, 437, 436, 1, 0, 0, 0, 438, 55, 1, 0, 0, 0, 439, 440, 5, 89, 0, 0, 440, 445, 5, 90, 0, 0, 441, 442, 5, 42, 0, 0, 442, 444, 5, 90, 0, 0, 443, 441, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 57, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 449, 5, 79, 0, 0, 449, 450, 3, 56, 28, 0, 450, 451, 5, 80, 0, 0, 451, 59, 1, 0, 0, 0, 452, 453, 5, 23, 0, 0, 453, 458, 3, 44, 22, 0, 454, 455, 5, 42, 0, 0, 455, 457, 3, 44, 22, 0, 456, 454, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, 66, 33, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 465, 5, 39, 0, 0, 465, 467, 3, 34, 17, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 61, 1, 0, 0, 0, 468, 469, 5, 5, 0, 0, 469, 470, 3, 34, 17, 0, 470, 63, 1, 0, 0, 0, 471, 473, 5, 17, 0, 0, 472, 474, 3, 66, 33, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 476, 5, 39, 0, 0, 476, 478, 3, 34, 17, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 65, 1, 0, 0, 0, 479, 484, 3, 68, 34, 0, 480, 481, 5, 42, 0, 0, 481, 483, 3, 68, 34, 0, 482, 480, 1, 0, 0, 0, 483, 486, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 67, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 487, 490, 3, 36, 18, 0, 488, 489, 5, 18, 0, 0, 489, 491, 3, 10, 5, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 69, 1, 0, 0, 0, 492, 497, 3, 86, 43, 0, 493, 494, 5, 44, 0, 0, 494, 496, 3, 86, 43, 0, 495, 493, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 71, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 505, 3, 78, 39, 0, 501, 502, 5, 44, 0, 0, 502, 504, 3, 78, 39, 0, 503, 501, 1, 0, 0, 0, 504, 507, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 73, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 508, 513, 3, 72, 36, 0, 509, 510, 5, 42, 0, 0, 510, 512, 3, 72, 36, 0, 511, 509, 1, 0, 0, 0, 512, 515, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 75, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 517, 7, 3, 0, 0, 517, 77, 1, 0, 0, 0, 518, 522, 5, 94, 0, 0, 519, 522, 3, 82, 41, 0, 520, 522, 3, 84, 42, 0, 521, 518, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 520, 1, 0, 0, 0, 522, 79, 1, 0, 0, 0, 523, 566, 5, 53, 0, 0, 524, 525, 3, 118, 59, 0, 525, 526, 5, 81, 0, 0, 526, 566, 1, 0, 0, 0, 527, 566, 3, 116, 58, 0, 528, 566, 3, 118, 59, 0, 529, 566, 3, 112, 56, 0, 530, 566, 3, 82, 41, 0, 531, 566, 3, 120, 60, 0, 532, 533, 5, 79, 0, 0, 533, 538, 3, 114, 57, 0, 534, 535, 5, 42, 0, 0, 535, 537, 3, 114, 57, 0, 536, 534, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 80, 0, 0, 542, 566, 1, 0, 0, 0, 543, 544, 5, 79, 0, 0, 544, 549, 3, 112, 56, 0, 545, 546, 5, 42, 0, 0, 546, 548, 3, 112, 56, 0, 547, 545, 1, 0, 0, 0, 548, 551, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552, 553, 5, 80, 0, 0, 553, 566, 1, 0, 0, 0, 554, 555, 5, 79, 0, 0, 555, 560, 3, 120, 60, 0, 556, 557, 5, 42, 0, 0, 557, 559, 3, 120, 60, 0, 558, 556, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 564, 5, 80, 0, 0, 564, 566, 1, 0, 0, 0, 565, 523, 1, 0, 0, 0, 565, 524, 1, 0, 0, 0, 565, 527, 1, 0, 0, 0, 565, 528, 1, 0, 0, 0, 565, 529, 1, 0, 0, 0, 565, 530, 1, 0, 0, 0, 565, 531, 1, 0, 0, 0, 565, 532, 1, 0, 0, 0, 565, 543, 1, 0, 0, 0, 565, 554, 1, 0, 0, 0, 566, 81, 1, 0, 0, 0, 567, 570, 5, 57, 0, 0, 568, 570, 5, 77, 0, 0, 569, 567, 1, 0, 0, 0, 569, 568, 1, 0, 0, 0, 570, 83, 1, 0, 0, 0, 571, 574, 5, 76, 0, 0, 572, 574, 5, 78, 0, 0, 573, 571, 1, 0, 0, 0, 573, 572, 1, 0, 0, 0, 574, 85, 1, 0, 0, 0, 575, 579, 3, 76, 38, 0, 576, 579, 3, 82, 41, 0, 577, 579, 3, 84, 42, 0, 578, 575, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 577, 1, 0, 0, 0, 579, 87, 1, 0, 0, 0, 580, 581, 5, 10, 0, 0, 581, 582, 3, 80, 40, 0, 582, 89, 1, 0, 0, 0, 583, 584, 5, 16, 0, 0, 584, 589, 3, 92, 46, 0, 585, 586, 5, 42, 0, 0, 586, 588, 3, 92, 46, 0, 587, 585, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 91, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 594, 3, 10, 5, 0, 593, 595, 7, 4, 0, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 597, 5, 54, 0, 0, 597, 599, 7, 5, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 93, 1, 0, 0, 0, 600, 601, 5, 9, 0, 0, 601, 602, 3, 74, 37, 0, 602, 95, 1, 0, 0, 0, 603, 604, 5, 3, 0, 0, 604, 605, 3, 74, 37, 0, 605, 97, 1, 0, 0, 0, 606, 607, 5, 12, 0, 0, 607, 612, 3, 100, 50, 0, 608, 609, 5, 42, 0, 0, 609, 611, 3, 100, 50, 0, 610, 608, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 99, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 616, 3, 72, 36, 0, 616, 617, 5, 98, 0, 0, 617, 618, 3, 72, 36, 0, 618, 624, 1, 0, 0, 0, 619, 620, 3, 72, 36, 0, 620, 621, 5, 38, 0, 0, 621, 622, 3, 72, 36, 0, 622, 624, 1, 0, 0, 0, 623, 615, 1, 0, 0, 0, 623, 619, 1, 0, 0, 0, 624, 101, 1, 0, 0, 0, 625, 626, 5, 2, 0, 0, 626, 627, 3, 20, 10, 0, 627, 629, 3, 120, 60, 0, 628, 630, 3, 108, 54, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 103, 1, 0, 0, 0, 631, 632, 5, 8, 0, 0, 632, 633, 3, 20, 10, 0, 633, 634, 3, 120, 60, 0, 634, 105, 1, 0, 0, 0, 635, 636, 5, 11, 0, 0, 636, 637, 3, 70, 35, 0, 637, 107, 1, 0, 0, 0, 638, 643, 3, 110, 55, 0, 639, 640, 5, 42, 0, 0, 640, 642, 3, 110, 55, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 109, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, 3, 76, 38, 0, 647, 648, 5, 38, 0, 0, 648, 649, 3, 80, 40, 0, 649, 111, 1, 0, 0, 0, 650, 651, 7, 6, 0, 0, 651, 113, 1, 0, 0, 0, 652, 655, 3, 116, 58, 0, 653, 655, 3, 118, 59, 0, 654, 652, 1, 0, 0, 0, 654, 653, 1, 0, 0, 0, 655, 115, 1, 0, 0, 0, 656, 658, 7, 0, 0, 0, 657, 656, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 5, 35, 0, 0, 660, 117, 1, 0, 0, 0, 661, 663, 7, 0, 0, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 665, 5, 34, 0, 0, 665, 119, 1, 0, 0, 0, 666, 667, 5, 33, 0, 0, 667, 121, 1, 0, 0, 0, 668, 669, 7, 7, 0, 0, 669, 123, 1, 0, 0, 0, 670, 671, 5, 6, 0, 0, 671, 672, 3, 126, 63, 0, 672, 125, 1, 0, 0, 0, 673, 674, 5, 79, 0, 0, 674, 675, 3, 2, 1, 0, 675, 676, 5, 80, 0, 0, 676, 127, 1, 0, 0, 0, 677, 678, 5, 15, 0, 0, 678, 679, 5, 112, 0, 0, 679, 129, 1, 0, 0, 0, 680, 681, 5, 4, 0, 0, 681, 684, 3, 132, 66, 0, 682, 683, 5, 55, 0, 0, 683, 685, 3, 72, 36, 0, 684, 682, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 695, 1, 0, 0, 0, 686, 687, 5, 61, 0, 0, 687, 692, 3, 134, 67, 0, 688, 689, 5, 42, 0, 0, 689, 691, 3, 134, 67, 0, 690, 688, 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 696, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 686, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 131, 1, 0, 0, 0, 697, 698, 7, 8, 0, 0, 698, 133, 1, 0, 0, 0, 699, 700, 3, 72, 36, 0, 700, 701, 5, 38, 0, 0, 701, 703, 1, 0, 0, 0, 702, 699, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 3, 72, 36, 0, 705, 135, 1, 0, 0, 0, 706, 707, 5, 20, 0, 0, 707, 710, 3, 70, 35, 0, 708, 709, 5, 55, 0, 0, 709, 711, 3, 70, 35, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 717, 1, 0, 0, 0, 712, 713, 5, 98, 0, 0, 713, 714, 3, 70, 35, 0, 714, 715, 5, 42, 0, 0, 715, 716, 3, 70, 35, 0, 716, 718, 1, 0, 0, 0, 717, 712, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 137, 1, 0, 0, 0, 719, 720, 5, 14, 0, 0, 720, 721, 3, 80, 40, 0, 721, 139, 1, 0, 0, 0, 722, 723, 5, 22, 0, 0, 723, 724, 3, 44, 22, 0, 724, 725, 5, 55, 0, 0, 725, 726, 3, 74, 37, 0, 726, 141, 1, 0, 0, 0, 727, 728, 5, 21, 0, 0, 728, 731, 3, 66, 33, 0, 729, 730, 5, 39, 0, 0, 730, 732, 3, 34, 17, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 143, 1, 0, 0, 0, 733, 734, 7, 9, 0, 0, 734, 735, 5, 126, 0, 0, 735, 736, 3, 146, 73, 0, 736, 737, 3, 148, 74, 0, 737, 145, 1, 0, 0, 0, 738, 739, 3, 44, 22, 0, 739, 147, 1, 0, 0, 0, 740, 741, 5, 55, 0, 0, 741, 746, 3, 150, 75, 0, 742, 743, 5, 42, 0, 0, 743, 745, 3, 150, 75, 0, 744, 742, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 149, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 3, 16, 8, 0, 750, 151, 1, 0, 0, 0, 751, 756, 3, 154, 77, 0, 752, 753, 5, 42, 0, 0, 753, 755, 3, 154, 77, 0, 754, 752, 1, 0, 0, 0, 755, 758, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 153, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 759, 760, 3, 76, 38, 0, 760, 761, 5, 38, 0, 0, 761, 762, 3, 156, 78, 0, 762, 155, 1, 0, 0, 0, 763, 766, 3, 80, 40, 0, 764, 766, 3, 76, 38, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 157, 1, 0, 0, 0, 767, 768, 5, 24, 0, 0, 768, 769, 3, 80, 40, 0, 769, 770, 5, 55, 0, 0, 770, 773, 3, 38, 19, 0, 771, 772, 5, 61, 0, 0, 772, 774, 3, 152, 76, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 159, 1, 0, 0, 0, 775, 779, 5, 1, 0, 0, 776, 777, 3, 70, 35, 0, 777, 778, 5, 38, 0, 0, 778, 780, 1, 0, 0, 0, 779, 776, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 3, 20, 10, 0, 782, 783, 5, 61, 0, 0, 783, 784, 3, 86, 43, 0, 784, 161, 1, 0, 0, 0, 74, 173, 182, 206, 218, 227, 235, 240, 248, 250, 255, 262, 269, 278, 283, 288, 298, 304, 312, 314, 325, 332, 343, 348, 350, 362, 381, 387, 396, 402, 410, 414, 425, 437, 445, 458, 462, 466, 473, 477, 484, 490, 497, 505, 513, 521, 538, 549, 560, 565, 569, 573, 578, 589, 594, 598, 612, 623, 629, 643, 654, 657, 662, 684, 692, 695, 702, 710, 717, 731, 746, 756, 765, 773, 779]
\ No newline at end of file
+<<<<<<< HEAD
+[4, 1, 139, 786, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 172, 8, 1, 10, 1, 12, 1, 175, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 183, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 207, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 219, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 226, 8, 5, 10, 5, 12, 5, 229, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 236, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 241, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 249, 8, 5, 10, 5, 12, 5, 252, 9, 5, 1, 6, 1, 6, 3, 6, 256, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 263, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 270, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 277, 8, 6, 10, 6, 12, 6, 280, 9, 6, 1, 6, 1, 6, 3, 6, 284, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 289, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 299, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 305, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 313, 8, 9, 10, 9, 12, 9, 316, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 326, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 331, 8, 10, 10, 10, 12, 10, 334, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 342, 8, 11, 10, 11, 12, 11, 345, 9, 11, 1, 11, 1, 11, 3, 11, 349, 8, 11, 3, 11, 351, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 361, 8, 13, 10, 13, 12, 13, 364, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 380, 8, 17, 10, 17, 12, 17, 383, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 388, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 5, 19, 395, 8, 19, 10, 19, 12, 19, 398, 9, 19, 1, 20, 1, 20, 1, 20, 3, 20, 403, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 409, 8, 21, 10, 21, 12, 21, 412, 9, 21, 1, 21, 3, 21, 415, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 426, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 3, 27, 438, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 444, 8, 28, 10, 28, 12, 28, 447, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 457, 8, 30, 10, 30, 12, 30, 460, 9, 30, 1, 30, 3, 30, 463, 8, 30, 1, 30, 1, 30, 3, 30, 467, 8, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 474, 8, 32, 1, 32, 1, 32, 3, 32, 478, 8, 32, 1, 33, 1, 33, 1, 33, 5, 33, 483, 8, 33, 10, 33, 12, 33, 486, 9, 33, 1, 34, 1, 34, 1, 34, 3, 34, 491, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 496, 8, 35, 10, 35, 12, 35, 499, 9, 35, 1, 36, 1, 36, 1, 36, 5, 36, 504, 8, 36, 10, 36, 12, 36, 507, 9, 36, 1, 37, 1, 37, 1, 37, 5, 37, 512, 8, 37, 10, 37, 12, 37, 515, 9, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 522, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 537, 8, 40, 10, 40, 12, 40, 540, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 548, 8, 40, 10, 40, 12, 40, 551, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 559, 8, 40, 10, 40, 12, 40, 562, 9, 40, 1, 40, 1, 40, 3, 40, 566, 8, 40, 1, 41, 1, 41, 3, 41, 570, 8, 41, 1, 42, 1, 42, 3, 42, 574, 8, 42, 1, 43, 1, 43, 1, 43, 3, 43, 579, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 588, 8, 45, 10, 45, 12, 45, 591, 9, 45, 1, 46, 1, 46, 3, 46, 595, 8, 46, 1, 46, 1, 46, 3, 46, 599, 8, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 611, 8, 49, 10, 49, 12, 49, 614, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 624, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 630, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 5, 54, 642, 8, 54, 10, 54, 12, 54, 645, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 3, 57, 655, 8, 57, 1, 58, 3, 58, 658, 8, 58, 1, 58, 1, 58, 1, 59, 3, 59, 663, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 685, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 691, 8, 65, 10, 65, 12, 65, 694, 9, 65, 3, 65, 696, 8, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 703, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 711, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 718, 8, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 732, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 745, 8, 74, 10, 74, 12, 74, 748, 9, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 5, 76, 755, 8, 76, 10, 76, 12, 76, 758, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 766, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 774, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 780, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 0, 4, 2, 10, 18, 20, 81, 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, 0, 10, 1, 0, 69, 70, 1, 0, 71, 73, 2, 0, 33, 33, 90, 90, 1, 0, 81, 82, 2, 0, 37, 37, 43, 43, 2, 0, 46, 46, 49, 49, 2, 0, 45, 45, 60, 60, 2, 0, 62, 62, 64, 68, 2, 0, 33, 33, 102, 102, 2, 0, 19, 19, 26, 27, 817, 0, 162, 1, 0, 0, 0, 2, 165, 1, 0, 0, 0, 4, 182, 1, 0, 0, 0, 6, 206, 1, 0, 0, 0, 8, 208, 1, 0, 0, 0, 10, 240, 1, 0, 0, 0, 12, 283, 1, 0, 0, 0, 14, 285, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 304, 1, 0, 0, 0, 20, 325, 1, 0, 0, 0, 22, 335, 1, 0, 0, 0, 24, 354, 1, 0, 0, 0, 26, 356, 1, 0, 0, 0, 28, 367, 1, 0, 0, 0, 30, 371, 1, 0, 0, 0, 32, 373, 1, 0, 0, 0, 34, 376, 1, 0, 0, 0, 36, 387, 1, 0, 0, 0, 38, 391, 1, 0, 0, 0, 40, 399, 1, 0, 0, 0, 42, 404, 1, 0, 0, 0, 44, 425, 1, 0, 0, 0, 46, 427, 1, 0, 0, 0, 48, 429, 1, 0, 0, 0, 50, 431, 1, 0, 0, 0, 52, 433, 1, 0, 0, 0, 54, 437, 1, 0, 0, 0, 56, 439, 1, 0, 0, 0, 58, 448, 1, 0, 0, 0, 60, 452, 1, 0, 0, 0, 62, 468, 1, 0, 0, 0, 64, 471, 1, 0, 0, 0, 66, 479, 1, 0, 0, 0, 68, 487, 1, 0, 0, 0, 70, 492, 1, 0, 0, 0, 72, 500, 1, 0, 0, 0, 74, 508, 1, 0, 0, 0, 76, 516, 1, 0, 0, 0, 78, 521, 1, 0, 0, 0, 80, 565, 1, 0, 0, 0, 82, 569, 1, 0, 0, 0, 84, 573, 1, 0, 0, 0, 86, 578, 1, 0, 0, 0, 88, 580, 1, 0, 0, 0, 90, 583, 1, 0, 0, 0, 92, 592, 1, 0, 0, 0, 94, 600, 1, 0, 0, 0, 96, 603, 1, 0, 0, 0, 98, 606, 1, 0, 0, 0, 100, 623, 1, 0, 0, 0, 102, 625, 1, 0, 0, 0, 104, 631, 1, 0, 0, 0, 106, 635, 1, 0, 0, 0, 108, 638, 1, 0, 0, 0, 110, 646, 1, 0, 0, 0, 112, 650, 1, 0, 0, 0, 114, 654, 1, 0, 0, 0, 116, 657, 1, 0, 0, 0, 118, 662, 1, 0, 0, 0, 120, 666, 1, 0, 0, 0, 122, 668, 1, 0, 0, 0, 124, 670, 1, 0, 0, 0, 126, 673, 1, 0, 0, 0, 128, 677, 1, 0, 0, 0, 130, 680, 1, 0, 0, 0, 132, 697, 1, 0, 0, 0, 134, 702, 1, 0, 0, 0, 136, 706, 1, 0, 0, 0, 138, 719, 1, 0, 0, 0, 140, 722, 1, 0, 0, 0, 142, 727, 1, 0, 0, 0, 144, 733, 1, 0, 0, 0, 146, 738, 1, 0, 0, 0, 148, 740, 1, 0, 0, 0, 150, 749, 1, 0, 0, 0, 152, 751, 1, 0, 0, 0, 154, 759, 1, 0, 0, 0, 156, 765, 1, 0, 0, 0, 158, 767, 1, 0, 0, 0, 160, 775, 1, 0, 0, 0, 162, 163, 3, 2, 1, 0, 163, 164, 5, 0, 0, 1, 164, 1, 1, 0, 0, 0, 165, 166, 6, 1, -1, 0, 166, 167, 3, 4, 2, 0, 167, 173, 1, 0, 0, 0, 168, 169, 10, 1, 0, 0, 169, 170, 5, 32, 0, 0, 170, 172, 3, 6, 3, 0, 171, 168, 1, 0, 0, 0, 172, 175, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 3, 1, 0, 0, 0, 175, 173, 1, 0, 0, 0, 176, 183, 3, 124, 62, 0, 177, 183, 3, 42, 21, 0, 178, 183, 3, 32, 16, 0, 179, 183, 3, 128, 64, 0, 180, 181, 4, 2, 1, 0, 181, 183, 3, 60, 30, 0, 182, 176, 1, 0, 0, 0, 182, 177, 1, 0, 0, 0, 182, 178, 1, 0, 0, 0, 182, 179, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 5, 1, 0, 0, 0, 184, 207, 3, 62, 31, 0, 185, 207, 3, 8, 4, 0, 186, 207, 3, 94, 47, 0, 187, 207, 3, 88, 44, 0, 188, 207, 3, 64, 32, 0, 189, 207, 3, 90, 45, 0, 190, 207, 3, 96, 48, 0, 191, 207, 3, 98, 49, 0, 192, 207, 3, 102, 51, 0, 193, 207, 3, 104, 52, 0, 194, 207, 3, 130, 65, 0, 195, 207, 3, 106, 53, 0, 196, 207, 3, 144, 72, 0, 197, 207, 3, 136, 68, 0, 198, 207, 3, 160, 80, 0, 199, 207, 3, 138, 69, 0, 200, 201, 4, 3, 2, 0, 201, 207, 3, 142, 71, 0, 202, 203, 4, 3, 3, 0, 203, 207, 3, 140, 70, 0, 204, 205, 4, 3, 4, 0, 205, 207, 3, 158, 79, 0, 206, 184, 1, 0, 0, 0, 206, 185, 1, 0, 0, 0, 206, 186, 1, 0, 0, 0, 206, 187, 1, 0, 0, 0, 206, 188, 1, 0, 0, 0, 206, 189, 1, 0, 0, 0, 206, 190, 1, 0, 0, 0, 206, 191, 1, 0, 0, 0, 206, 192, 1, 0, 0, 0, 206, 193, 1, 0, 0, 0, 206, 194, 1, 0, 0, 0, 206, 195, 1, 0, 0, 0, 206, 196, 1, 0, 0, 0, 206, 197, 1, 0, 0, 0, 206, 198, 1, 0, 0, 0, 206, 199, 1, 0, 0, 0, 206, 200, 1, 0, 0, 0, 206, 202, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 7, 1, 0, 0, 0, 208, 209, 5, 18, 0, 0, 209, 210, 3, 10, 5, 0, 210, 9, 1, 0, 0, 0, 211, 212, 6, 5, -1, 0, 212, 213, 5, 52, 0, 0, 213, 241, 3, 10, 5, 8, 214, 241, 3, 16, 8, 0, 215, 241, 3, 12, 6, 0, 216, 218, 3, 16, 8, 0, 217, 219, 5, 52, 0, 0, 218, 217, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 221, 5, 47, 0, 0, 221, 222, 5, 51, 0, 0, 222, 227, 3, 16, 8, 0, 223, 224, 5, 42, 0, 0, 224, 226, 3, 16, 8, 0, 225, 223, 1, 0, 0, 0, 226, 229, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 230, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 230, 231, 5, 59, 0, 0, 231, 241, 1, 0, 0, 0, 232, 233, 3, 16, 8, 0, 233, 235, 5, 48, 0, 0, 234, 236, 5, 52, 0, 0, 235, 234, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 5, 53, 0, 0, 238, 241, 1, 0, 0, 0, 239, 241, 3, 14, 7, 0, 240, 211, 1, 0, 0, 0, 240, 214, 1, 0, 0, 0, 240, 215, 1, 0, 0, 0, 240, 216, 1, 0, 0, 0, 240, 232, 1, 0, 0, 0, 240, 239, 1, 0, 0, 0, 241, 250, 1, 0, 0, 0, 242, 243, 10, 5, 0, 0, 243, 244, 5, 36, 0, 0, 244, 249, 3, 10, 5, 6, 245, 246, 10, 4, 0, 0, 246, 247, 5, 56, 0, 0, 247, 249, 3, 10, 5, 5, 248, 242, 1, 0, 0, 0, 248, 245, 1, 0, 0, 0, 249, 252, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 11, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 253, 255, 3, 16, 8, 0, 254, 256, 5, 52, 0, 0, 255, 254, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 258, 5, 50, 0, 0, 258, 259, 3, 120, 60, 0, 259, 284, 1, 0, 0, 0, 260, 262, 3, 16, 8, 0, 261, 263, 5, 52, 0, 0, 262, 261, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 5, 58, 0, 0, 265, 266, 3, 120, 60, 0, 266, 284, 1, 0, 0, 0, 267, 269, 3, 16, 8, 0, 268, 270, 5, 52, 0, 0, 269, 268, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 5, 50, 0, 0, 272, 273, 5, 51, 0, 0, 273, 278, 3, 120, 60, 0, 274, 275, 5, 42, 0, 0, 275, 277, 3, 120, 60, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, 5, 59, 0, 0, 282, 284, 1, 0, 0, 0, 283, 253, 1, 0, 0, 0, 283, 260, 1, 0, 0, 0, 283, 267, 1, 0, 0, 0, 284, 13, 1, 0, 0, 0, 285, 288, 3, 70, 35, 0, 286, 287, 5, 40, 0, 0, 287, 289, 3, 30, 15, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 5, 41, 0, 0, 291, 292, 3, 80, 40, 0, 292, 15, 1, 0, 0, 0, 293, 299, 3, 18, 9, 0, 294, 295, 3, 18, 9, 0, 295, 296, 3, 122, 61, 0, 296, 297, 3, 18, 9, 0, 297, 299, 1, 0, 0, 0, 298, 293, 1, 0, 0, 0, 298, 294, 1, 0, 0, 0, 299, 17, 1, 0, 0, 0, 300, 301, 6, 9, -1, 0, 301, 305, 3, 20, 10, 0, 302, 303, 7, 0, 0, 0, 303, 305, 3, 18, 9, 3, 304, 300, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 305, 314, 1, 0, 0, 0, 306, 307, 10, 2, 0, 0, 307, 308, 7, 1, 0, 0, 308, 313, 3, 18, 9, 3, 309, 310, 10, 1, 0, 0, 310, 311, 7, 0, 0, 0, 311, 313, 3, 18, 9, 2, 312, 306, 1, 0, 0, 0, 312, 309, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 19, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 317, 318, 6, 10, -1, 0, 318, 326, 3, 80, 40, 0, 319, 326, 3, 70, 35, 0, 320, 326, 3, 22, 11, 0, 321, 322, 5, 51, 0, 0, 322, 323, 3, 10, 5, 0, 323, 324, 5, 59, 0, 0, 324, 326, 1, 0, 0, 0, 325, 317, 1, 0, 0, 0, 325, 319, 1, 0, 0, 0, 325, 320, 1, 0, 0, 0, 325, 321, 1, 0, 0, 0, 326, 332, 1, 0, 0, 0, 327, 328, 10, 1, 0, 0, 328, 329, 5, 40, 0, 0, 329, 331, 3, 30, 15, 0, 330, 327, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 21, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 336, 3, 24, 12, 0, 336, 350, 5, 51, 0, 0, 337, 351, 5, 71, 0, 0, 338, 343, 3, 10, 5, 0, 339, 340, 5, 42, 0, 0, 340, 342, 3, 10, 5, 0, 341, 339, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 348, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 347, 5, 42, 0, 0, 347, 349, 3, 26, 13, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 337, 1, 0, 0, 0, 350, 338, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 5, 59, 0, 0, 353, 23, 1, 0, 0, 0, 354, 355, 3, 86, 43, 0, 355, 25, 1, 0, 0, 0, 356, 357, 5, 74, 0, 0, 357, 362, 3, 28, 14, 0, 358, 359, 5, 42, 0, 0, 359, 361, 3, 28, 14, 0, 360, 358, 1, 0, 0, 0, 361, 364, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 365, 366, 5, 75, 0, 0, 366, 27, 1, 0, 0, 0, 367, 368, 3, 120, 60, 0, 368, 369, 5, 41, 0, 0, 369, 370, 3, 80, 40, 0, 370, 29, 1, 0, 0, 0, 371, 372, 3, 76, 38, 0, 372, 31, 1, 0, 0, 0, 373, 374, 5, 13, 0, 0, 374, 375, 3, 34, 17, 0, 375, 33, 1, 0, 0, 0, 376, 381, 3, 36, 18, 0, 377, 378, 5, 42, 0, 0, 378, 380, 3, 36, 18, 0, 379, 377, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 35, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 385, 3, 70, 35, 0, 385, 386, 5, 38, 0, 0, 386, 388, 1, 0, 0, 0, 387, 384, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 3, 10, 5, 0, 390, 37, 1, 0, 0, 0, 391, 396, 3, 40, 20, 0, 392, 393, 5, 42, 0, 0, 393, 395, 3, 40, 20, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 39, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 402, 3, 70, 35, 0, 400, 401, 5, 38, 0, 0, 401, 403, 3, 10, 5, 0, 402, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 41, 1, 0, 0, 0, 404, 405, 5, 7, 0, 0, 405, 410, 3, 44, 22, 0, 406, 407, 5, 42, 0, 0, 407, 409, 3, 44, 22, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 415, 3, 54, 27, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 43, 1, 0, 0, 0, 416, 417, 3, 46, 23, 0, 417, 418, 5, 41, 0, 0, 418, 419, 3, 50, 25, 0, 419, 426, 1, 0, 0, 0, 420, 421, 3, 50, 25, 0, 421, 422, 5, 40, 0, 0, 422, 423, 3, 48, 24, 0, 423, 426, 1, 0, 0, 0, 424, 426, 3, 52, 26, 0, 425, 416, 1, 0, 0, 0, 425, 420, 1, 0, 0, 0, 425, 424, 1, 0, 0, 0, 426, 45, 1, 0, 0, 0, 427, 428, 5, 90, 0, 0, 428, 47, 1, 0, 0, 0, 429, 430, 5, 90, 0, 0, 430, 49, 1, 0, 0, 0, 431, 432, 5, 90, 0, 0, 432, 51, 1, 0, 0, 0, 433, 434, 7, 2, 0, 0, 434, 53, 1, 0, 0, 0, 435, 438, 3, 56, 28, 0, 436, 438, 3, 58, 29, 0, 437, 435, 1, 0, 0, 0, 437, 436, 1, 0, 0, 0, 438, 55, 1, 0, 0, 0, 439, 440, 5, 89, 0, 0, 440, 445, 5, 90, 0, 0, 441, 442, 5, 42, 0, 0, 442, 444, 5, 90, 0, 0, 443, 441, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 57, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 449, 5, 79, 0, 0, 449, 450, 3, 56, 28, 0, 450, 451, 5, 80, 0, 0, 451, 59, 1, 0, 0, 0, 452, 453, 5, 23, 0, 0, 453, 458, 3, 44, 22, 0, 454, 455, 5, 42, 0, 0, 455, 457, 3, 44, 22, 0, 456, 454, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, 66, 33, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 465, 5, 39, 0, 0, 465, 467, 3, 34, 17, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 61, 1, 0, 0, 0, 468, 469, 5, 5, 0, 0, 469, 470, 3, 34, 17, 0, 470, 63, 1, 0, 0, 0, 471, 473, 5, 17, 0, 0, 472, 474, 3, 66, 33, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 476, 5, 39, 0, 0, 476, 478, 3, 34, 17, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 65, 1, 0, 0, 0, 479, 484, 3, 68, 34, 0, 480, 481, 5, 42, 0, 0, 481, 483, 3, 68, 34, 0, 482, 480, 1, 0, 0, 0, 483, 486, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 67, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 487, 490, 3, 36, 18, 0, 488, 489, 5, 18, 0, 0, 489, 491, 3, 10, 5, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 69, 1, 0, 0, 0, 492, 497, 3, 86, 43, 0, 493, 494, 5, 44, 0, 0, 494, 496, 3, 86, 43, 0, 495, 493, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 71, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 505, 3, 78, 39, 0, 501, 502, 5, 44, 0, 0, 502, 504, 3, 78, 39, 0, 503, 501, 1, 0, 0, 0, 504, 507, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 73, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 508, 513, 3, 72, 36, 0, 509, 510, 5, 42, 0, 0, 510, 512, 3, 72, 36, 0, 511, 509, 1, 0, 0, 0, 512, 515, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 75, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 517, 7, 3, 0, 0, 517, 77, 1, 0, 0, 0, 518, 522, 5, 94, 0, 0, 519, 522, 3, 82, 41, 0, 520, 522, 3, 84, 42, 0, 521, 518, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 520, 1, 0, 0, 0, 522, 79, 1, 0, 0, 0, 523, 566, 5, 53, 0, 0, 524, 525, 3, 118, 59, 0, 525, 526, 5, 81, 0, 0, 526, 566, 1, 0, 0, 0, 527, 566, 3, 116, 58, 0, 528, 566, 3, 118, 59, 0, 529, 566, 3, 112, 56, 0, 530, 566, 3, 82, 41, 0, 531, 566, 3, 120, 60, 0, 532, 533, 5, 79, 0, 0, 533, 538, 3, 114, 57, 0, 534, 535, 5, 42, 0, 0, 535, 537, 3, 114, 57, 0, 536, 534, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 80, 0, 0, 542, 566, 1, 0, 0, 0, 543, 544, 5, 79, 0, 0, 544, 549, 3, 112, 56, 0, 545, 546, 5, 42, 0, 0, 546, 548, 3, 112, 56, 0, 547, 545, 1, 0, 0, 0, 548, 551, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552, 553, 5, 80, 0, 0, 553, 566, 1, 0, 0, 0, 554, 555, 5, 79, 0, 0, 555, 560, 3, 120, 60, 0, 556, 557, 5, 42, 0, 0, 557, 559, 3, 120, 60, 0, 558, 556, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 564, 5, 80, 0, 0, 564, 566, 1, 0, 0, 0, 565, 523, 1, 0, 0, 0, 565, 524, 1, 0, 0, 0, 565, 527, 1, 0, 0, 0, 565, 528, 1, 0, 0, 0, 565, 529, 1, 0, 0, 0, 565, 530, 1, 0, 0, 0, 565, 531, 1, 0, 0, 0, 565, 532, 1, 0, 0, 0, 565, 543, 1, 0, 0, 0, 565, 554, 1, 0, 0, 0, 566, 81, 1, 0, 0, 0, 567, 570, 5, 57, 0, 0, 568, 570, 5, 77, 0, 0, 569, 567, 1, 0, 0, 0, 569, 568, 1, 0, 0, 0, 570, 83, 1, 0, 0, 0, 571, 574, 5, 76, 0, 0, 572, 574, 5, 78, 0, 0, 573, 571, 1, 0, 0, 0, 573, 572, 1, 0, 0, 0, 574, 85, 1, 0, 0, 0, 575, 579, 3, 76, 38, 0, 576, 579, 3, 82, 41, 0, 577, 579, 3, 84, 42, 0, 578, 575, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 577, 1, 0, 0, 0, 579, 87, 1, 0, 0, 0, 580, 581, 5, 10, 0, 0, 581, 582, 3, 80, 40, 0, 582, 89, 1, 0, 0, 0, 583, 584, 5, 16, 0, 0, 584, 589, 3, 92, 46, 0, 585, 586, 5, 42, 0, 0, 586, 588, 3, 92, 46, 0, 587, 585, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 91, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 594, 3, 10, 5, 0, 593, 595, 7, 4, 0, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 597, 5, 54, 0, 0, 597, 599, 7, 5, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 93, 1, 0, 0, 0, 600, 601, 5, 9, 0, 0, 601, 602, 3, 74, 37, 0, 602, 95, 1, 0, 0, 0, 603, 604, 5, 3, 0, 0, 604, 605, 3, 74, 37, 0, 605, 97, 1, 0, 0, 0, 606, 607, 5, 12, 0, 0, 607, 612, 3, 100, 50, 0, 608, 609, 5, 42, 0, 0, 609, 611, 3, 100, 50, 0, 610, 608, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 99, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 616, 3, 72, 36, 0, 616, 617, 5, 98, 0, 0, 617, 618, 3, 72, 36, 0, 618, 624, 1, 0, 0, 0, 619, 620, 3, 72, 36, 0, 620, 621, 5, 38, 0, 0, 621, 622, 3, 72, 36, 0, 622, 624, 1, 0, 0, 0, 623, 615, 1, 0, 0, 0, 623, 619, 1, 0, 0, 0, 624, 101, 1, 0, 0, 0, 625, 626, 5, 2, 0, 0, 626, 627, 3, 20, 10, 0, 627, 629, 3, 120, 60, 0, 628, 630, 3, 108, 54, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 103, 1, 0, 0, 0, 631, 632, 5, 8, 0, 0, 632, 633, 3, 20, 10, 0, 633, 634, 3, 120, 60, 0, 634, 105, 1, 0, 0, 0, 635, 636, 5, 11, 0, 0, 636, 637, 3, 70, 35, 0, 637, 107, 1, 0, 0, 0, 638, 643, 3, 110, 55, 0, 639, 640, 5, 42, 0, 0, 640, 642, 3, 110, 55, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 109, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, 3, 76, 38, 0, 647, 648, 5, 38, 0, 0, 648, 649, 3, 80, 40, 0, 649, 111, 1, 0, 0, 0, 650, 651, 7, 6, 0, 0, 651, 113, 1, 0, 0, 0, 652, 655, 3, 116, 58, 0, 653, 655, 3, 118, 59, 0, 654, 652, 1, 0, 0, 0, 654, 653, 1, 0, 0, 0, 655, 115, 1, 0, 0, 0, 656, 658, 7, 0, 0, 0, 657, 656, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 5, 35, 0, 0, 660, 117, 1, 0, 0, 0, 661, 663, 7, 0, 0, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 665, 5, 34, 0, 0, 665, 119, 1, 0, 0, 0, 666, 667, 5, 33, 0, 0, 667, 121, 1, 0, 0, 0, 668, 669, 7, 7, 0, 0, 669, 123, 1, 0, 0, 0, 670, 671, 5, 6, 0, 0, 671, 672, 3, 126, 63, 0, 672, 125, 1, 0, 0, 0, 673, 674, 5, 79, 0, 0, 674, 675, 3, 2, 1, 0, 675, 676, 5, 80, 0, 0, 676, 127, 1, 0, 0, 0, 677, 678, 5, 15, 0, 0, 678, 679, 5, 112, 0, 0, 679, 129, 1, 0, 0, 0, 680, 681, 5, 4, 0, 0, 681, 684, 3, 132, 66, 0, 682, 683, 5, 55, 0, 0, 683, 685, 3, 72, 36, 0, 684, 682, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 695, 1, 0, 0, 0, 686, 687, 5, 61, 0, 0, 687, 692, 3, 134, 67, 0, 688, 689, 5, 42, 0, 0, 689, 691, 3, 134, 67, 0, 690, 688, 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 696, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 686, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 131, 1, 0, 0, 0, 697, 698, 7, 8, 0, 0, 698, 133, 1, 0, 0, 0, 699, 700, 3, 72, 36, 0, 700, 701, 5, 38, 0, 0, 701, 703, 1, 0, 0, 0, 702, 699, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 3, 72, 36, 0, 705, 135, 1, 0, 0, 0, 706, 707, 5, 20, 0, 0, 707, 710, 3, 70, 35, 0, 708, 709, 5, 55, 0, 0, 709, 711, 3, 70, 35, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 717, 1, 0, 0, 0, 712, 713, 5, 98, 0, 0, 713, 714, 3, 70, 35, 0, 714, 715, 5, 42, 0, 0, 715, 716, 3, 70, 35, 0, 716, 718, 1, 0, 0, 0, 717, 712, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 137, 1, 0, 0, 0, 719, 720, 5, 14, 0, 0, 720, 721, 3, 80, 40, 0, 721, 139, 1, 0, 0, 0, 722, 723, 5, 22, 0, 0, 723, 724, 3, 44, 22, 0, 724, 725, 5, 55, 0, 0, 725, 726, 3, 74, 37, 0, 726, 141, 1, 0, 0, 0, 727, 728, 5, 21, 0, 0, 728, 731, 3, 66, 33, 0, 729, 730, 5, 39, 0, 0, 730, 732, 3, 34, 17, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 143, 1, 0, 0, 0, 733, 734, 7, 9, 0, 0, 734, 735, 5, 126, 0, 0, 735, 736, 3, 146, 73, 0, 736, 737, 3, 148, 74, 0, 737, 145, 1, 0, 0, 0, 738, 739, 3, 44, 22, 0, 739, 147, 1, 0, 0, 0, 740, 741, 5, 55, 0, 0, 741, 746, 3, 150, 75, 0, 742, 743, 5, 42, 0, 0, 743, 745, 3, 150, 75, 0, 744, 742, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 149, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 3, 16, 8, 0, 750, 151, 1, 0, 0, 0, 751, 756, 3, 154, 77, 0, 752, 753, 5, 42, 0, 0, 753, 755, 3, 154, 77, 0, 754, 752, 1, 0, 0, 0, 755, 758, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 153, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 759, 760, 3, 76, 38, 0, 760, 761, 5, 38, 0, 0, 761, 762, 3, 156, 78, 0, 762, 155, 1, 0, 0, 0, 763, 766, 3, 80, 40, 0, 764, 766, 3, 76, 38, 0, 765, 763, 1, 0, 0, 0, 765, 764, 1, 0, 0, 0, 766, 157, 1, 0, 0, 0, 767, 768, 5, 24, 0, 0, 768, 769, 3, 80, 40, 0, 769, 770, 5, 55, 0, 0, 770, 773, 3, 38, 19, 0, 771, 772, 5, 61, 0, 0, 772, 774, 3, 152, 76, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 159, 1, 0, 0, 0, 775, 779, 5, 1, 0, 0, 776, 777, 3, 70, 35, 0, 777, 778, 5, 38, 0, 0, 778, 780, 1, 0, 0, 0, 779, 776, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 3, 20, 10, 0, 782, 783, 5, 61, 0, 0, 783, 784, 3, 86, 43, 0, 784, 161, 1, 0, 0, 0, 74, 173, 182, 206, 218, 227, 235, 240, 248, 250, 255, 262, 269, 278, 283, 288, 298, 304, 312, 314, 325, 332, 343, 348, 350, 362, 381, 387, 396, 402, 410, 414, 425, 437, 445, 458, 462, 466, 473, 477, 484, 490, 497, 505, 513, 521, 538, 549, 560, 565, 569, 573, 578, 589, 594, 598, 612, 623, 629, 643, 654, 657, 662, 684, 692, 695, 702, 710, 717, 731, 746, 756, 765, 773, 779]
+=======
+[4, 1, 139, 831, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 184, 8, 1, 10, 1, 12, 1, 187, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 196, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 225, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 238, 8, 7, 10, 7, 12, 7, 241, 9, 7, 1, 8, 1, 8, 1, 8, 3, 8, 246, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 5, 9, 253, 8, 9, 10, 9, 12, 9, 256, 9, 9, 1, 10, 1, 10, 1, 10, 3, 10, 261, 8, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 272, 8, 13, 10, 13, 12, 13, 275, 9, 13, 1, 13, 3, 13, 278, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 289, 8, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 303, 8, 19, 10, 19, 12, 19, 306, 9, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 313, 8, 21, 1, 21, 1, 21, 3, 21, 317, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 322, 8, 22, 10, 22, 12, 22, 325, 9, 22, 1, 23, 1, 23, 1, 23, 3, 23, 330, 8, 23, 1, 24, 1, 24, 1, 24, 5, 24, 335, 8, 24, 10, 24, 12, 24, 338, 9, 24, 1, 25, 1, 25, 1, 25, 5, 25, 343, 8, 25, 10, 25, 12, 25, 346, 9, 25, 1, 26, 1, 26, 1, 26, 5, 26, 351, 8, 26, 10, 26, 12, 26, 354, 9, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 3, 28, 361, 8, 28, 1, 29, 1, 29, 3, 29, 365, 8, 29, 1, 30, 1, 30, 3, 30, 369, 8, 30, 1, 31, 1, 31, 1, 31, 3, 31, 374, 8, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 383, 8, 33, 10, 33, 12, 33, 386, 9, 33, 1, 34, 1, 34, 3, 34, 390, 8, 34, 1, 34, 1, 34, 3, 34, 394, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 406, 8, 37, 10, 37, 12, 37, 409, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 419, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 425, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 5, 42, 437, 8, 42, 10, 42, 12, 42, 440, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 460, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 466, 8, 47, 10, 47, 12, 47, 469, 9, 47, 3, 47, 471, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 3, 49, 478, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 489, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 496, 8, 51, 1, 52, 1, 52, 1, 52, 1, 53, 4, 53, 502, 8, 53, 11, 53, 12, 53, 503, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 516, 8, 55, 10, 55, 12, 55, 519, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 527, 8, 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, 3, 59, 542, 8, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 5, 62, 552, 8, 62, 10, 62, 12, 62, 555, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 563, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 571, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 580, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 587, 8, 66, 10, 66, 12, 66, 590, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 597, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 602, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 610, 8, 66, 10, 66, 12, 66, 613, 9, 66, 1, 67, 1, 67, 3, 67, 617, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 624, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 631, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 638, 8, 67, 10, 67, 12, 67, 641, 9, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 647, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 654, 8, 67, 10, 67, 12, 67, 657, 9, 67, 1, 67, 1, 67, 3, 67, 661, 8, 67, 1, 68, 1, 68, 1, 68, 3, 68, 666, 8, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 676, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 682, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 690, 8, 70, 10, 70, 12, 70, 693, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 703, 8, 71, 1, 71, 1, 71, 1, 71, 5, 71, 708, 8, 71, 10, 71, 12, 71, 711, 9, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 719, 8, 72, 10, 72, 12, 72, 722, 9, 72, 1, 72, 1, 72, 3, 72, 726, 8, 72, 3, 72, 728, 8, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 738, 8, 74, 10, 74, 12, 74, 741, 9, 74, 1, 74, 1, 74, 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, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 762, 8, 76, 10, 76, 12, 76, 765, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 773, 8, 76, 10, 76, 12, 76, 776, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 784, 8, 76, 10, 76, 12, 76, 787, 9, 76, 1, 76, 1, 76, 3, 76, 791, 8, 76, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 797, 8, 78, 1, 79, 3, 79, 800, 8, 79, 1, 79, 1, 79, 1, 80, 3, 80, 805, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 824, 8, 85, 10, 85, 12, 85, 827, 9, 85, 1, 86, 1, 86, 1, 86, 0, 5, 2, 110, 132, 140, 142, 87, 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, 0, 10, 2, 0, 53, 53, 107, 107, 1, 0, 101, 102, 2, 0, 57, 57, 63, 63, 2, 0, 66, 66, 69, 69, 2, 0, 38, 38, 53, 53, 1, 0, 87, 88, 1, 0, 89, 91, 2, 0, 65, 65, 78, 78, 2, 0, 80, 80, 82, 86, 2, 0, 23, 23, 25, 26, 860, 0, 174, 1, 0, 0, 0, 2, 177, 1, 0, 0, 0, 4, 195, 1, 0, 0, 0, 6, 224, 1, 0, 0, 0, 8, 226, 1, 0, 0, 0, 10, 229, 1, 0, 0, 0, 12, 231, 1, 0, 0, 0, 14, 234, 1, 0, 0, 0, 16, 245, 1, 0, 0, 0, 18, 249, 1, 0, 0, 0, 20, 257, 1, 0, 0, 0, 22, 262, 1, 0, 0, 0, 24, 265, 1, 0, 0, 0, 26, 268, 1, 0, 0, 0, 28, 288, 1, 0, 0, 0, 30, 290, 1, 0, 0, 0, 32, 292, 1, 0, 0, 0, 34, 294, 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 298, 1, 0, 0, 0, 40, 307, 1, 0, 0, 0, 42, 310, 1, 0, 0, 0, 44, 318, 1, 0, 0, 0, 46, 326, 1, 0, 0, 0, 48, 331, 1, 0, 0, 0, 50, 339, 1, 0, 0, 0, 52, 347, 1, 0, 0, 0, 54, 355, 1, 0, 0, 0, 56, 360, 1, 0, 0, 0, 58, 364, 1, 0, 0, 0, 60, 368, 1, 0, 0, 0, 62, 373, 1, 0, 0, 0, 64, 375, 1, 0, 0, 0, 66, 378, 1, 0, 0, 0, 68, 387, 1, 0, 0, 0, 70, 395, 1, 0, 0, 0, 72, 398, 1, 0, 0, 0, 74, 401, 1, 0, 0, 0, 76, 418, 1, 0, 0, 0, 78, 420, 1, 0, 0, 0, 80, 426, 1, 0, 0, 0, 82, 430, 1, 0, 0, 0, 84, 433, 1, 0, 0, 0, 86, 441, 1, 0, 0, 0, 88, 445, 1, 0, 0, 0, 90, 448, 1, 0, 0, 0, 92, 452, 1, 0, 0, 0, 94, 455, 1, 0, 0, 0, 96, 472, 1, 0, 0, 0, 98, 477, 1, 0, 0, 0, 100, 481, 1, 0, 0, 0, 102, 484, 1, 0, 0, 0, 104, 497, 1, 0, 0, 0, 106, 501, 1, 0, 0, 0, 108, 505, 1, 0, 0, 0, 110, 509, 1, 0, 0, 0, 112, 520, 1, 0, 0, 0, 114, 522, 1, 0, 0, 0, 116, 532, 1, 0, 0, 0, 118, 537, 1, 0, 0, 0, 120, 543, 1, 0, 0, 0, 122, 546, 1, 0, 0, 0, 124, 548, 1, 0, 0, 0, 126, 556, 1, 0, 0, 0, 128, 562, 1, 0, 0, 0, 130, 564, 1, 0, 0, 0, 132, 601, 1, 0, 0, 0, 134, 660, 1, 0, 0, 0, 136, 662, 1, 0, 0, 0, 138, 675, 1, 0, 0, 0, 140, 681, 1, 0, 0, 0, 142, 702, 1, 0, 0, 0, 144, 712, 1, 0, 0, 0, 146, 731, 1, 0, 0, 0, 148, 733, 1, 0, 0, 0, 150, 744, 1, 0, 0, 0, 152, 790, 1, 0, 0, 0, 154, 792, 1, 0, 0, 0, 156, 796, 1, 0, 0, 0, 158, 799, 1, 0, 0, 0, 160, 804, 1, 0, 0, 0, 162, 808, 1, 0, 0, 0, 164, 810, 1, 0, 0, 0, 166, 812, 1, 0, 0, 0, 168, 817, 1, 0, 0, 0, 170, 819, 1, 0, 0, 0, 172, 828, 1, 0, 0, 0, 174, 175, 3, 2, 1, 0, 175, 176, 5, 0, 0, 1, 176, 1, 1, 0, 0, 0, 177, 178, 6, 1, -1, 0, 178, 179, 3, 4, 2, 0, 179, 185, 1, 0, 0, 0, 180, 181, 10, 1, 0, 0, 181, 182, 5, 52, 0, 0, 182, 184, 3, 6, 3, 0, 183, 180, 1, 0, 0, 0, 184, 187, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 3, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 188, 196, 3, 22, 11, 0, 189, 196, 3, 12, 6, 0, 190, 196, 3, 92, 46, 0, 191, 192, 4, 2, 1, 0, 192, 196, 3, 24, 12, 0, 193, 194, 4, 2, 2, 0, 194, 196, 3, 88, 44, 0, 195, 188, 1, 0, 0, 0, 195, 189, 1, 0, 0, 0, 195, 190, 1, 0, 0, 0, 195, 191, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 196, 5, 1, 0, 0, 0, 197, 225, 3, 40, 20, 0, 198, 225, 3, 8, 4, 0, 199, 225, 3, 70, 35, 0, 200, 225, 3, 64, 32, 0, 201, 225, 3, 42, 21, 0, 202, 225, 3, 66, 33, 0, 203, 225, 3, 72, 36, 0, 204, 225, 3, 74, 37, 0, 205, 225, 3, 78, 39, 0, 206, 225, 3, 80, 40, 0, 207, 225, 3, 94, 47, 0, 208, 225, 3, 82, 41, 0, 209, 225, 3, 166, 83, 0, 210, 225, 3, 102, 51, 0, 211, 225, 3, 114, 57, 0, 212, 225, 3, 100, 50, 0, 213, 225, 3, 104, 52, 0, 214, 215, 4, 3, 3, 0, 215, 225, 3, 118, 59, 0, 216, 217, 4, 3, 4, 0, 217, 225, 3, 116, 58, 0, 218, 219, 4, 3, 5, 0, 219, 225, 3, 120, 60, 0, 220, 221, 4, 3, 6, 0, 221, 225, 3, 130, 65, 0, 222, 223, 4, 3, 7, 0, 223, 225, 3, 122, 61, 0, 224, 197, 1, 0, 0, 0, 224, 198, 1, 0, 0, 0, 224, 199, 1, 0, 0, 0, 224, 200, 1, 0, 0, 0, 224, 201, 1, 0, 0, 0, 224, 202, 1, 0, 0, 0, 224, 203, 1, 0, 0, 0, 224, 204, 1, 0, 0, 0, 224, 205, 1, 0, 0, 0, 224, 206, 1, 0, 0, 0, 224, 207, 1, 0, 0, 0, 224, 208, 1, 0, 0, 0, 224, 209, 1, 0, 0, 0, 224, 210, 1, 0, 0, 0, 224, 211, 1, 0, 0, 0, 224, 212, 1, 0, 0, 0, 224, 213, 1, 0, 0, 0, 224, 214, 1, 0, 0, 0, 224, 216, 1, 0, 0, 0, 224, 218, 1, 0, 0, 0, 224, 220, 1, 0, 0, 0, 224, 222, 1, 0, 0, 0, 225, 7, 1, 0, 0, 0, 226, 227, 5, 16, 0, 0, 227, 228, 3, 132, 66, 0, 228, 9, 1, 0, 0, 0, 229, 230, 3, 54, 27, 0, 230, 11, 1, 0, 0, 0, 231, 232, 5, 12, 0, 0, 232, 233, 3, 14, 7, 0, 233, 13, 1, 0, 0, 0, 234, 239, 3, 16, 8, 0, 235, 236, 5, 62, 0, 0, 236, 238, 3, 16, 8, 0, 237, 235, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 15, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 242, 243, 3, 48, 24, 0, 243, 244, 5, 58, 0, 0, 244, 246, 1, 0, 0, 0, 245, 242, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 248, 3, 132, 66, 0, 248, 17, 1, 0, 0, 0, 249, 254, 3, 20, 10, 0, 250, 251, 5, 62, 0, 0, 251, 253, 3, 20, 10, 0, 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 19, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 260, 3, 48, 24, 0, 258, 259, 5, 58, 0, 0, 259, 261, 3, 132, 66, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 21, 1, 0, 0, 0, 262, 263, 5, 19, 0, 0, 263, 264, 3, 26, 13, 0, 264, 23, 1, 0, 0, 0, 265, 266, 5, 20, 0, 0, 266, 267, 3, 26, 13, 0, 267, 25, 1, 0, 0, 0, 268, 273, 3, 28, 14, 0, 269, 270, 5, 62, 0, 0, 270, 272, 3, 28, 14, 0, 271, 269, 1, 0, 0, 0, 272, 275, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 276, 278, 3, 38, 19, 0, 277, 276, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 27, 1, 0, 0, 0, 279, 280, 3, 30, 15, 0, 280, 281, 5, 61, 0, 0, 281, 282, 3, 34, 17, 0, 282, 289, 1, 0, 0, 0, 283, 284, 3, 34, 17, 0, 284, 285, 5, 60, 0, 0, 285, 286, 3, 32, 16, 0, 286, 289, 1, 0, 0, 0, 287, 289, 3, 36, 18, 0, 288, 279, 1, 0, 0, 0, 288, 283, 1, 0, 0, 0, 288, 287, 1, 0, 0, 0, 289, 29, 1, 0, 0, 0, 290, 291, 5, 107, 0, 0, 291, 31, 1, 0, 0, 0, 292, 293, 5, 107, 0, 0, 293, 33, 1, 0, 0, 0, 294, 295, 5, 107, 0, 0, 295, 35, 1, 0, 0, 0, 296, 297, 7, 0, 0, 0, 297, 37, 1, 0, 0, 0, 298, 299, 5, 106, 0, 0, 299, 304, 5, 107, 0, 0, 300, 301, 5, 62, 0, 0, 301, 303, 5, 107, 0, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 39, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 308, 5, 9, 0, 0, 308, 309, 3, 14, 7, 0, 309, 41, 1, 0, 0, 0, 310, 312, 5, 15, 0, 0, 311, 313, 3, 44, 22, 0, 312, 311, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0, 314, 315, 5, 59, 0, 0, 315, 317, 3, 14, 7, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 43, 1, 0, 0, 0, 318, 323, 3, 46, 23, 0, 319, 320, 5, 62, 0, 0, 320, 322, 3, 46, 23, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 45, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 329, 3, 16, 8, 0, 327, 328, 5, 16, 0, 0, 328, 330, 3, 132, 66, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 47, 1, 0, 0, 0, 331, 336, 3, 62, 31, 0, 332, 333, 5, 64, 0, 0, 333, 335, 3, 62, 31, 0, 334, 332, 1, 0, 0, 0, 335, 338, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 49, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 339, 344, 3, 56, 28, 0, 340, 341, 5, 64, 0, 0, 341, 343, 3, 56, 28, 0, 342, 340, 1, 0, 0, 0, 343, 346, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 51, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 347, 352, 3, 50, 25, 0, 348, 349, 5, 62, 0, 0, 349, 351, 3, 50, 25, 0, 350, 348, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 53, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 355, 356, 7, 1, 0, 0, 356, 55, 1, 0, 0, 0, 357, 361, 5, 128, 0, 0, 358, 361, 3, 58, 29, 0, 359, 361, 3, 60, 30, 0, 360, 357, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 57, 1, 0, 0, 0, 362, 365, 5, 76, 0, 0, 363, 365, 5, 95, 0, 0, 364, 362, 1, 0, 0, 0, 364, 363, 1, 0, 0, 0, 365, 59, 1, 0, 0, 0, 366, 369, 5, 94, 0, 0, 367, 369, 5, 96, 0, 0, 368, 366, 1, 0, 0, 0, 368, 367, 1, 0, 0, 0, 369, 61, 1, 0, 0, 0, 370, 374, 3, 54, 27, 0, 371, 374, 3, 58, 29, 0, 372, 374, 3, 60, 30, 0, 373, 370, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 372, 1, 0, 0, 0, 374, 63, 1, 0, 0, 0, 375, 376, 5, 11, 0, 0, 376, 377, 3, 152, 76, 0, 377, 65, 1, 0, 0, 0, 378, 379, 5, 14, 0, 0, 379, 384, 3, 68, 34, 0, 380, 381, 5, 62, 0, 0, 381, 383, 3, 68, 34, 0, 382, 380, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 67, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 389, 3, 132, 66, 0, 388, 390, 7, 2, 0, 0, 389, 388, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 393, 1, 0, 0, 0, 391, 392, 5, 73, 0, 0, 392, 394, 7, 3, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 69, 1, 0, 0, 0, 395, 396, 5, 30, 0, 0, 396, 397, 3, 52, 26, 0, 397, 71, 1, 0, 0, 0, 398, 399, 5, 29, 0, 0, 399, 400, 3, 52, 26, 0, 400, 73, 1, 0, 0, 0, 401, 402, 5, 32, 0, 0, 402, 407, 3, 76, 38, 0, 403, 404, 5, 62, 0, 0, 404, 406, 3, 76, 38, 0, 405, 403, 1, 0, 0, 0, 406, 409, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 75, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 410, 411, 3, 50, 25, 0, 411, 412, 5, 132, 0, 0, 412, 413, 3, 50, 25, 0, 413, 419, 1, 0, 0, 0, 414, 415, 3, 50, 25, 0, 415, 416, 5, 58, 0, 0, 416, 417, 3, 50, 25, 0, 417, 419, 1, 0, 0, 0, 418, 410, 1, 0, 0, 0, 418, 414, 1, 0, 0, 0, 419, 77, 1, 0, 0, 0, 420, 421, 5, 8, 0, 0, 421, 422, 3, 142, 71, 0, 422, 424, 3, 162, 81, 0, 423, 425, 3, 84, 42, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 79, 1, 0, 0, 0, 426, 427, 5, 10, 0, 0, 427, 428, 3, 142, 71, 0, 428, 429, 3, 162, 81, 0, 429, 81, 1, 0, 0, 0, 430, 431, 5, 28, 0, 0, 431, 432, 3, 48, 24, 0, 432, 83, 1, 0, 0, 0, 433, 438, 3, 86, 43, 0, 434, 435, 5, 62, 0, 0, 435, 437, 3, 86, 43, 0, 436, 434, 1, 0, 0, 0, 437, 440, 1, 0, 0, 0, 438, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 85, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 441, 442, 3, 54, 27, 0, 442, 443, 5, 58, 0, 0, 443, 444, 3, 152, 76, 0, 444, 87, 1, 0, 0, 0, 445, 446, 5, 6, 0, 0, 446, 447, 3, 90, 45, 0, 447, 89, 1, 0, 0, 0, 448, 449, 5, 99, 0, 0, 449, 450, 3, 2, 1, 0, 450, 451, 5, 100, 0, 0, 451, 91, 1, 0, 0, 0, 452, 453, 5, 33, 0, 0, 453, 454, 5, 136, 0, 0, 454, 93, 1, 0, 0, 0, 455, 456, 5, 5, 0, 0, 456, 459, 3, 96, 48, 0, 457, 458, 5, 74, 0, 0, 458, 460, 3, 50, 25, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 470, 1, 0, 0, 0, 461, 462, 5, 79, 0, 0, 462, 467, 3, 98, 49, 0, 463, 464, 5, 62, 0, 0, 464, 466, 3, 98, 49, 0, 465, 463, 1, 0, 0, 0, 466, 469, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 471, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 461, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 95, 1, 0, 0, 0, 472, 473, 7, 4, 0, 0, 473, 97, 1, 0, 0, 0, 474, 475, 3, 50, 25, 0, 475, 476, 5, 58, 0, 0, 476, 478, 1, 0, 0, 0, 477, 474, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 3, 50, 25, 0, 480, 99, 1, 0, 0, 0, 481, 482, 5, 13, 0, 0, 482, 483, 3, 152, 76, 0, 483, 101, 1, 0, 0, 0, 484, 485, 5, 4, 0, 0, 485, 488, 3, 48, 24, 0, 486, 487, 5, 74, 0, 0, 487, 489, 3, 48, 24, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 495, 1, 0, 0, 0, 490, 491, 5, 132, 0, 0, 491, 492, 3, 48, 24, 0, 492, 493, 5, 62, 0, 0, 493, 494, 3, 48, 24, 0, 494, 496, 1, 0, 0, 0, 495, 490, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 103, 1, 0, 0, 0, 497, 498, 5, 21, 0, 0, 498, 499, 3, 106, 53, 0, 499, 105, 1, 0, 0, 0, 500, 502, 3, 108, 54, 0, 501, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 501, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 107, 1, 0, 0, 0, 505, 506, 5, 99, 0, 0, 506, 507, 3, 110, 55, 0, 507, 508, 5, 100, 0, 0, 508, 109, 1, 0, 0, 0, 509, 510, 6, 55, -1, 0, 510, 511, 3, 112, 56, 0, 511, 517, 1, 0, 0, 0, 512, 513, 10, 1, 0, 0, 513, 514, 5, 52, 0, 0, 514, 516, 3, 112, 56, 0, 515, 512, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 111, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 521, 3, 6, 3, 0, 521, 113, 1, 0, 0, 0, 522, 526, 5, 7, 0, 0, 523, 524, 3, 48, 24, 0, 524, 525, 5, 58, 0, 0, 525, 527, 1, 0, 0, 0, 526, 523, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 3, 142, 71, 0, 529, 530, 5, 79, 0, 0, 530, 531, 3, 62, 31, 0, 531, 115, 1, 0, 0, 0, 532, 533, 5, 27, 0, 0, 533, 534, 3, 28, 14, 0, 534, 535, 5, 74, 0, 0, 535, 536, 3, 52, 26, 0, 536, 117, 1, 0, 0, 0, 537, 538, 5, 17, 0, 0, 538, 541, 3, 44, 22, 0, 539, 540, 5, 59, 0, 0, 540, 542, 3, 14, 7, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 119, 1, 0, 0, 0, 543, 544, 5, 31, 0, 0, 544, 545, 3, 52, 26, 0, 545, 121, 1, 0, 0, 0, 546, 547, 5, 22, 0, 0, 547, 123, 1, 0, 0, 0, 548, 553, 3, 126, 63, 0, 549, 550, 5, 62, 0, 0, 550, 552, 3, 126, 63, 0, 551, 549, 1, 0, 0, 0, 552, 555, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 125, 1, 0, 0, 0, 555, 553, 1, 0, 0, 0, 556, 557, 3, 54, 27, 0, 557, 558, 5, 58, 0, 0, 558, 559, 3, 128, 64, 0, 559, 127, 1, 0, 0, 0, 560, 563, 3, 152, 76, 0, 561, 563, 3, 54, 27, 0, 562, 560, 1, 0, 0, 0, 562, 561, 1, 0, 0, 0, 563, 129, 1, 0, 0, 0, 564, 565, 5, 18, 0, 0, 565, 566, 3, 152, 76, 0, 566, 567, 5, 74, 0, 0, 567, 570, 3, 18, 9, 0, 568, 569, 5, 79, 0, 0, 569, 571, 3, 124, 62, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 131, 1, 0, 0, 0, 572, 573, 6, 66, -1, 0, 573, 574, 5, 71, 0, 0, 574, 602, 3, 132, 66, 8, 575, 602, 3, 138, 69, 0, 576, 602, 3, 134, 67, 0, 577, 579, 3, 138, 69, 0, 578, 580, 5, 71, 0, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 67, 0, 0, 582, 583, 5, 99, 0, 0, 583, 588, 3, 138, 69, 0, 584, 585, 5, 62, 0, 0, 585, 587, 3, 138, 69, 0, 586, 584, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0, 588, 586, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 591, 592, 5, 100, 0, 0, 592, 602, 1, 0, 0, 0, 593, 594, 3, 138, 69, 0, 594, 596, 5, 68, 0, 0, 595, 597, 5, 71, 0, 0, 596, 595, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 72, 0, 0, 599, 602, 1, 0, 0, 0, 600, 602, 3, 136, 68, 0, 601, 572, 1, 0, 0, 0, 601, 575, 1, 0, 0, 0, 601, 576, 1, 0, 0, 0, 601, 577, 1, 0, 0, 0, 601, 593, 1, 0, 0, 0, 601, 600, 1, 0, 0, 0, 602, 611, 1, 0, 0, 0, 603, 604, 10, 5, 0, 0, 604, 605, 5, 56, 0, 0, 605, 610, 3, 132, 66, 6, 606, 607, 10, 4, 0, 0, 607, 608, 5, 75, 0, 0, 608, 610, 3, 132, 66, 5, 609, 603, 1, 0, 0, 0, 609, 606, 1, 0, 0, 0, 610, 613, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 133, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 614, 616, 3, 138, 69, 0, 615, 617, 5, 71, 0, 0, 616, 615, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 5, 70, 0, 0, 619, 620, 3, 162, 81, 0, 620, 661, 1, 0, 0, 0, 621, 623, 3, 138, 69, 0, 622, 624, 5, 71, 0, 0, 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 626, 5, 77, 0, 0, 626, 627, 3, 162, 81, 0, 627, 661, 1, 0, 0, 0, 628, 630, 3, 138, 69, 0, 629, 631, 5, 71, 0, 0, 630, 629, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 633, 5, 70, 0, 0, 633, 634, 5, 99, 0, 0, 634, 639, 3, 162, 81, 0, 635, 636, 5, 62, 0, 0, 636, 638, 3, 162, 81, 0, 637, 635, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 642, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 643, 5, 100, 0, 0, 643, 661, 1, 0, 0, 0, 644, 646, 3, 138, 69, 0, 645, 647, 5, 71, 0, 0, 646, 645, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 649, 5, 77, 0, 0, 649, 650, 5, 99, 0, 0, 650, 655, 3, 162, 81, 0, 651, 652, 5, 62, 0, 0, 652, 654, 3, 162, 81, 0, 653, 651, 1, 0, 0, 0, 654, 657, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 658, 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 658, 659, 5, 100, 0, 0, 659, 661, 1, 0, 0, 0, 660, 614, 1, 0, 0, 0, 660, 621, 1, 0, 0, 0, 660, 628, 1, 0, 0, 0, 660, 644, 1, 0, 0, 0, 661, 135, 1, 0, 0, 0, 662, 665, 3, 48, 24, 0, 663, 664, 5, 60, 0, 0, 664, 666, 3, 10, 5, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 668, 5, 61, 0, 0, 668, 669, 3, 152, 76, 0, 669, 137, 1, 0, 0, 0, 670, 676, 3, 140, 70, 0, 671, 672, 3, 140, 70, 0, 672, 673, 3, 164, 82, 0, 673, 674, 3, 140, 70, 0, 674, 676, 1, 0, 0, 0, 675, 670, 1, 0, 0, 0, 675, 671, 1, 0, 0, 0, 676, 139, 1, 0, 0, 0, 677, 678, 6, 70, -1, 0, 678, 682, 3, 142, 71, 0, 679, 680, 7, 5, 0, 0, 680, 682, 3, 140, 70, 3, 681, 677, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 691, 1, 0, 0, 0, 683, 684, 10, 2, 0, 0, 684, 685, 7, 6, 0, 0, 685, 690, 3, 140, 70, 3, 686, 687, 10, 1, 0, 0, 687, 688, 7, 5, 0, 0, 688, 690, 3, 140, 70, 2, 689, 683, 1, 0, 0, 0, 689, 686, 1, 0, 0, 0, 690, 693, 1, 0, 0, 0, 691, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 141, 1, 0, 0, 0, 693, 691, 1, 0, 0, 0, 694, 695, 6, 71, -1, 0, 695, 703, 3, 152, 76, 0, 696, 703, 3, 48, 24, 0, 697, 703, 3, 144, 72, 0, 698, 699, 5, 99, 0, 0, 699, 700, 3, 132, 66, 0, 700, 701, 5, 100, 0, 0, 701, 703, 1, 0, 0, 0, 702, 694, 1, 0, 0, 0, 702, 696, 1, 0, 0, 0, 702, 697, 1, 0, 0, 0, 702, 698, 1, 0, 0, 0, 703, 709, 1, 0, 0, 0, 704, 705, 10, 1, 0, 0, 705, 706, 5, 60, 0, 0, 706, 708, 3, 10, 5, 0, 707, 704, 1, 0, 0, 0, 708, 711, 1, 0, 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 143, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 712, 713, 3, 146, 73, 0, 713, 727, 5, 99, 0, 0, 714, 728, 5, 89, 0, 0, 715, 720, 3, 132, 66, 0, 716, 717, 5, 62, 0, 0, 717, 719, 3, 132, 66, 0, 718, 716, 1, 0, 0, 0, 719, 722, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 725, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 723, 724, 5, 62, 0, 0, 724, 726, 3, 148, 74, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 728, 1, 0, 0, 0, 727, 714, 1, 0, 0, 0, 727, 715, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 730, 5, 100, 0, 0, 730, 145, 1, 0, 0, 0, 731, 732, 3, 62, 31, 0, 732, 147, 1, 0, 0, 0, 733, 734, 5, 92, 0, 0, 734, 739, 3, 150, 75, 0, 735, 736, 5, 62, 0, 0, 736, 738, 3, 150, 75, 0, 737, 735, 1, 0, 0, 0, 738, 741, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 742, 743, 5, 93, 0, 0, 743, 149, 1, 0, 0, 0, 744, 745, 3, 162, 81, 0, 745, 746, 5, 61, 0, 0, 746, 747, 3, 152, 76, 0, 747, 151, 1, 0, 0, 0, 748, 791, 5, 72, 0, 0, 749, 750, 3, 160, 80, 0, 750, 751, 5, 101, 0, 0, 751, 791, 1, 0, 0, 0, 752, 791, 3, 158, 79, 0, 753, 791, 3, 160, 80, 0, 754, 791, 3, 154, 77, 0, 755, 791, 3, 58, 29, 0, 756, 791, 3, 162, 81, 0, 757, 758, 5, 97, 0, 0, 758, 763, 3, 156, 78, 0, 759, 760, 5, 62, 0, 0, 760, 762, 3, 156, 78, 0, 761, 759, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 98, 0, 0, 767, 791, 1, 0, 0, 0, 768, 769, 5, 97, 0, 0, 769, 774, 3, 154, 77, 0, 770, 771, 5, 62, 0, 0, 771, 773, 3, 154, 77, 0, 772, 770, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777, 778, 5, 98, 0, 0, 778, 791, 1, 0, 0, 0, 779, 780, 5, 97, 0, 0, 780, 785, 3, 162, 81, 0, 781, 782, 5, 62, 0, 0, 782, 784, 3, 162, 81, 0, 783, 781, 1, 0, 0, 0, 784, 787, 1, 0, 0, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 788, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 789, 5, 98, 0, 0, 789, 791, 1, 0, 0, 0, 790, 748, 1, 0, 0, 0, 790, 749, 1, 0, 0, 0, 790, 752, 1, 0, 0, 0, 790, 753, 1, 0, 0, 0, 790, 754, 1, 0, 0, 0, 790, 755, 1, 0, 0, 0, 790, 756, 1, 0, 0, 0, 790, 757, 1, 0, 0, 0, 790, 768, 1, 0, 0, 0, 790, 779, 1, 0, 0, 0, 791, 153, 1, 0, 0, 0, 792, 793, 7, 7, 0, 0, 793, 155, 1, 0, 0, 0, 794, 797, 3, 158, 79, 0, 795, 797, 3, 160, 80, 0, 796, 794, 1, 0, 0, 0, 796, 795, 1, 0, 0, 0, 797, 157, 1, 0, 0, 0, 798, 800, 7, 5, 0, 0, 799, 798, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 802, 5, 55, 0, 0, 802, 159, 1, 0, 0, 0, 803, 805, 7, 5, 0, 0, 804, 803, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 807, 5, 54, 0, 0, 807, 161, 1, 0, 0, 0, 808, 809, 5, 53, 0, 0, 809, 163, 1, 0, 0, 0, 810, 811, 7, 8, 0, 0, 811, 165, 1, 0, 0, 0, 812, 813, 7, 9, 0, 0, 813, 814, 5, 114, 0, 0, 814, 815, 3, 168, 84, 0, 815, 816, 3, 170, 85, 0, 816, 167, 1, 0, 0, 0, 817, 818, 3, 28, 14, 0, 818, 169, 1, 0, 0, 0, 819, 820, 5, 74, 0, 0, 820, 825, 3, 172, 86, 0, 821, 822, 5, 62, 0, 0, 822, 824, 3, 172, 86, 0, 823, 821, 1, 0, 0, 0, 824, 827, 1, 0, 0, 0, 825, 823, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 171, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 828, 829, 3, 138, 69, 0, 829, 173, 1, 0, 0, 0, 74, 185, 195, 224, 239, 245, 254, 260, 273, 277, 288, 304, 312, 316, 323, 329, 336, 344, 352, 360, 364, 368, 373, 384, 389, 393, 407, 418, 424, 438, 459, 467, 470, 477, 488, 495, 503, 517, 526, 541, 553, 562, 570, 579, 588, 596, 601, 609, 611, 616, 623, 630, 639, 646, 655, 660, 665, 675, 681, 689, 691, 702, 709, 720, 725, 727, 739, 763, 774, 785, 790, 796, 799, 804, 825]
+>>>>>>> f0c30f272da (Add support for RLIKE (LIST) with pushdown (#129929))
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
index e0e2433e4c517..8a87254e54a0b 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParser.java
@@ -25,137 +25,140 @@ public class EsqlBaseParser extends ParserConfig {
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
- COMPLETION=1, DISSECT=2, DROP=3, ENRICH=4, EVAL=5, EXPLAIN=6, FROM=7,
- GROK=8, KEEP=9, LIMIT=10, MV_EXPAND=11, RENAME=12, ROW=13, SAMPLE=14,
- SHOW=15, SORT=16, STATS=17, WHERE=18, JOIN_LOOKUP=19, CHANGE_POINT=20,
- DEV_INLINESTATS=21, DEV_LOOKUP=22, DEV_METRICS=23, DEV_RERANK=24, DEV_JOIN_FULL=25,
- DEV_JOIN_LEFT=26, DEV_JOIN_RIGHT=27, UNKNOWN_CMD=28, LINE_COMMENT=29,
- MULTILINE_COMMENT=30, WS=31, PIPE=32, QUOTED_STRING=33, INTEGER_LITERAL=34,
- DECIMAL_LITERAL=35, AND=36, ASC=37, ASSIGN=38, BY=39, CAST_OP=40, COLON=41,
- COMMA=42, DESC=43, DOT=44, FALSE=45, FIRST=46, IN=47, IS=48, LAST=49,
- LIKE=50, LP=51, NOT=52, NULL=53, NULLS=54, ON=55, OR=56, PARAM=57, RLIKE=58,
- RP=59, TRUE=60, WITH=61, EQ=62, CIEQ=63, NEQ=64, LT=65, LTE=66, GT=67,
- GTE=68, PLUS=69, MINUS=70, ASTERISK=71, SLASH=72, PERCENT=73, LEFT_BRACES=74,
- RIGHT_BRACES=75, DOUBLE_PARAMS=76, NAMED_OR_POSITIONAL_PARAM=77, NAMED_OR_POSITIONAL_DOUBLE_PARAMS=78,
- OPENING_BRACKET=79, CLOSING_BRACKET=80, UNQUOTED_IDENTIFIER=81, QUOTED_IDENTIFIER=82,
- EXPR_LINE_COMMENT=83, EXPR_MULTILINE_COMMENT=84, EXPR_WS=85, EXPLAIN_WS=86,
- EXPLAIN_LINE_COMMENT=87, EXPLAIN_MULTILINE_COMMENT=88, METADATA=89, UNQUOTED_SOURCE=90,
- FROM_LINE_COMMENT=91, FROM_MULTILINE_COMMENT=92, FROM_WS=93, ID_PATTERN=94,
- PROJECT_LINE_COMMENT=95, PROJECT_MULTILINE_COMMENT=96, PROJECT_WS=97,
- AS=98, RENAME_LINE_COMMENT=99, RENAME_MULTILINE_COMMENT=100, RENAME_WS=101,
- ENRICH_POLICY_NAME=102, ENRICH_LINE_COMMENT=103, ENRICH_MULTILINE_COMMENT=104,
- ENRICH_WS=105, ENRICH_FIELD_LINE_COMMENT=106, ENRICH_FIELD_MULTILINE_COMMENT=107,
- ENRICH_FIELD_WS=108, MVEXPAND_LINE_COMMENT=109, MVEXPAND_MULTILINE_COMMENT=110,
- MVEXPAND_WS=111, INFO=112, SHOW_LINE_COMMENT=113, SHOW_MULTILINE_COMMENT=114,
- SHOW_WS=115, SETTING=116, SETTING_LINE_COMMENT=117, SETTTING_MULTILINE_COMMENT=118,
- SETTING_WS=119, LOOKUP_LINE_COMMENT=120, LOOKUP_MULTILINE_COMMENT=121,
- LOOKUP_WS=122, LOOKUP_FIELD_LINE_COMMENT=123, LOOKUP_FIELD_MULTILINE_COMMENT=124,
- LOOKUP_FIELD_WS=125, JOIN=126, USING=127, JOIN_LINE_COMMENT=128, JOIN_MULTILINE_COMMENT=129,
- JOIN_WS=130, METRICS_LINE_COMMENT=131, METRICS_MULTILINE_COMMENT=132,
- METRICS_WS=133, CLOSING_METRICS_LINE_COMMENT=134, CLOSING_METRICS_MULTILINE_COMMENT=135,
- CLOSING_METRICS_WS=136, CHANGE_POINT_LINE_COMMENT=137, CHANGE_POINT_MULTILINE_COMMENT=138,
- CHANGE_POINT_WS=139;
+ LINE_COMMENT=1, MULTILINE_COMMENT=2, WS=3, CHANGE_POINT=4, ENRICH=5, DEV_EXPLAIN=6,
+ COMPLETION=7, DISSECT=8, EVAL=9, GROK=10, LIMIT=11, ROW=12, SAMPLE=13,
+ SORT=14, STATS=15, WHERE=16, DEV_INLINESTATS=17, DEV_RERANK=18, FROM=19,
+ DEV_TIME_SERIES=20, FORK=21, DEV_FUSE=22, JOIN_LOOKUP=23, DEV_JOIN_FULL=24,
+ DEV_JOIN_LEFT=25, DEV_JOIN_RIGHT=26, DEV_LOOKUP=27, MV_EXPAND=28, DROP=29,
+ KEEP=30, DEV_INSIST=31, RENAME=32, SHOW=33, UNKNOWN_CMD=34, CHANGE_POINT_LINE_COMMENT=35,
+ CHANGE_POINT_MULTILINE_COMMENT=36, CHANGE_POINT_WS=37, ENRICH_POLICY_NAME=38,
+ ENRICH_LINE_COMMENT=39, ENRICH_MULTILINE_COMMENT=40, ENRICH_WS=41, ENRICH_FIELD_LINE_COMMENT=42,
+ ENRICH_FIELD_MULTILINE_COMMENT=43, ENRICH_FIELD_WS=44, SETTING=45, SETTING_LINE_COMMENT=46,
+ SETTTING_MULTILINE_COMMENT=47, SETTING_WS=48, EXPLAIN_WS=49, EXPLAIN_LINE_COMMENT=50,
+ EXPLAIN_MULTILINE_COMMENT=51, PIPE=52, QUOTED_STRING=53, INTEGER_LITERAL=54,
+ DECIMAL_LITERAL=55, AND=56, ASC=57, ASSIGN=58, BY=59, CAST_OP=60, COLON=61,
+ COMMA=62, DESC=63, DOT=64, FALSE=65, FIRST=66, IN=67, IS=68, LAST=69,
+ LIKE=70, NOT=71, NULL=72, NULLS=73, ON=74, OR=75, PARAM=76, RLIKE=77,
+ TRUE=78, WITH=79, EQ=80, CIEQ=81, NEQ=82, LT=83, LTE=84, GT=85, GTE=86,
+ PLUS=87, MINUS=88, ASTERISK=89, SLASH=90, PERCENT=91, LEFT_BRACES=92,
+ RIGHT_BRACES=93, DOUBLE_PARAMS=94, NAMED_OR_POSITIONAL_PARAM=95, NAMED_OR_POSITIONAL_DOUBLE_PARAMS=96,
+ OPENING_BRACKET=97, CLOSING_BRACKET=98, LP=99, RP=100, UNQUOTED_IDENTIFIER=101,
+ QUOTED_IDENTIFIER=102, EXPR_LINE_COMMENT=103, EXPR_MULTILINE_COMMENT=104,
+ EXPR_WS=105, METADATA=106, UNQUOTED_SOURCE=107, FROM_LINE_COMMENT=108,
+ FROM_MULTILINE_COMMENT=109, FROM_WS=110, FORK_WS=111, FORK_LINE_COMMENT=112,
+ FORK_MULTILINE_COMMENT=113, JOIN=114, USING=115, JOIN_LINE_COMMENT=116,
+ JOIN_MULTILINE_COMMENT=117, JOIN_WS=118, LOOKUP_LINE_COMMENT=119, LOOKUP_MULTILINE_COMMENT=120,
+ LOOKUP_WS=121, LOOKUP_FIELD_LINE_COMMENT=122, LOOKUP_FIELD_MULTILINE_COMMENT=123,
+ LOOKUP_FIELD_WS=124, MVEXPAND_LINE_COMMENT=125, MVEXPAND_MULTILINE_COMMENT=126,
+ MVEXPAND_WS=127, ID_PATTERN=128, PROJECT_LINE_COMMENT=129, PROJECT_MULTILINE_COMMENT=130,
+ PROJECT_WS=131, AS=132, RENAME_LINE_COMMENT=133, RENAME_MULTILINE_COMMENT=134,
+ RENAME_WS=135, INFO=136, SHOW_LINE_COMMENT=137, SHOW_MULTILINE_COMMENT=138,
+ SHOW_WS=139;
public static final int
RULE_singleStatement = 0, RULE_query = 1, RULE_sourceCommand = 2, RULE_processingCommand = 3,
- RULE_whereCommand = 4, RULE_booleanExpression = 5, RULE_regexBooleanExpression = 6,
- RULE_matchBooleanExpression = 7, RULE_valueExpression = 8, RULE_operatorExpression = 9,
- RULE_primaryExpression = 10, RULE_functionExpression = 11, RULE_functionName = 12,
- RULE_mapExpression = 13, RULE_entryExpression = 14, RULE_dataType = 15,
- RULE_rowCommand = 16, RULE_fields = 17, RULE_field = 18, RULE_rerankFields = 19,
- RULE_rerankField = 20, RULE_fromCommand = 21, RULE_indexPattern = 22,
- RULE_clusterString = 23, RULE_selectorString = 24, RULE_unquotedIndexString = 25,
- RULE_indexString = 26, RULE_metadata = 27, RULE_metadataOption = 28, RULE_deprecated_metadata = 29,
- RULE_metricsCommand = 30, RULE_evalCommand = 31, RULE_statsCommand = 32,
- RULE_aggFields = 33, RULE_aggField = 34, RULE_qualifiedName = 35, RULE_qualifiedNamePattern = 36,
- RULE_qualifiedNamePatterns = 37, RULE_identifier = 38, RULE_identifierPattern = 39,
- RULE_constant = 40, RULE_parameter = 41, RULE_doubleParameter = 42, RULE_identifierOrParameter = 43,
- RULE_limitCommand = 44, RULE_sortCommand = 45, RULE_orderExpression = 46,
- RULE_keepCommand = 47, RULE_dropCommand = 48, RULE_renameCommand = 49,
- RULE_renameClause = 50, RULE_dissectCommand = 51, RULE_grokCommand = 52,
- RULE_mvExpandCommand = 53, RULE_commandOptions = 54, RULE_commandOption = 55,
- RULE_booleanValue = 56, RULE_numericValue = 57, RULE_decimalValue = 58,
- RULE_integerValue = 59, RULE_string = 60, RULE_comparisonOperator = 61,
- RULE_explainCommand = 62, RULE_subqueryExpression = 63, RULE_showCommand = 64,
- RULE_enrichCommand = 65, RULE_enrichPolicyName = 66, RULE_enrichWithClause = 67,
- RULE_changePointCommand = 68, RULE_sampleCommand = 69, RULE_lookupCommand = 70,
- RULE_inlinestatsCommand = 71, RULE_joinCommand = 72, RULE_joinTarget = 73,
- RULE_joinCondition = 74, RULE_joinPredicate = 75, RULE_inferenceCommandOptions = 76,
- RULE_inferenceCommandOption = 77, RULE_inferenceCommandOptionValue = 78,
- RULE_rerankCommand = 79, RULE_completionCommand = 80;
+ RULE_whereCommand = 4, RULE_dataType = 5, RULE_rowCommand = 6, RULE_fields = 7,
+ RULE_field = 8, RULE_rerankFields = 9, RULE_rerankField = 10, RULE_fromCommand = 11,
+ RULE_timeSeriesCommand = 12, RULE_indexPatternAndMetadataFields = 13,
+ RULE_indexPattern = 14, RULE_clusterString = 15, RULE_selectorString = 16,
+ RULE_unquotedIndexString = 17, RULE_indexString = 18, RULE_metadata = 19,
+ RULE_evalCommand = 20, RULE_statsCommand = 21, RULE_aggFields = 22, RULE_aggField = 23,
+ RULE_qualifiedName = 24, RULE_qualifiedNamePattern = 25, RULE_qualifiedNamePatterns = 26,
+ RULE_identifier = 27, RULE_identifierPattern = 28, RULE_parameter = 29,
+ RULE_doubleParameter = 30, RULE_identifierOrParameter = 31, RULE_limitCommand = 32,
+ RULE_sortCommand = 33, RULE_orderExpression = 34, RULE_keepCommand = 35,
+ RULE_dropCommand = 36, RULE_renameCommand = 37, RULE_renameClause = 38,
+ RULE_dissectCommand = 39, RULE_grokCommand = 40, RULE_mvExpandCommand = 41,
+ RULE_commandOptions = 42, RULE_commandOption = 43, RULE_explainCommand = 44,
+ RULE_subqueryExpression = 45, RULE_showCommand = 46, RULE_enrichCommand = 47,
+ RULE_enrichPolicyName = 48, RULE_enrichWithClause = 49, RULE_sampleCommand = 50,
+ RULE_changePointCommand = 51, RULE_forkCommand = 52, RULE_forkSubQueries = 53,
+ RULE_forkSubQuery = 54, RULE_forkSubQueryCommand = 55, RULE_forkSubQueryProcessingCommand = 56,
+ RULE_completionCommand = 57, RULE_lookupCommand = 58, RULE_inlinestatsCommand = 59,
+ RULE_insistCommand = 60, RULE_fuseCommand = 61, RULE_inferenceCommandOptions = 62,
+ RULE_inferenceCommandOption = 63, RULE_inferenceCommandOptionValue = 64,
+ RULE_rerankCommand = 65, RULE_booleanExpression = 66, RULE_regexBooleanExpression = 67,
+ RULE_matchBooleanExpression = 68, RULE_valueExpression = 69, RULE_operatorExpression = 70,
+ RULE_primaryExpression = 71, RULE_functionExpression = 72, RULE_functionName = 73,
+ RULE_mapExpression = 74, RULE_entryExpression = 75, RULE_constant = 76,
+ RULE_booleanValue = 77, RULE_numericValue = 78, RULE_decimalValue = 79,
+ RULE_integerValue = 80, RULE_string = 81, RULE_comparisonOperator = 82,
+ RULE_joinCommand = 83, RULE_joinTarget = 84, RULE_joinCondition = 85,
+ RULE_joinPredicate = 86;
private static String[] makeRuleNames() {
return new String[] {
"singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand",
- "booleanExpression", "regexBooleanExpression", "matchBooleanExpression",
- "valueExpression", "operatorExpression", "primaryExpression", "functionExpression",
- "functionName", "mapExpression", "entryExpression", "dataType", "rowCommand",
- "fields", "field", "rerankFields", "rerankField", "fromCommand", "indexPattern",
- "clusterString", "selectorString", "unquotedIndexString", "indexString",
- "metadata", "metadataOption", "deprecated_metadata", "metricsCommand",
- "evalCommand", "statsCommand", "aggFields", "aggField", "qualifiedName",
- "qualifiedNamePattern", "qualifiedNamePatterns", "identifier", "identifierPattern",
- "constant", "parameter", "doubleParameter", "identifierOrParameter",
+ "dataType", "rowCommand", "fields", "field", "rerankFields", "rerankField",
+ "fromCommand", "timeSeriesCommand", "indexPatternAndMetadataFields",
+ "indexPattern", "clusterString", "selectorString", "unquotedIndexString",
+ "indexString", "metadata", "evalCommand", "statsCommand", "aggFields",
+ "aggField", "qualifiedName", "qualifiedNamePattern", "qualifiedNamePatterns",
+ "identifier", "identifierPattern", "parameter", "doubleParameter", "identifierOrParameter",
"limitCommand", "sortCommand", "orderExpression", "keepCommand", "dropCommand",
"renameCommand", "renameClause", "dissectCommand", "grokCommand", "mvExpandCommand",
- "commandOptions", "commandOption", "booleanValue", "numericValue", "decimalValue",
- "integerValue", "string", "comparisonOperator", "explainCommand", "subqueryExpression",
+ "commandOptions", "commandOption", "explainCommand", "subqueryExpression",
"showCommand", "enrichCommand", "enrichPolicyName", "enrichWithClause",
- "changePointCommand", "sampleCommand", "lookupCommand", "inlinestatsCommand",
- "joinCommand", "joinTarget", "joinCondition", "joinPredicate", "inferenceCommandOptions",
- "inferenceCommandOption", "inferenceCommandOptionValue", "rerankCommand",
- "completionCommand"
+ "sampleCommand", "changePointCommand", "forkCommand", "forkSubQueries",
+ "forkSubQuery", "forkSubQueryCommand", "forkSubQueryProcessingCommand",
+ "completionCommand", "lookupCommand", "inlinestatsCommand", "insistCommand",
+ "fuseCommand", "inferenceCommandOptions", "inferenceCommandOption", "inferenceCommandOptionValue",
+ "rerankCommand", "booleanExpression", "regexBooleanExpression", "matchBooleanExpression",
+ "valueExpression", "operatorExpression", "primaryExpression", "functionExpression",
+ "functionName", "mapExpression", "entryExpression", "constant", "booleanValue",
+ "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator",
+ "joinCommand", "joinTarget", "joinCondition", "joinPredicate"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
- null, "'completion'", "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'",
- "'from'", "'grok'", "'keep'", "'limit'", "'mv_expand'", "'rename'", "'row'",
- "'sample'", "'show'", "'sort'", "'stats'", "'where'", "'lookup'", "'change_point'",
- null, null, null, null, null, null, null, null, null, null, null, "'|'",
- null, null, null, "'and'", "'asc'", "'='", "'by'", "'::'", "':'", "','",
- "'desc'", "'.'", "'false'", "'first'", "'in'", "'is'", "'last'", "'like'",
- "'('", "'not'", "'null'", "'nulls'", "'on'", "'or'", "'?'", "'rlike'",
- "')'", "'true'", "'with'", "'=='", "'=~'", "'!='", "'<'", "'<='", "'>'",
- "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'{'", "'}'", "'??'", null,
- null, null, "']'", null, null, null, null, null, null, null, null, "'metadata'",
- null, null, null, null, null, null, null, null, "'as'", null, null, null,
- null, null, null, null, null, null, null, null, null, null, "'info'",
- null, null, null, null, null, null, null, null, null, null, null, null,
- null, "'join'", "'USING'"
+ null, null, null, null, "'change_point'", "'enrich'", null, "'completion'",
+ "'dissect'", "'eval'", "'grok'", "'limit'", "'row'", "'sample'", "'sort'",
+ "'stats'", "'where'", null, null, "'from'", null, "'fork'", null, "'lookup'",
+ null, null, null, null, "'mv_expand'", "'drop'", "'keep'", null, "'rename'",
+ "'show'", null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, "'|'", null, null, null,
+ "'and'", "'asc'", "'='", "'by'", "'::'", "':'", "','", "'desc'", "'.'",
+ "'false'", "'first'", "'in'", "'is'", "'last'", "'like'", "'not'", "'null'",
+ "'nulls'", "'on'", "'or'", "'?'", "'rlike'", "'true'", "'with'", "'=='",
+ "'=~'", "'!='", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'",
+ "'%'", "'{'", "'}'", "'??'", null, null, null, "']'", null, "')'", null,
+ null, null, null, null, "'metadata'", null, null, null, null, null, null,
+ null, "'join'", "'USING'", null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, "'as'", null, null,
+ null, "'info'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
- null, "COMPLETION", "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM",
- "GROK", "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SAMPLE", "SHOW",
- "SORT", "STATS", "WHERE", "JOIN_LOOKUP", "CHANGE_POINT", "DEV_INLINESTATS",
- "DEV_LOOKUP", "DEV_METRICS", "DEV_RERANK", "DEV_JOIN_FULL", "DEV_JOIN_LEFT",
- "DEV_JOIN_RIGHT", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT",
- "WS", "PIPE", "QUOTED_STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL",
- "AND", "ASC", "ASSIGN", "BY", "CAST_OP", "COLON", "COMMA", "DESC", "DOT",
- "FALSE", "FIRST", "IN", "IS", "LAST", "LIKE", "LP", "NOT", "NULL", "NULLS",
- "ON", "OR", "PARAM", "RLIKE", "RP", "TRUE", "WITH", "EQ", "CIEQ", "NEQ",
- "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT",
- "LEFT_BRACES", "RIGHT_BRACES", "DOUBLE_PARAMS", "NAMED_OR_POSITIONAL_PARAM",
+ null, "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "CHANGE_POINT", "ENRICH",
+ "DEV_EXPLAIN", "COMPLETION", "DISSECT", "EVAL", "GROK", "LIMIT", "ROW",
+ "SAMPLE", "SORT", "STATS", "WHERE", "DEV_INLINESTATS", "DEV_RERANK",
+ "FROM", "DEV_TIME_SERIES", "FORK", "DEV_FUSE", "JOIN_LOOKUP", "DEV_JOIN_FULL",
+ "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "DEV_LOOKUP", "MV_EXPAND", "DROP",
+ "KEEP", "DEV_INSIST", "RENAME", "SHOW", "UNKNOWN_CMD", "CHANGE_POINT_LINE_COMMENT",
+ "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS", "ENRICH_POLICY_NAME",
+ "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT",
+ "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "SETTING", "SETTING_LINE_COMMENT",
+ "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT",
+ "EXPLAIN_MULTILINE_COMMENT", "PIPE", "QUOTED_STRING", "INTEGER_LITERAL",
+ "DECIMAL_LITERAL", "AND", "ASC", "ASSIGN", "BY", "CAST_OP", "COLON",
+ "COMMA", "DESC", "DOT", "FALSE", "FIRST", "IN", "IS", "LAST", "LIKE",
+ "NOT", "NULL", "NULLS", "ON", "OR", "PARAM", "RLIKE", "TRUE", "WITH",
+ "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK",
+ "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES", "DOUBLE_PARAMS", "NAMED_OR_POSITIONAL_PARAM",
"NAMED_OR_POSITIONAL_DOUBLE_PARAMS", "OPENING_BRACKET", "CLOSING_BRACKET",
- "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT",
- "EXPR_WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT",
- "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT",
- "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT",
- "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT",
- "RENAME_WS", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT",
- "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT",
- "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT",
- "MVEXPAND_WS", "INFO", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT",
- "SHOW_WS", "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT",
- "SETTING_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT", "LOOKUP_WS",
+ "LP", "RP", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT",
+ "EXPR_MULTILINE_COMMENT", "EXPR_WS", "METADATA", "UNQUOTED_SOURCE", "FROM_LINE_COMMENT",
+ "FROM_MULTILINE_COMMENT", "FROM_WS", "FORK_WS", "FORK_LINE_COMMENT",
+ "FORK_MULTILINE_COMMENT", "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT",
+ "JOIN_WS", "LOOKUP_LINE_COMMENT", "LOOKUP_MULTILINE_COMMENT", "LOOKUP_WS",
"LOOKUP_FIELD_LINE_COMMENT", "LOOKUP_FIELD_MULTILINE_COMMENT", "LOOKUP_FIELD_WS",
- "JOIN", "USING", "JOIN_LINE_COMMENT", "JOIN_MULTILINE_COMMENT", "JOIN_WS",
- "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS", "CLOSING_METRICS_LINE_COMMENT",
- "CLOSING_METRICS_MULTILINE_COMMENT", "CLOSING_METRICS_WS", "CHANGE_POINT_LINE_COMMENT",
- "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS"
+ "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS",
+ "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS",
+ "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS",
+ "INFO", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", "SHOW_WS"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -242,9 +245,9 @@ public final SingleStatementContext singleStatement() throws RecognitionExceptio
try {
enterOuterAlt(_localctx, 1);
{
- setState(162);
+ setState(174);
query(0);
- setState(163);
+ setState(175);
match(EOF);
}
}
@@ -340,11 +343,11 @@ private QueryContext query(int _p) throws RecognitionException {
_ctx = _localctx;
_prevctx = _localctx;
- setState(166);
+ setState(178);
sourceCommand();
}
_ctx.stop = _input.LT(-1);
- setState(173);
+ setState(185);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,0,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
@@ -355,16 +358,16 @@ private QueryContext query(int _p) throws RecognitionException {
{
_localctx = new CompositeQueryContext(new QueryContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_query);
- setState(168);
+ setState(180);
if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(169);
+ setState(181);
match(PIPE);
- setState(170);
+ setState(182);
processingCommand();
}
}
}
- setState(175);
+ setState(187);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,0,_ctx);
}
@@ -383,9 +386,6 @@ private QueryContext query(int _p) throws RecognitionException {
@SuppressWarnings("CheckReturnValue")
public static class SourceCommandContext extends ParserRuleContext {
- public ExplainCommandContext explainCommand() {
- return getRuleContext(ExplainCommandContext.class,0);
- }
public FromCommandContext fromCommand() {
return getRuleContext(FromCommandContext.class,0);
}
@@ -395,8 +395,11 @@ public RowCommandContext rowCommand() {
public ShowCommandContext showCommand() {
return getRuleContext(ShowCommandContext.class,0);
}
- public MetricsCommandContext metricsCommand() {
- return getRuleContext(MetricsCommandContext.class,0);
+ public TimeSeriesCommandContext timeSeriesCommand() {
+ return getRuleContext(TimeSeriesCommandContext.class,0);
+ }
+ public ExplainCommandContext explainCommand() {
+ return getRuleContext(ExplainCommandContext.class,0);
}
@SuppressWarnings("this-escape")
public SourceCommandContext(ParserRuleContext parent, int invokingState) {
@@ -422,44 +425,46 @@ public final SourceCommandContext sourceCommand() throws RecognitionException {
SourceCommandContext _localctx = new SourceCommandContext(_ctx, getState());
enterRule(_localctx, 4, RULE_sourceCommand);
try {
- setState(182);
+ setState(195);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(176);
- explainCommand();
+ setState(188);
+ fromCommand();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(177);
- fromCommand();
+ setState(189);
+ rowCommand();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(178);
- rowCommand();
+ setState(190);
+ showCommand();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(179);
- showCommand();
+ setState(191);
+ if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
+ setState(192);
+ timeSeriesCommand();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(180);
+ setState(193);
if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
- setState(181);
- metricsCommand();
+ setState(194);
+ explainCommand();
}
break;
}
@@ -525,15 +530,24 @@ public CompletionCommandContext completionCommand() {
public SampleCommandContext sampleCommand() {
return getRuleContext(SampleCommandContext.class,0);
}
+ public ForkCommandContext forkCommand() {
+ return getRuleContext(ForkCommandContext.class,0);
+ }
public InlinestatsCommandContext inlinestatsCommand() {
return getRuleContext(InlinestatsCommandContext.class,0);
}
public LookupCommandContext lookupCommand() {
return getRuleContext(LookupCommandContext.class,0);
}
+ public InsistCommandContext insistCommand() {
+ return getRuleContext(InsistCommandContext.class,0);
+ }
public RerankCommandContext rerankCommand() {
return getRuleContext(RerankCommandContext.class,0);
}
+ public FuseCommandContext fuseCommand() {
+ return getRuleContext(FuseCommandContext.class,0);
+ }
@SuppressWarnings("this-escape")
public ProcessingCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@@ -558,148 +572,173 @@ public final ProcessingCommandContext processingCommand() throws RecognitionExce
ProcessingCommandContext _localctx = new ProcessingCommandContext(_ctx, getState());
enterRule(_localctx, 6, RULE_processingCommand);
try {
- setState(206);
+ setState(224);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(184);
+ setState(197);
evalCommand();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(185);
+ setState(198);
whereCommand();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(186);
+ setState(199);
keepCommand();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(187);
+ setState(200);
limitCommand();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(188);
+ setState(201);
statsCommand();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(189);
+ setState(202);
sortCommand();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(190);
+ setState(203);
dropCommand();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(191);
+ setState(204);
renameCommand();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(192);
+ setState(205);
dissectCommand();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(193);
+ setState(206);
grokCommand();
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(194);
+ setState(207);
enrichCommand();
}
break;
case 12:
enterOuterAlt(_localctx, 12);
{
- setState(195);
+ setState(208);
mvExpandCommand();
}
break;
case 13:
enterOuterAlt(_localctx, 13);
{
- setState(196);
+ setState(209);
joinCommand();
}
break;
case 14:
enterOuterAlt(_localctx, 14);
{
- setState(197);
+ setState(210);
changePointCommand();
}
break;
case 15:
enterOuterAlt(_localctx, 15);
{
- setState(198);
+ setState(211);
completionCommand();
}
break;
case 16:
enterOuterAlt(_localctx, 16);
{
- setState(199);
+ setState(212);
sampleCommand();
}
break;
case 17:
enterOuterAlt(_localctx, 17);
{
- setState(200);
- if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
- setState(201);
- inlinestatsCommand();
+ setState(213);
+ forkCommand();
}
break;
case 18:
enterOuterAlt(_localctx, 18);
{
- setState(202);
+ setState(214);
if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
- setState(203);
- lookupCommand();
+ setState(215);
+ inlinestatsCommand();
}
break;
case 19:
enterOuterAlt(_localctx, 19);
{
- setState(204);
+ setState(216);
if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
- setState(205);
+ setState(217);
+ lookupCommand();
+ }
+ break;
+ case 20:
+ enterOuterAlt(_localctx, 20);
+ {
+ setState(218);
+ if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
+ setState(219);
+ insistCommand();
+ }
+ break;
+ case 21:
+ enterOuterAlt(_localctx, 21);
+ {
+ setState(220);
+ if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
+ setState(221);
rerankCommand();
}
break;
+ case 22:
+ enterOuterAlt(_localctx, 22);
+ {
+ setState(222);
+ if (!(this.isDevVersion())) throw new FailedPredicateException(this, "this.isDevVersion()");
+ setState(223);
+ fuseCommand();
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -745,9 +784,9 @@ public final WhereCommandContext whereCommand() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(208);
+ setState(226);
match(WHERE);
- setState(209);
+ setState(227);
booleanExpression(0);
}
}
@@ -763,359 +802,170 @@ public final WhereCommandContext whereCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class BooleanExpressionContext extends ParserRuleContext {
+ public static class DataTypeContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public BooleanExpressionContext(ParserRuleContext parent, int invokingState) {
+ public DataTypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_booleanExpression; }
+ @Override public int getRuleIndex() { return RULE_dataType; }
@SuppressWarnings("this-escape")
- public BooleanExpressionContext() { }
- public void copyFrom(BooleanExpressionContext ctx) {
+ public DataTypeContext() { }
+ public void copyFrom(DataTypeContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
- public static class MatchExpressionContext extends BooleanExpressionContext {
- public MatchBooleanExpressionContext matchBooleanExpression() {
- return getRuleContext(MatchBooleanExpressionContext.class,0);
+ public static class ToDataTypeContext extends DataTypeContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
}
@SuppressWarnings("this-escape")
- public MatchExpressionContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
+ public ToDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMatchExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterToDataType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMatchExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitToDataType(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMatchExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitToDataType(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class LogicalNotContext extends BooleanExpressionContext {
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalNot(this);
+
+ public final DataTypeContext dataType() throws RecognitionException {
+ DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_dataType);
+ try {
+ _localctx = new ToDataTypeContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(229);
+ identifier();
+ }
}
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalNot(this);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalNot(this);
- else return visitor.visitChildren(this);
+ finally {
+ exitRule();
}
+ return _localctx;
}
+
@SuppressWarnings("CheckReturnValue")
- public static class BooleanDefaultContext extends BooleanExpressionContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
+ public static class RowCommandContext extends ParserRuleContext {
+ public TerminalNode ROW() { return getToken(EsqlBaseParser.ROW, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
}
@SuppressWarnings("this-escape")
- public BooleanDefaultContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanDefault(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanDefault(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanDefault(this);
- else return visitor.visitChildren(this);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class IsNullContext extends BooleanExpressionContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
+ public RowCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public TerminalNode IS() { return getToken(EsqlBaseParser.IS, 0); }
- public TerminalNode NULL() { return getToken(EsqlBaseParser.NULL, 0); }
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
- @SuppressWarnings("this-escape")
- public IsNullContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
+ @Override public int getRuleIndex() { return RULE_rowCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIsNull(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRowCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIsNull(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRowCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIsNull(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRowCommand(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class RegexExpressionContext extends BooleanExpressionContext {
- public RegexBooleanExpressionContext regexBooleanExpression() {
- return getRuleContext(RegexBooleanExpressionContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public RegexExpressionContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRegexExpression(this);
+
+ public final RowCommandContext rowCommand() throws RecognitionException {
+ RowCommandContext _localctx = new RowCommandContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_rowCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(231);
+ match(ROW);
+ setState(232);
+ fields();
+ }
}
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRegexExpression(this);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRegexExpression(this);
- else return visitor.visitChildren(this);
+ finally {
+ exitRule();
}
+ return _localctx;
}
+
@SuppressWarnings("CheckReturnValue")
- public static class LogicalInContext extends BooleanExpressionContext {
- public List valueExpression() {
- return getRuleContexts(ValueExpressionContext.class);
+ public static class FieldsContext extends ParserRuleContext {
+ public List field() {
+ return getRuleContexts(FieldContext.class);
}
- public ValueExpressionContext valueExpression(int i) {
- return getRuleContext(ValueExpressionContext.class,i);
+ public FieldContext field(int i) {
+ return getRuleContext(FieldContext.class,i);
}
- public TerminalNode IN() { return getToken(EsqlBaseParser.IN, 0); }
- public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
- public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public LogicalInContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
+ public FieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fields; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalIn(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFields(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalIn(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFields(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalIn(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFields(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class LogicalBinaryContext extends BooleanExpressionContext {
- public BooleanExpressionContext left;
- public Token operator;
- public BooleanExpressionContext right;
- public List booleanExpression() {
- return getRuleContexts(BooleanExpressionContext.class);
- }
- public BooleanExpressionContext booleanExpression(int i) {
- return getRuleContext(BooleanExpressionContext.class,i);
- }
- public TerminalNode AND() { return getToken(EsqlBaseParser.AND, 0); }
- public TerminalNode OR() { return getToken(EsqlBaseParser.OR, 0); }
- @SuppressWarnings("this-escape")
- public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalBinary(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalBinary(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalBinary(this);
- else return visitor.visitChildren(this);
- }
- }
-
- public final BooleanExpressionContext booleanExpression() throws RecognitionException {
- return booleanExpression(0);
- }
- private BooleanExpressionContext booleanExpression(int _p) throws RecognitionException {
- ParserRuleContext _parentctx = _ctx;
- int _parentState = getState();
- BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState);
- BooleanExpressionContext _prevctx = _localctx;
- int _startState = 10;
- enterRecursionRule(_localctx, 10, RULE_booleanExpression, _p);
- int _la;
+ public final FieldsContext fields() throws RecognitionException {
+ FieldsContext _localctx = new FieldsContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_fields);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(240);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
- case 1:
- {
- _localctx = new LogicalNotContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
-
- setState(212);
- match(NOT);
- setState(213);
- booleanExpression(8);
- }
- break;
- case 2:
- {
- _localctx = new BooleanDefaultContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(214);
- valueExpression();
- }
- break;
- case 3:
- {
- _localctx = new RegexExpressionContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(215);
- regexBooleanExpression();
- }
- break;
- case 4:
- {
- _localctx = new LogicalInContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(216);
- valueExpression();
- setState(218);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(217);
- match(NOT);
- }
- }
-
- setState(220);
- match(IN);
- setState(221);
- match(LP);
- setState(222);
- valueExpression();
- setState(227);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(223);
- match(COMMA);
- setState(224);
- valueExpression();
- }
- }
- setState(229);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(230);
- match(RP);
- }
- break;
- case 5:
- {
- _localctx = new IsNullContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(232);
- valueExpression();
- setState(233);
- match(IS);
- setState(235);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(234);
- match(NOT);
- }
- }
-
- setState(237);
- match(NULL);
- }
- break;
- case 6:
- {
- _localctx = new MatchExpressionContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(239);
- matchBooleanExpression();
- }
- break;
- }
- _ctx.stop = _input.LT(-1);
- setState(250);
+ setState(234);
+ field();
+ setState(239);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,3,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
- if ( _parseListeners!=null ) triggerExitRuleEvent();
- _prevctx = _localctx;
{
- setState(248);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
- case 1:
- {
- _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
- ((LogicalBinaryContext)_localctx).left = _prevctx;
- pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(242);
- if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
- setState(243);
- ((LogicalBinaryContext)_localctx).operator = match(AND);
- setState(244);
- ((LogicalBinaryContext)_localctx).right = booleanExpression(6);
- }
- break;
- case 2:
- {
- _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
- ((LogicalBinaryContext)_localctx).left = _prevctx;
- pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
- setState(245);
- if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
- setState(246);
- ((LogicalBinaryContext)_localctx).operator = match(OR);
- setState(247);
- ((LogicalBinaryContext)_localctx).right = booleanExpression(5);
- }
- break;
+ {
+ setState(235);
+ match(COMMA);
+ setState(236);
+ field();
}
}
}
- setState(252);
+ setState(241);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,3,_ctx);
}
}
}
@@ -1125,207 +975,132 @@ private BooleanExpressionContext booleanExpression(int _p) throws RecognitionExc
_errHandler.recover(this, re);
}
finally {
- unrollRecursionContexts(_parentctx);
+ exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class RegexBooleanExpressionContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public RegexBooleanExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_regexBooleanExpression; }
-
- @SuppressWarnings("this-escape")
- public RegexBooleanExpressionContext() { }
- public void copyFrom(RegexBooleanExpressionContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class LikeExpressionContext extends RegexBooleanExpressionContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
+ public static class FieldContext extends ParserRuleContext {
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
}
- public TerminalNode LIKE() { return getToken(EsqlBaseParser.LIKE, 0); }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
}
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
@SuppressWarnings("this-escape")
- public LikeExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
+ public FieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_field; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLikeExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterField(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLikeExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitField(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLikeExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitField(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class LikeListExpressionContext extends RegexBooleanExpressionContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
+
+ public final FieldContext field() throws RecognitionException {
+ FieldContext _localctx = new FieldContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_field);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(245);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
+ case 1:
+ {
+ setState(242);
+ qualifiedName();
+ setState(243);
+ match(ASSIGN);
+ }
+ break;
+ }
+ setState(247);
+ booleanExpression(0);
+ }
}
- public TerminalNode LIKE() { return getToken(EsqlBaseParser.LIKE, 0); }
- public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
- public List string() {
- return getRuleContexts(StringContext.class);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- public StringContext string(int i) {
- return getRuleContext(StringContext.class,i);
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RerankFieldsContext extends ParserRuleContext {
+ public List rerankField() {
+ return getRuleContexts(RerankFieldContext.class);
+ }
+ public RerankFieldContext rerankField(int i) {
+ return getRuleContext(RerankFieldContext.class,i);
}
- public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public LikeListExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
+ public RerankFieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_rerankFields; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLikeListExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankFields(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLikeListExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankFields(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLikeListExpression(this);
- else return visitor.visitChildren(this);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class RlikeExpressionContext extends RegexBooleanExpressionContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
- }
- public TerminalNode RLIKE() { return getToken(EsqlBaseParser.RLIKE, 0); }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
- }
- public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
- @SuppressWarnings("this-escape")
- public RlikeExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRlikeExpression(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRlikeExpression(this);
- }
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRlikeExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankFields(this);
else return visitor.visitChildren(this);
}
}
- public final RegexBooleanExpressionContext regexBooleanExpression() throws RecognitionException {
- RegexBooleanExpressionContext _localctx = new RegexBooleanExpressionContext(_ctx, getState());
- enterRule(_localctx, 12, RULE_regexBooleanExpression);
- int _la;
+ public final RerankFieldsContext rerankFields() throws RecognitionException {
+ RerankFieldsContext _localctx = new RerankFieldsContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_rerankFields);
try {
- setState(283);
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(249);
+ rerankField();
+ setState(254);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
- case 1:
- _localctx = new LikeExpressionContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(253);
- valueExpression();
- setState(255);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(254);
- match(NOT);
- }
- }
-
- setState(257);
- match(LIKE);
- setState(258);
- string();
- }
- break;
- case 2:
- _localctx = new RlikeExpressionContext(_localctx);
- enterOuterAlt(_localctx, 2);
- {
- setState(260);
- valueExpression();
- setState(262);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(261);
- match(NOT);
- }
- }
-
- setState(264);
- match(RLIKE);
- setState(265);
- string();
- }
- break;
- case 3:
- _localctx = new LikeListExpressionContext(_localctx);
- enterOuterAlt(_localctx, 3);
- {
- setState(267);
- valueExpression();
- setState(269);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==NOT) {
- {
- setState(268);
- match(NOT);
- }
- }
-
- setState(271);
- match(LIKE);
- setState(272);
- match(LP);
- setState(273);
- string();
- setState(278);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
{
{
- setState(274);
+ setState(250);
match(COMMA);
- setState(275);
- string();
- }
+ setState(251);
+ rerankField();
}
- setState(280);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(281);
- match(RP);
+ }
}
- break;
+ setState(256);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -1340,66 +1115,54 @@ public final RegexBooleanExpressionContext regexBooleanExpression() throws Recog
}
@SuppressWarnings("CheckReturnValue")
- public static class MatchBooleanExpressionContext extends ParserRuleContext {
- public QualifiedNameContext fieldExp;
- public DataTypeContext fieldType;
- public ConstantContext matchQuery;
- public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
+ public static class RerankFieldContext extends ParserRuleContext {
public QualifiedNameContext qualifiedName() {
return getRuleContext(QualifiedNameContext.class,0);
}
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
- }
- public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
- public DataTypeContext dataType() {
- return getRuleContext(DataTypeContext.class,0);
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public MatchBooleanExpressionContext(ParserRuleContext parent, int invokingState) {
+ public RerankFieldContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_matchBooleanExpression; }
+ @Override public int getRuleIndex() { return RULE_rerankField; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMatchBooleanExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankField(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMatchBooleanExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankField(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMatchBooleanExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankField(this);
else return visitor.visitChildren(this);
}
}
- public final MatchBooleanExpressionContext matchBooleanExpression() throws RecognitionException {
- MatchBooleanExpressionContext _localctx = new MatchBooleanExpressionContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_matchBooleanExpression);
- int _la;
+ public final RerankFieldContext rerankField() throws RecognitionException {
+ RerankFieldContext _localctx = new RerankFieldContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_rerankField);
try {
enterOuterAlt(_localctx, 1);
{
- setState(285);
- ((MatchBooleanExpressionContext)_localctx).fieldExp = qualifiedName();
- setState(288);
+ setState(257);
+ qualifiedName();
+ setState(260);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==CAST_OP) {
+ switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+ case 1:
{
- setState(286);
- match(CAST_OP);
- setState(287);
- ((MatchBooleanExpressionContext)_localctx).fieldType = dataType();
+ setState(258);
+ match(ASSIGN);
+ setState(259);
+ booleanExpression(0);
}
+ break;
}
-
- setState(290);
- match(COLON);
- setState(291);
- ((MatchBooleanExpressionContext)_localctx).matchQuery = constant();
}
}
catch (RecognitionException re) {
@@ -1414,97 +1177,90 @@ public final MatchBooleanExpressionContext matchBooleanExpression() throws Recog
}
@SuppressWarnings("CheckReturnValue")
- public static class ValueExpressionContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ValueExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class FromCommandContext extends ParserRuleContext {
+ public TerminalNode FROM() { return getToken(EsqlBaseParser.FROM, 0); }
+ public IndexPatternAndMetadataFieldsContext indexPatternAndMetadataFields() {
+ return getRuleContext(IndexPatternAndMetadataFieldsContext.class,0);
}
- @Override public int getRuleIndex() { return RULE_valueExpression; }
-
@SuppressWarnings("this-escape")
- public ValueExpressionContext() { }
- public void copyFrom(ValueExpressionContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class ValueExpressionDefaultContext extends ValueExpressionContext {
- public OperatorExpressionContext operatorExpression() {
- return getRuleContext(OperatorExpressionContext.class,0);
+ public FromCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- @SuppressWarnings("this-escape")
- public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); }
+ @Override public int getRuleIndex() { return RULE_fromCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterValueExpressionDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFromCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitValueExpressionDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFromCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitValueExpressionDefault(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFromCommand(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class ComparisonContext extends ValueExpressionContext {
- public OperatorExpressionContext left;
- public OperatorExpressionContext right;
- public ComparisonOperatorContext comparisonOperator() {
- return getRuleContext(ComparisonOperatorContext.class,0);
+
+ public final FromCommandContext fromCommand() throws RecognitionException {
+ FromCommandContext _localctx = new FromCommandContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_fromCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(262);
+ match(FROM);
+ setState(263);
+ indexPatternAndMetadataFields();
+ }
}
- public List operatorExpression() {
- return getRuleContexts(OperatorExpressionContext.class);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- public OperatorExpressionContext operatorExpression(int i) {
- return getRuleContext(OperatorExpressionContext.class,i);
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TimeSeriesCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_TIME_SERIES() { return getToken(EsqlBaseParser.DEV_TIME_SERIES, 0); }
+ public IndexPatternAndMetadataFieldsContext indexPatternAndMetadataFields() {
+ return getRuleContext(IndexPatternAndMetadataFieldsContext.class,0);
}
@SuppressWarnings("this-escape")
- public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); }
+ public TimeSeriesCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_timeSeriesCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterComparison(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterTimeSeriesCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitComparison(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitTimeSeriesCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitComparison(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitTimeSeriesCommand(this);
else return visitor.visitChildren(this);
}
}
- public final ValueExpressionContext valueExpression() throws RecognitionException {
- ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_valueExpression);
+ public final TimeSeriesCommandContext timeSeriesCommand() throws RecognitionException {
+ TimeSeriesCommandContext _localctx = new TimeSeriesCommandContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_timeSeriesCommand);
try {
- setState(298);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
- case 1:
- _localctx = new ValueExpressionDefaultContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(293);
- operatorExpression(0);
- }
- break;
- case 2:
- _localctx = new ComparisonContext(_localctx);
- enterOuterAlt(_localctx, 2);
- {
- setState(294);
- ((ComparisonContext)_localctx).left = operatorExpression(0);
- setState(295);
- comparisonOperator();
- setState(296);
- ((ComparisonContext)_localctx).right = operatorExpression(0);
- }
- break;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(265);
+ match(DEV_TIME_SERIES);
+ setState(266);
+ indexPatternAndMetadataFields();
}
}
catch (RecognitionException re) {
@@ -1519,210 +1275,162 @@ public final ValueExpressionContext valueExpression() throws RecognitionExceptio
}
@SuppressWarnings("CheckReturnValue")
- public static class OperatorExpressionContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public OperatorExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class IndexPatternAndMetadataFieldsContext extends ParserRuleContext {
+ public List indexPattern() {
+ return getRuleContexts(IndexPatternContext.class);
}
- @Override public int getRuleIndex() { return RULE_operatorExpression; }
-
- @SuppressWarnings("this-escape")
- public OperatorExpressionContext() { }
- public void copyFrom(OperatorExpressionContext ctx) {
- super.copyFrom(ctx);
+ public IndexPatternContext indexPattern(int i) {
+ return getRuleContext(IndexPatternContext.class,i);
}
- }
- @SuppressWarnings("CheckReturnValue")
- public static class OperatorExpressionDefaultContext extends OperatorExpressionContext {
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ public MetadataContext metadata() {
+ return getRuleContext(MetadataContext.class,0);
}
@SuppressWarnings("this-escape")
- public OperatorExpressionDefaultContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
+ public IndexPatternAndMetadataFieldsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexPatternAndMetadataFields; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOperatorExpressionDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexPatternAndMetadataFields(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOperatorExpressionDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexPatternAndMetadataFields(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOperatorExpressionDefault(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexPatternAndMetadataFields(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class ArithmeticBinaryContext extends OperatorExpressionContext {
- public OperatorExpressionContext left;
- public Token operator;
- public OperatorExpressionContext right;
- public List operatorExpression() {
- return getRuleContexts(OperatorExpressionContext.class);
- }
- public OperatorExpressionContext operatorExpression(int i) {
- return getRuleContext(OperatorExpressionContext.class,i);
- }
- public TerminalNode ASTERISK() { return getToken(EsqlBaseParser.ASTERISK, 0); }
- public TerminalNode SLASH() { return getToken(EsqlBaseParser.SLASH, 0); }
- public TerminalNode PERCENT() { return getToken(EsqlBaseParser.PERCENT, 0); }
- public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
- public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
- @SuppressWarnings("this-escape")
- public ArithmeticBinaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterArithmeticBinary(this);
+
+ public final IndexPatternAndMetadataFieldsContext indexPatternAndMetadataFields() throws RecognitionException {
+ IndexPatternAndMetadataFieldsContext _localctx = new IndexPatternAndMetadataFieldsContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_indexPatternAndMetadataFields);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(268);
+ indexPattern();
+ setState(273);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(269);
+ match(COMMA);
+ setState(270);
+ indexPattern();
+ }
+ }
+ }
+ setState(275);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+ }
+ setState(277);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
+ case 1:
+ {
+ setState(276);
+ metadata();
+ }
+ break;
+ }
+ }
}
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitArithmeticBinary(this);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitArithmeticBinary(this);
- else return visitor.visitChildren(this);
+ finally {
+ exitRule();
}
+ return _localctx;
}
+
@SuppressWarnings("CheckReturnValue")
- public static class ArithmeticUnaryContext extends OperatorExpressionContext {
- public Token operator;
- public OperatorExpressionContext operatorExpression() {
- return getRuleContext(OperatorExpressionContext.class,0);
+ public static class IndexPatternContext extends ParserRuleContext {
+ public ClusterStringContext clusterString() {
+ return getRuleContext(ClusterStringContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
+ public UnquotedIndexStringContext unquotedIndexString() {
+ return getRuleContext(UnquotedIndexStringContext.class,0);
+ }
+ public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
+ public SelectorStringContext selectorString() {
+ return getRuleContext(SelectorStringContext.class,0);
+ }
+ public IndexStringContext indexString() {
+ return getRuleContext(IndexStringContext.class,0);
}
- public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
- public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
@SuppressWarnings("this-escape")
- public ArithmeticUnaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
+ public IndexPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexPattern; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterArithmeticUnary(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexPattern(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitArithmeticUnary(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexPattern(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitArithmeticUnary(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexPattern(this);
else return visitor.visitChildren(this);
}
}
- public final OperatorExpressionContext operatorExpression() throws RecognitionException {
- return operatorExpression(0);
- }
-
- private OperatorExpressionContext operatorExpression(int _p) throws RecognitionException {
- ParserRuleContext _parentctx = _ctx;
- int _parentState = getState();
- OperatorExpressionContext _localctx = new OperatorExpressionContext(_ctx, _parentState);
- OperatorExpressionContext _prevctx = _localctx;
- int _startState = 18;
- enterRecursionRule(_localctx, 18, RULE_operatorExpression, _p);
- int _la;
+ public final IndexPatternContext indexPattern() throws RecognitionException {
+ IndexPatternContext _localctx = new IndexPatternContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_indexPattern);
try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(304);
+ setState(288);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
case 1:
+ enterOuterAlt(_localctx, 1);
{
- _localctx = new OperatorExpressionDefaultContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
-
- setState(301);
- primaryExpression(0);
+ setState(279);
+ clusterString();
+ setState(280);
+ match(COLON);
+ setState(281);
+ unquotedIndexString();
}
break;
case 2:
+ enterOuterAlt(_localctx, 2);
{
- _localctx = new ArithmeticUnaryContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(302);
- ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==PLUS || _la==MINUS) ) {
- ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- setState(303);
- operatorExpression(3);
+ setState(283);
+ unquotedIndexString();
+ setState(284);
+ match(CAST_OP);
+ setState(285);
+ selectorString();
}
break;
- }
- _ctx.stop = _input.LT(-1);
- setState(314);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- if ( _parseListeners!=null ) triggerExitRuleEvent();
- _prevctx = _localctx;
- {
- setState(312);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
- case 1:
- {
- _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
- ((ArithmeticBinaryContext)_localctx).left = _prevctx;
- pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
- setState(306);
- if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(307);
- ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
- _la = _input.LA(1);
- if ( !(((((_la - 71)) & ~0x3f) == 0 && ((1L << (_la - 71)) & 7L) != 0)) ) {
- ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- setState(308);
- ((ArithmeticBinaryContext)_localctx).right = operatorExpression(3);
- }
- break;
- case 2:
- {
- _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
- ((ArithmeticBinaryContext)_localctx).left = _prevctx;
- pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
- setState(309);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(310);
- ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==PLUS || _la==MINUS) ) {
- ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- setState(311);
- ((ArithmeticBinaryContext)_localctx).right = operatorExpression(2);
- }
- break;
- }
- }
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(287);
+ indexString();
}
- setState(316);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,18,_ctx);
- }
+ break;
}
}
catch (RecognitionException re) {
@@ -1731,221 +1439,256 @@ private OperatorExpressionContext operatorExpression(int _p) throws RecognitionE
_errHandler.recover(this, re);
}
finally {
- unrollRecursionContexts(_parentctx);
+ exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class PrimaryExpressionContext extends ParserRuleContext {
+ public static class ClusterStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
@SuppressWarnings("this-escape")
- public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) {
+ public ClusterStringContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_primaryExpression; }
-
- @SuppressWarnings("this-escape")
- public PrimaryExpressionContext() { }
- public void copyFrom(PrimaryExpressionContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class DereferenceContext extends PrimaryExpressionContext {
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override public int getRuleIndex() { return RULE_clusterString; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDereference(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterClusterString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDereference(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitClusterString(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDereference(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitClusterString(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class InlineCastContext extends PrimaryExpressionContext {
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
+
+ public final ClusterStringContext clusterString() throws RecognitionException {
+ ClusterStringContext _localctx = new ClusterStringContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_clusterString);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(290);
+ match(UNQUOTED_SOURCE);
+ }
}
- public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
- public DataTypeContext dataType() {
- return getRuleContext(DataTypeContext.class,0);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
}
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectorStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
@SuppressWarnings("this-escape")
- public InlineCastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ public SelectorStringContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectorString; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlineCast(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSelectorString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlineCast(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSelectorString(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlineCast(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSelectorString(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class ConstantDefaultContext extends PrimaryExpressionContext {
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
+
+ public final SelectorStringContext selectorString() throws RecognitionException {
+ SelectorStringContext _localctx = new SelectorStringContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_selectorString);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(292);
+ match(UNQUOTED_SOURCE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
}
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnquotedIndexStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
@SuppressWarnings("this-escape")
- public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ public UnquotedIndexStringContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unquotedIndexString; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterConstantDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterUnquotedIndexString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitConstantDefault(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitUnquotedIndexString(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitConstantDefault(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitUnquotedIndexString(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class ParenthesizedExpressionContext extends PrimaryExpressionContext {
- public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
+
+ public final UnquotedIndexStringContext unquotedIndexString() throws RecognitionException {
+ UnquotedIndexStringContext _localctx = new UnquotedIndexStringContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_unquotedIndexString);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(294);
+ match(UNQUOTED_SOURCE);
+ }
}
- public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IndexStringContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
@SuppressWarnings("this-escape")
- public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ public IndexStringContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_indexString; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterParenthesizedExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitParenthesizedExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexString(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitParenthesizedExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexString(this);
else return visitor.visitChildren(this);
}
}
+
+ public final IndexStringContext indexString() throws RecognitionException {
+ IndexStringContext _localctx = new IndexStringContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_indexString);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(296);
+ _la = _input.LA(1);
+ if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
- public static class FunctionContext extends PrimaryExpressionContext {
- public FunctionExpressionContext functionExpression() {
- return getRuleContext(FunctionExpressionContext.class,0);
+ public static class MetadataContext extends ParserRuleContext {
+ public TerminalNode METADATA() { return getToken(EsqlBaseParser.METADATA, 0); }
+ public List UNQUOTED_SOURCE() { return getTokens(EsqlBaseParser.UNQUOTED_SOURCE); }
+ public TerminalNode UNQUOTED_SOURCE(int i) {
+ return getToken(EsqlBaseParser.UNQUOTED_SOURCE, i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public FunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ public MetadataContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_metadata; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunction(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetadata(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunction(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetadata(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunction(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetadata(this);
else return visitor.visitChildren(this);
}
}
- public final PrimaryExpressionContext primaryExpression() throws RecognitionException {
- return primaryExpression(0);
- }
-
- private PrimaryExpressionContext primaryExpression(int _p) throws RecognitionException {
- ParserRuleContext _parentctx = _ctx;
- int _parentState = getState();
- PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, _parentState);
- PrimaryExpressionContext _prevctx = _localctx;
- int _startState = 20;
- enterRecursionRule(_localctx, 20, RULE_primaryExpression, _p);
+ public final MetadataContext metadata() throws RecognitionException {
+ MetadataContext _localctx = new MetadataContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_metadata);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(325);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
- case 1:
- {
- _localctx = new ConstantDefaultContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
-
- setState(318);
- constant();
- }
- break;
- case 2:
- {
- _localctx = new DereferenceContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(319);
- qualifiedName();
- }
- break;
- case 3:
- {
- _localctx = new FunctionContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(320);
- functionExpression();
- }
- break;
- case 4:
- {
- _localctx = new ParenthesizedExpressionContext(_localctx);
- _ctx = _localctx;
- _prevctx = _localctx;
- setState(321);
- match(LP);
- setState(322);
- booleanExpression(0);
- setState(323);
- match(RP);
- }
- break;
- }
- _ctx.stop = _input.LT(-1);
- setState(332);
+ setState(298);
+ match(METADATA);
+ setState(299);
+ match(UNQUOTED_SOURCE);
+ setState(304);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,20,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,10,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
- if ( _parseListeners!=null ) triggerExitRuleEvent();
- _prevctx = _localctx;
{
{
- _localctx = new InlineCastContext(new PrimaryExpressionContext(_parentctx, _parentState));
- pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression);
- setState(327);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(328);
- match(CAST_OP);
- setState(329);
- dataType();
+ setState(300);
+ match(COMMA);
+ setState(301);
+ match(UNQUOTED_SOURCE);
}
}
}
- setState(334);
+ setState(306);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,20,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,10,_ctx);
}
}
}
@@ -1955,134 +1698,47 @@ private PrimaryExpressionContext primaryExpression(int _p) throws RecognitionExc
_errHandler.recover(this, re);
}
finally {
- unrollRecursionContexts(_parentctx);
+ exitRule();
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class FunctionExpressionContext extends ParserRuleContext {
- public FunctionNameContext functionName() {
- return getRuleContext(FunctionNameContext.class,0);
- }
- public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
- public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
- public TerminalNode ASTERISK() { return getToken(EsqlBaseParser.ASTERISK, 0); }
- public List booleanExpression() {
- return getRuleContexts(BooleanExpressionContext.class);
- }
- public BooleanExpressionContext booleanExpression(int i) {
- return getRuleContext(BooleanExpressionContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- public MapExpressionContext mapExpression() {
- return getRuleContext(MapExpressionContext.class,0);
+ public static class EvalCommandContext extends ParserRuleContext {
+ public TerminalNode EVAL() { return getToken(EsqlBaseParser.EVAL, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
}
@SuppressWarnings("this-escape")
- public FunctionExpressionContext(ParserRuleContext parent, int invokingState) {
+ public EvalCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_functionExpression; }
+ @Override public int getRuleIndex() { return RULE_evalCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunctionExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEvalCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunctionExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEvalCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunctionExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEvalCommand(this);
else return visitor.visitChildren(this);
}
}
- public final FunctionExpressionContext functionExpression() throws RecognitionException {
- FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_functionExpression);
- int _la;
+ public final EvalCommandContext evalCommand() throws RecognitionException {
+ EvalCommandContext _localctx = new EvalCommandContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_evalCommand);
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(335);
- functionName();
- setState(336);
- match(LP);
- setState(350);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case ASTERISK:
- {
- setState(337);
- match(ASTERISK);
- }
- break;
- case QUOTED_STRING:
- case INTEGER_LITERAL:
- case DECIMAL_LITERAL:
- case FALSE:
- case LP:
- case NOT:
- case NULL:
- case PARAM:
- case TRUE:
- case PLUS:
- case MINUS:
- case DOUBLE_PARAMS:
- case NAMED_OR_POSITIONAL_PARAM:
- case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
- case OPENING_BRACKET:
- case UNQUOTED_IDENTIFIER:
- case QUOTED_IDENTIFIER:
- {
- {
- setState(338);
- booleanExpression(0);
- setState(343);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,21,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(339);
- match(COMMA);
- setState(340);
- booleanExpression(0);
- }
- }
- }
- setState(345);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,21,_ctx);
- }
- setState(348);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==COMMA) {
- {
- setState(346);
- match(COMMA);
- setState(347);
- mapExpression();
- }
- }
-
- }
- }
- break;
- case RP:
- break;
- default:
- break;
- }
- setState(352);
- match(RP);
+ setState(307);
+ match(EVAL);
+ setState(308);
+ fields();
}
}
catch (RecognitionException re) {
@@ -2097,38 +1753,67 @@ public final FunctionExpressionContext functionExpression() throws RecognitionEx
}
@SuppressWarnings("CheckReturnValue")
- public static class FunctionNameContext extends ParserRuleContext {
- public IdentifierOrParameterContext identifierOrParameter() {
- return getRuleContext(IdentifierOrParameterContext.class,0);
+ public static class StatsCommandContext extends ParserRuleContext {
+ public AggFieldsContext stats;
+ public FieldsContext grouping;
+ public TerminalNode STATS() { return getToken(EsqlBaseParser.STATS, 0); }
+ public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
+ public AggFieldsContext aggFields() {
+ return getRuleContext(AggFieldsContext.class,0);
+ }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
}
@SuppressWarnings("this-escape")
- public FunctionNameContext(ParserRuleContext parent, int invokingState) {
+ public StatsCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_functionName; }
+ @Override public int getRuleIndex() { return RULE_statsCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunctionName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStatsCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunctionName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStatsCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunctionName(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStatsCommand(this);
else return visitor.visitChildren(this);
}
}
- public final FunctionNameContext functionName() throws RecognitionException {
- FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
- enterRule(_localctx, 24, RULE_functionName);
+ public final StatsCommandContext statsCommand() throws RecognitionException {
+ StatsCommandContext _localctx = new StatsCommandContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_statsCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(354);
- identifierOrParameter();
+ setState(310);
+ match(STATS);
+ setState(312);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
+ case 1:
+ {
+ setState(311);
+ ((StatsCommandContext)_localctx).stats = aggFields();
+ }
+ break;
+ }
+ setState(316);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
+ case 1:
+ {
+ setState(314);
+ match(BY);
+ setState(315);
+ ((StatsCommandContext)_localctx).grouping = fields();
+ }
+ break;
+ }
}
}
catch (RecognitionException re) {
@@ -2143,68 +1828,64 @@ public final FunctionNameContext functionName() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class MapExpressionContext extends ParserRuleContext {
- public TerminalNode LEFT_BRACES() { return getToken(EsqlBaseParser.LEFT_BRACES, 0); }
- public List entryExpression() {
- return getRuleContexts(EntryExpressionContext.class);
+ public static class AggFieldsContext extends ParserRuleContext {
+ public List aggField() {
+ return getRuleContexts(AggFieldContext.class);
}
- public EntryExpressionContext entryExpression(int i) {
- return getRuleContext(EntryExpressionContext.class,i);
+ public AggFieldContext aggField(int i) {
+ return getRuleContext(AggFieldContext.class,i);
}
- public TerminalNode RIGHT_BRACES() { return getToken(EsqlBaseParser.RIGHT_BRACES, 0); }
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public MapExpressionContext(ParserRuleContext parent, int invokingState) {
+ public AggFieldsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_mapExpression; }
+ @Override public int getRuleIndex() { return RULE_aggFields; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMapExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggFields(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMapExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggFields(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMapExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggFields(this);
else return visitor.visitChildren(this);
}
}
- public final MapExpressionContext mapExpression() throws RecognitionException {
- MapExpressionContext _localctx = new MapExpressionContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_mapExpression);
- int _la;
+ public final AggFieldsContext aggFields() throws RecognitionException {
+ AggFieldsContext _localctx = new AggFieldsContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_aggFields);
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(356);
- match(LEFT_BRACES);
- setState(357);
- entryExpression();
- setState(362);
+ setState(318);
+ aggField();
+ setState(323);
_errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(358);
- match(COMMA);
- setState(359);
- entryExpression();
- }
+ _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(319);
+ match(COMMA);
+ setState(320);
+ aggField();
+ }
+ }
}
- setState(364);
+ setState(325);
_errHandler.sync(this);
- _la = _input.LA(1);
+ _alt = getInterpreter().adaptivePredict(_input,13,_ctx);
}
- setState(365);
- match(RIGHT_BRACES);
}
}
catch (RecognitionException re) {
@@ -2219,48 +1900,54 @@ public final MapExpressionContext mapExpression() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class EntryExpressionContext extends ParserRuleContext {
- public StringContext key;
- public ConstantContext value;
- public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
+ public static class AggFieldContext extends ParserRuleContext {
+ public FieldContext field() {
+ return getRuleContext(FieldContext.class,0);
}
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
+ public TerminalNode WHERE() { return getToken(EsqlBaseParser.WHERE, 0); }
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public EntryExpressionContext(ParserRuleContext parent, int invokingState) {
+ public AggFieldContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_entryExpression; }
+ @Override public int getRuleIndex() { return RULE_aggField; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEntryExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggField(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEntryExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggField(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEntryExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggField(this);
else return visitor.visitChildren(this);
}
}
- public final EntryExpressionContext entryExpression() throws RecognitionException {
- EntryExpressionContext _localctx = new EntryExpressionContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_entryExpression);
+ public final AggFieldContext aggField() throws RecognitionException {
+ AggFieldContext _localctx = new AggFieldContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_aggField);
try {
enterOuterAlt(_localctx, 1);
{
- setState(367);
- ((EntryExpressionContext)_localctx).key = string();
- setState(368);
- match(COLON);
- setState(369);
- ((EntryExpressionContext)_localctx).value = constant();
+ setState(326);
+ field();
+ setState(329);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ case 1:
+ {
+ setState(327);
+ match(WHERE);
+ setState(328);
+ booleanExpression(0);
+ }
+ break;
+ }
}
}
catch (RecognitionException re) {
@@ -2275,50 +1962,64 @@ public final EntryExpressionContext entryExpression() throws RecognitionExceptio
}
@SuppressWarnings("CheckReturnValue")
- public static class DataTypeContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public DataTypeContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class QualifiedNameContext extends ParserRuleContext {
+ public List identifierOrParameter() {
+ return getRuleContexts(IdentifierOrParameterContext.class);
}
- @Override public int getRuleIndex() { return RULE_dataType; }
-
- @SuppressWarnings("this-escape")
- public DataTypeContext() { }
- public void copyFrom(DataTypeContext ctx) {
- super.copyFrom(ctx);
+ public IdentifierOrParameterContext identifierOrParameter(int i) {
+ return getRuleContext(IdentifierOrParameterContext.class,i);
}
- }
- @SuppressWarnings("CheckReturnValue")
- public static class ToDataTypeContext extends DataTypeContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
+ public List DOT() { return getTokens(EsqlBaseParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(EsqlBaseParser.DOT, i);
}
@SuppressWarnings("this-escape")
- public ToDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
+ public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_qualifiedName; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterToDataType(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitToDataType(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedName(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitToDataType(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedName(this);
else return visitor.visitChildren(this);
}
}
- public final DataTypeContext dataType() throws RecognitionException {
- DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_dataType);
+ public final QualifiedNameContext qualifiedName() throws RecognitionException {
+ QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_qualifiedName);
try {
- _localctx = new ToDataTypeContext(_localctx);
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(371);
- identifier();
+ setState(331);
+ identifierOrParameter();
+ setState(336);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,15,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(332);
+ match(DOT);
+ setState(333);
+ identifierOrParameter();
+ }
+ }
+ }
+ setState(338);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,15,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -2333,41 +2034,64 @@ public final DataTypeContext dataType() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class RowCommandContext extends ParserRuleContext {
- public TerminalNode ROW() { return getToken(EsqlBaseParser.ROW, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
+ public static class QualifiedNamePatternContext extends ParserRuleContext {
+ public List identifierPattern() {
+ return getRuleContexts(IdentifierPatternContext.class);
+ }
+ public IdentifierPatternContext identifierPattern(int i) {
+ return getRuleContext(IdentifierPatternContext.class,i);
+ }
+ public List DOT() { return getTokens(EsqlBaseParser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(EsqlBaseParser.DOT, i);
}
@SuppressWarnings("this-escape")
- public RowCommandContext(ParserRuleContext parent, int invokingState) {
+ public QualifiedNamePatternContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_rowCommand; }
+ @Override public int getRuleIndex() { return RULE_qualifiedNamePattern; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRowCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePattern(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRowCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePattern(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRowCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePattern(this);
else return visitor.visitChildren(this);
}
}
- public final RowCommandContext rowCommand() throws RecognitionException {
- RowCommandContext _localctx = new RowCommandContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_rowCommand);
+ public final QualifiedNamePatternContext qualifiedNamePattern() throws RecognitionException {
+ QualifiedNamePatternContext _localctx = new QualifiedNamePatternContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_qualifiedNamePattern);
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(373);
- match(ROW);
- setState(374);
- fields();
+ setState(339);
+ identifierPattern();
+ setState(344);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(340);
+ match(DOT);
+ setState(341);
+ identifierPattern();
+ }
+ }
+ }
+ setState(346);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -2382,63 +2106,63 @@ public final RowCommandContext rowCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class FieldsContext extends ParserRuleContext {
- public List field() {
- return getRuleContexts(FieldContext.class);
+ public static class QualifiedNamePatternsContext extends ParserRuleContext {
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
}
- public FieldContext field(int i) {
- return getRuleContext(FieldContext.class,i);
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
}
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public FieldsContext(ParserRuleContext parent, int invokingState) {
+ public QualifiedNamePatternsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_fields; }
+ @Override public int getRuleIndex() { return RULE_qualifiedNamePatterns; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePatterns(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePatterns(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFields(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePatterns(this);
else return visitor.visitChildren(this);
}
}
- public final FieldsContext fields() throws RecognitionException {
- FieldsContext _localctx = new FieldsContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_fields);
+ public final QualifiedNamePatternsContext qualifiedNamePatterns() throws RecognitionException {
+ QualifiedNamePatternsContext _localctx = new QualifiedNamePatternsContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_qualifiedNamePatterns);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(376);
- field();
- setState(381);
+ setState(347);
+ qualifiedNamePattern();
+ setState(352);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(377);
+ setState(348);
match(COMMA);
- setState(378);
- field();
+ setState(349);
+ qualifiedNamePattern();
}
}
}
- setState(383);
+ setState(354);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,17,_ctx);
}
}
}
@@ -2454,54 +2178,46 @@ public final FieldsContext fields() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class FieldContext extends ParserRuleContext {
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
- }
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public static class IdentifierContext extends ParserRuleContext {
+ public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
+ public TerminalNode QUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); }
@SuppressWarnings("this-escape")
- public FieldContext(ParserRuleContext parent, int invokingState) {
+ public IdentifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_field; }
+ @Override public int getRuleIndex() { return RULE_identifier; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitField(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifier(this);
else return visitor.visitChildren(this);
}
}
- public final FieldContext field() throws RecognitionException {
- FieldContext _localctx = new FieldContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_field);
+ public final IdentifierContext identifier() throws RecognitionException {
+ IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_identifier);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(387);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
- case 1:
- {
- setState(384);
- qualifiedName();
- setState(385);
- match(ASSIGN);
- }
- break;
+ setState(355);
+ _la = _input.LA(1);
+ if ( !(_la==UNQUOTED_IDENTIFIER || _la==QUOTED_IDENTIFIER) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
}
- setState(389);
- booleanExpression(0);
}
}
catch (RecognitionException re) {
@@ -2516,64 +2232,66 @@ public final FieldContext field() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class RerankFieldsContext extends ParserRuleContext {
- public List rerankField() {
- return getRuleContexts(RerankFieldContext.class);
- }
- public RerankFieldContext rerankField(int i) {
- return getRuleContext(RerankFieldContext.class,i);
+ public static class IdentifierPatternContext extends ParserRuleContext {
+ public TerminalNode ID_PATTERN() { return getToken(EsqlBaseParser.ID_PATTERN, 0); }
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ public DoubleParameterContext doubleParameter() {
+ return getRuleContext(DoubleParameterContext.class,0);
}
@SuppressWarnings("this-escape")
- public RerankFieldsContext(ParserRuleContext parent, int invokingState) {
+ public IdentifierPatternContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_rerankFields; }
+ @Override public int getRuleIndex() { return RULE_identifierPattern; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierPattern(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierPattern(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankFields(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierPattern(this);
else return visitor.visitChildren(this);
}
}
- public final RerankFieldsContext rerankFields() throws RecognitionException {
- RerankFieldsContext _localctx = new RerankFieldsContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_rerankFields);
+ public final IdentifierPatternContext identifierPattern() throws RecognitionException {
+ IdentifierPatternContext _localctx = new IdentifierPatternContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_identifierPattern);
try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(391);
- rerankField();
- setState(396);
+ setState(360);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(392);
- match(COMMA);
- setState(393);
- rerankField();
- }
- }
+ switch (_input.LA(1)) {
+ case ID_PATTERN:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(357);
+ match(ID_PATTERN);
}
- setState(398);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,27,_ctx);
- }
+ break;
+ case PARAM:
+ case NAMED_OR_POSITIONAL_PARAM:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(358);
+ parameter();
+ }
+ break;
+ case DOUBLE_PARAMS:
+ case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(359);
+ doubleParameter();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -2588,54 +2306,83 @@ public final RerankFieldsContext rerankFields() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class RerankFieldContext extends ParserRuleContext {
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
+ public static class ParameterContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
+ @Override public int getRuleIndex() { return RULE_parameter; }
+
+ @SuppressWarnings("this-escape")
+ public ParameterContext() { }
+ public void copyFrom(ParameterContext ctx) {
+ super.copyFrom(ctx);
}
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputNamedOrPositionalParamContext extends ParameterContext {
+ public TerminalNode NAMED_OR_POSITIONAL_PARAM() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_PARAM, 0); }
@SuppressWarnings("this-escape")
- public RerankFieldContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public InputNamedOrPositionalParamContext(ParameterContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalParam(this);
}
- @Override public int getRuleIndex() { return RULE_rerankField; }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalParam(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalParam(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputParamContext extends ParameterContext {
+ public TerminalNode PARAM() { return getToken(EsqlBaseParser.PARAM, 0); }
+ @SuppressWarnings("this-escape")
+ public InputParamContext(ParameterContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParam(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParam(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankField(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParam(this);
else return visitor.visitChildren(this);
}
}
- public final RerankFieldContext rerankField() throws RecognitionException {
- RerankFieldContext _localctx = new RerankFieldContext(_ctx, getState());
- enterRule(_localctx, 40, RULE_rerankField);
+ public final ParameterContext parameter() throws RecognitionException {
+ ParameterContext _localctx = new ParameterContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_parameter);
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(399);
- qualifiedName();
- setState(402);
+ setState(364);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
- case 1:
+ switch (_input.LA(1)) {
+ case PARAM:
+ _localctx = new InputParamContext(_localctx);
+ enterOuterAlt(_localctx, 1);
{
- setState(400);
- match(ASSIGN);
- setState(401);
- booleanExpression(0);
+ setState(362);
+ match(PARAM);
}
break;
- }
+ case NAMED_OR_POSITIONAL_PARAM:
+ _localctx = new InputNamedOrPositionalParamContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(363);
+ match(NAMED_OR_POSITIONAL_PARAM);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -2650,80 +2397,83 @@ public final RerankFieldContext rerankField() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class FromCommandContext extends ParserRuleContext {
- public TerminalNode FROM() { return getToken(EsqlBaseParser.FROM, 0); }
- public List indexPattern() {
- return getRuleContexts(IndexPatternContext.class);
- }
- public IndexPatternContext indexPattern(int i) {
- return getRuleContext(IndexPatternContext.class,i);
+ public static class DoubleParameterContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public DoubleParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
- public MetadataContext metadata() {
- return getRuleContext(MetadataContext.class,0);
+ @Override public int getRuleIndex() { return RULE_doubleParameter; }
+
+ @SuppressWarnings("this-escape")
+ public DoubleParameterContext() { }
+ public void copyFrom(DoubleParameterContext ctx) {
+ super.copyFrom(ctx);
}
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputDoubleParamsContext extends DoubleParameterContext {
+ public TerminalNode DOUBLE_PARAMS() { return getToken(EsqlBaseParser.DOUBLE_PARAMS, 0); }
@SuppressWarnings("this-escape")
- public FromCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public InputDoubleParamsContext(DoubleParameterContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputDoubleParams(this);
}
- @Override public int getRuleIndex() { return RULE_fromCommand; }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputDoubleParams(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputDoubleParams(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputNamedOrPositionalDoubleParamsContext extends DoubleParameterContext {
+ public TerminalNode NAMED_OR_POSITIONAL_DOUBLE_PARAMS() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_DOUBLE_PARAMS, 0); }
+ @SuppressWarnings("this-escape")
+ public InputNamedOrPositionalDoubleParamsContext(DoubleParameterContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFromCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalDoubleParams(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFromCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalDoubleParams(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFromCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalDoubleParams(this);
else return visitor.visitChildren(this);
}
}
- public final FromCommandContext fromCommand() throws RecognitionException {
- FromCommandContext _localctx = new FromCommandContext(_ctx, getState());
- enterRule(_localctx, 42, RULE_fromCommand);
+ public final DoubleParameterContext doubleParameter() throws RecognitionException {
+ DoubleParameterContext _localctx = new DoubleParameterContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_doubleParameter);
try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(404);
- match(FROM);
- setState(405);
- indexPattern();
- setState(410);
+ setState(368);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(406);
- match(COMMA);
- setState(407);
- indexPattern();
- }
- }
+ switch (_input.LA(1)) {
+ case DOUBLE_PARAMS:
+ _localctx = new InputDoubleParamsContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(366);
+ match(DOUBLE_PARAMS);
}
- setState(412);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,29,_ctx);
- }
- setState(414);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
- case 1:
+ break;
+ case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
+ _localctx = new InputNamedOrPositionalDoubleParamsContext(_localctx);
+ enterOuterAlt(_localctx, 2);
{
- setState(413);
- metadata();
+ setState(367);
+ match(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
}
break;
- }
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -2738,77 +2488,69 @@ public final FromCommandContext fromCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class IndexPatternContext extends ParserRuleContext {
- public ClusterStringContext clusterString() {
- return getRuleContext(ClusterStringContext.class,0);
- }
- public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
- public UnquotedIndexStringContext unquotedIndexString() {
- return getRuleContext(UnquotedIndexStringContext.class,0);
+ public static class IdentifierOrParameterContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
}
- public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
- public SelectorStringContext selectorString() {
- return getRuleContext(SelectorStringContext.class,0);
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
}
- public IndexStringContext indexString() {
- return getRuleContext(IndexStringContext.class,0);
+ public DoubleParameterContext doubleParameter() {
+ return getRuleContext(DoubleParameterContext.class,0);
}
@SuppressWarnings("this-escape")
- public IndexPatternContext(ParserRuleContext parent, int invokingState) {
+ public IdentifierOrParameterContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_indexPattern; }
+ @Override public int getRuleIndex() { return RULE_identifierOrParameter; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexPattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierOrParameter(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexPattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierOrParameter(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexPattern(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierOrParameter(this);
else return visitor.visitChildren(this);
}
}
- public final IndexPatternContext indexPattern() throws RecognitionException {
- IndexPatternContext _localctx = new IndexPatternContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_indexPattern);
+ public final IdentifierOrParameterContext identifierOrParameter() throws RecognitionException {
+ IdentifierOrParameterContext _localctx = new IdentifierOrParameterContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_identifierOrParameter);
try {
- setState(425);
+ setState(373);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
- case 1:
+ switch (_input.LA(1)) {
+ case UNQUOTED_IDENTIFIER:
+ case QUOTED_IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
- setState(416);
- clusterString();
- setState(417);
- match(COLON);
- setState(418);
- unquotedIndexString();
+ setState(370);
+ identifier();
}
break;
- case 2:
+ case PARAM:
+ case NAMED_OR_POSITIONAL_PARAM:
enterOuterAlt(_localctx, 2);
{
- setState(420);
- unquotedIndexString();
- setState(421);
- match(CAST_OP);
- setState(422);
- selectorString();
+ setState(371);
+ parameter();
}
break;
- case 3:
+ case DOUBLE_PARAMS:
+ case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
enterOuterAlt(_localctx, 3);
{
- setState(424);
- indexString();
+ setState(372);
+ doubleParameter();
}
break;
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -2823,36 +2565,41 @@ public final IndexPatternContext indexPattern() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class ClusterStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public static class LimitCommandContext extends ParserRuleContext {
+ public TerminalNode LIMIT() { return getToken(EsqlBaseParser.LIMIT, 0); }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public ClusterStringContext(ParserRuleContext parent, int invokingState) {
+ public LimitCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_clusterString; }
+ @Override public int getRuleIndex() { return RULE_limitCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterClusterString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLimitCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitClusterString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLimitCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitClusterString(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLimitCommand(this);
else return visitor.visitChildren(this);
}
}
- public final ClusterStringContext clusterString() throws RecognitionException {
- ClusterStringContext _localctx = new ClusterStringContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_clusterString);
+ public final LimitCommandContext limitCommand() throws RecognitionException {
+ LimitCommandContext _localctx = new LimitCommandContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_limitCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(427);
- match(UNQUOTED_SOURCE);
+ setState(375);
+ match(LIMIT);
+ setState(376);
+ constant();
}
}
catch (RecognitionException re) {
@@ -2867,36 +2614,67 @@ public final ClusterStringContext clusterString() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class SelectorStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public static class SortCommandContext extends ParserRuleContext {
+ public TerminalNode SORT() { return getToken(EsqlBaseParser.SORT, 0); }
+ public List orderExpression() {
+ return getRuleContexts(OrderExpressionContext.class);
+ }
+ public OrderExpressionContext orderExpression(int i) {
+ return getRuleContext(OrderExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
@SuppressWarnings("this-escape")
- public SelectorStringContext(ParserRuleContext parent, int invokingState) {
+ public SortCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_selectorString; }
+ @Override public int getRuleIndex() { return RULE_sortCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSelectorString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSortCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSelectorString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSortCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSelectorString(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSortCommand(this);
else return visitor.visitChildren(this);
}
}
- public final SelectorStringContext selectorString() throws RecognitionException {
- SelectorStringContext _localctx = new SelectorStringContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_selectorString);
+ public final SortCommandContext sortCommand() throws RecognitionException {
+ SortCommandContext _localctx = new SortCommandContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_sortCommand);
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(429);
- match(UNQUOTED_SOURCE);
+ setState(378);
+ match(SORT);
+ setState(379);
+ orderExpression();
+ setState(384);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(380);
+ match(COMMA);
+ setState(381);
+ orderExpression();
+ }
+ }
+ }
+ setState(386);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -2911,90 +2689,135 @@ public final SelectorStringContext selectorString() throws RecognitionException
}
@SuppressWarnings("CheckReturnValue")
- public static class UnquotedIndexStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
+ public static class OrderExpressionContext extends ParserRuleContext {
+ public Token ordering;
+ public Token nullOrdering;
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
+ }
+ public TerminalNode NULLS() { return getToken(EsqlBaseParser.NULLS, 0); }
+ public TerminalNode ASC() { return getToken(EsqlBaseParser.ASC, 0); }
+ public TerminalNode DESC() { return getToken(EsqlBaseParser.DESC, 0); }
+ public TerminalNode FIRST() { return getToken(EsqlBaseParser.FIRST, 0); }
+ public TerminalNode LAST() { return getToken(EsqlBaseParser.LAST, 0); }
@SuppressWarnings("this-escape")
- public UnquotedIndexStringContext(ParserRuleContext parent, int invokingState) {
+ public OrderExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_unquotedIndexString; }
+ @Override public int getRuleIndex() { return RULE_orderExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterUnquotedIndexString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOrderExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitUnquotedIndexString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOrderExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitUnquotedIndexString(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOrderExpression(this);
else return visitor.visitChildren(this);
}
}
- public final UnquotedIndexStringContext unquotedIndexString() throws RecognitionException {
- UnquotedIndexStringContext _localctx = new UnquotedIndexStringContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_unquotedIndexString);
+ public final OrderExpressionContext orderExpression() throws RecognitionException {
+ OrderExpressionContext _localctx = new OrderExpressionContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_orderExpression);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(431);
- match(UNQUOTED_SOURCE);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class IndexStringContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_SOURCE() { return getToken(EsqlBaseParser.UNQUOTED_SOURCE, 0); }
- public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
+ setState(387);
+ booleanExpression(0);
+ setState(389);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
+ case 1:
+ {
+ setState(388);
+ ((OrderExpressionContext)_localctx).ordering = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==ASC || _la==DESC) ) {
+ ((OrderExpressionContext)_localctx).ordering = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ }
+ setState(393);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
+ case 1:
+ {
+ setState(391);
+ match(NULLS);
+ setState(392);
+ ((OrderExpressionContext)_localctx).nullOrdering = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==FIRST || _la==LAST) ) {
+ ((OrderExpressionContext)_localctx).nullOrdering = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class KeepCommandContext extends ParserRuleContext {
+ public TerminalNode KEEP() { return getToken(EsqlBaseParser.KEEP, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public IndexStringContext(ParserRuleContext parent, int invokingState) {
+ public KeepCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_indexString; }
+ @Override public int getRuleIndex() { return RULE_keepCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIndexString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterKeepCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIndexString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitKeepCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIndexString(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitKeepCommand(this);
else return visitor.visitChildren(this);
}
}
- public final IndexStringContext indexString() throws RecognitionException {
- IndexStringContext _localctx = new IndexStringContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_indexString);
- int _la;
+ public final KeepCommandContext keepCommand() throws RecognitionException {
+ KeepCommandContext _localctx = new KeepCommandContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_keepCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(433);
- _la = _input.LA(1);
- if ( !(_la==QUOTED_STRING || _la==UNQUOTED_SOURCE) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
+ setState(395);
+ match(KEEP);
+ setState(396);
+ qualifiedNamePatterns();
}
}
catch (RecognitionException re) {
@@ -3009,56 +2832,41 @@ public final IndexStringContext indexString() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class MetadataContext extends ParserRuleContext {
- public MetadataOptionContext metadataOption() {
- return getRuleContext(MetadataOptionContext.class,0);
- }
- public Deprecated_metadataContext deprecated_metadata() {
- return getRuleContext(Deprecated_metadataContext.class,0);
+ public static class DropCommandContext extends ParserRuleContext {
+ public TerminalNode DROP() { return getToken(EsqlBaseParser.DROP, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
}
@SuppressWarnings("this-escape")
- public MetadataContext(ParserRuleContext parent, int invokingState) {
+ public DropCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_metadata; }
+ @Override public int getRuleIndex() { return RULE_dropCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetadata(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDropCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetadata(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDropCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetadata(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDropCommand(this);
else return visitor.visitChildren(this);
}
}
- public final MetadataContext metadata() throws RecognitionException {
- MetadataContext _localctx = new MetadataContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_metadata);
+ public final DropCommandContext dropCommand() throws RecognitionException {
+ DropCommandContext _localctx = new DropCommandContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_dropCommand);
try {
- setState(437);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case METADATA:
- enterOuterAlt(_localctx, 1);
- {
- setState(435);
- metadataOption();
- }
- break;
- case OPENING_BRACKET:
- enterOuterAlt(_localctx, 2);
- {
- setState(436);
- deprecated_metadata();
- }
- break;
- default:
- throw new NoViableAltException(this);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(398);
+ match(DROP);
+ setState(399);
+ qualifiedNamePatterns();
}
}
catch (RecognitionException re) {
@@ -3073,64 +2881,66 @@ public final MetadataContext metadata() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class MetadataOptionContext extends ParserRuleContext {
- public TerminalNode METADATA() { return getToken(EsqlBaseParser.METADATA, 0); }
- public List UNQUOTED_SOURCE() { return getTokens(EsqlBaseParser.UNQUOTED_SOURCE); }
- public TerminalNode UNQUOTED_SOURCE(int i) {
- return getToken(EsqlBaseParser.UNQUOTED_SOURCE, i);
+ public static class RenameCommandContext extends ParserRuleContext {
+ public TerminalNode RENAME() { return getToken(EsqlBaseParser.RENAME, 0); }
+ public List renameClause() {
+ return getRuleContexts(RenameClauseContext.class);
+ }
+ public RenameClauseContext renameClause(int i) {
+ return getRuleContext(RenameClauseContext.class,i);
}
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public MetadataOptionContext(ParserRuleContext parent, int invokingState) {
+ public RenameCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_metadataOption; }
+ @Override public int getRuleIndex() { return RULE_renameCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetadataOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetadataOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetadataOption(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameCommand(this);
else return visitor.visitChildren(this);
}
}
- public final MetadataOptionContext metadataOption() throws RecognitionException {
- MetadataOptionContext _localctx = new MetadataOptionContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_metadataOption);
+ public final RenameCommandContext renameCommand() throws RecognitionException {
+ RenameCommandContext _localctx = new RenameCommandContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_renameCommand);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(439);
- match(METADATA);
- setState(440);
- match(UNQUOTED_SOURCE);
- setState(445);
+ setState(401);
+ match(RENAME);
+ setState(402);
+ renameClause();
+ setState(407);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,33,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(441);
+ setState(403);
match(COMMA);
- setState(442);
- match(UNQUOTED_SOURCE);
+ setState(404);
+ renameClause();
}
}
}
- setState(447);
+ setState(409);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,33,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,25,_ctx);
}
}
}
@@ -3146,43 +2956,66 @@ public final MetadataOptionContext metadataOption() throws RecognitionException
}
@SuppressWarnings("CheckReturnValue")
- public static class Deprecated_metadataContext extends ParserRuleContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public MetadataOptionContext metadataOption() {
- return getRuleContext(MetadataOptionContext.class,0);
+ public static class RenameClauseContext extends ParserRuleContext {
+ public QualifiedNamePatternContext oldName;
+ public QualifiedNamePatternContext newName;
+ public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
}
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
- public Deprecated_metadataContext(ParserRuleContext parent, int invokingState) {
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ @SuppressWarnings("this-escape")
+ public RenameClauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_deprecated_metadata; }
+ @Override public int getRuleIndex() { return RULE_renameClause; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDeprecated_metadata(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameClause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDeprecated_metadata(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameClause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDeprecated_metadata(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameClause(this);
else return visitor.visitChildren(this);
}
}
- public final Deprecated_metadataContext deprecated_metadata() throws RecognitionException {
- Deprecated_metadataContext _localctx = new Deprecated_metadataContext(_ctx, getState());
- enterRule(_localctx, 58, RULE_deprecated_metadata);
+ public final RenameClauseContext renameClause() throws RecognitionException {
+ RenameClauseContext _localctx = new RenameClauseContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_renameClause);
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(448);
- match(OPENING_BRACKET);
- setState(449);
- metadataOption();
- setState(450);
- match(CLOSING_BRACKET);
+ setState(418);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(410);
+ ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
+ setState(411);
+ match(AS);
+ setState(412);
+ ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(414);
+ ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
+ setState(415);
+ match(ASSIGN);
+ setState(416);
+ ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -3197,95 +3030,56 @@ public final Deprecated_metadataContext deprecated_metadata() throws Recognition
}
@SuppressWarnings("CheckReturnValue")
- public static class MetricsCommandContext extends ParserRuleContext {
- public AggFieldsContext aggregates;
- public FieldsContext grouping;
- public TerminalNode DEV_METRICS() { return getToken(EsqlBaseParser.DEV_METRICS, 0); }
- public List indexPattern() {
- return getRuleContexts(IndexPatternContext.class);
- }
- public IndexPatternContext indexPattern(int i) {
- return getRuleContext(IndexPatternContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ public static class DissectCommandContext extends ParserRuleContext {
+ public TerminalNode DISSECT() { return getToken(EsqlBaseParser.DISSECT, 0); }
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
}
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
}
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
+ public CommandOptionsContext commandOptions() {
+ return getRuleContext(CommandOptionsContext.class,0);
}
@SuppressWarnings("this-escape")
- public MetricsCommandContext(ParserRuleContext parent, int invokingState) {
+ public DissectCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_metricsCommand; }
+ @Override public int getRuleIndex() { return RULE_dissectCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMetricsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDissectCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMetricsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDissectCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMetricsCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDissectCommand(this);
else return visitor.visitChildren(this);
}
}
- public final MetricsCommandContext metricsCommand() throws RecognitionException {
- MetricsCommandContext _localctx = new MetricsCommandContext(_ctx, getState());
- enterRule(_localctx, 60, RULE_metricsCommand);
+ public final DissectCommandContext dissectCommand() throws RecognitionException {
+ DissectCommandContext _localctx = new DissectCommandContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_dissectCommand);
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(452);
- match(DEV_METRICS);
- setState(453);
- indexPattern();
- setState(458);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(454);
- match(COMMA);
- setState(455);
- indexPattern();
- }
- }
- }
- setState(460);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
- }
- setState(462);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
- case 1:
- {
- setState(461);
- ((MetricsCommandContext)_localctx).aggregates = aggFields();
- }
- break;
- }
- setState(466);
+ setState(420);
+ match(DISSECT);
+ setState(421);
+ primaryExpression(0);
+ setState(422);
+ string();
+ setState(424);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
case 1:
{
- setState(464);
- match(BY);
- setState(465);
- ((MetricsCommandContext)_localctx).grouping = fields();
+ setState(423);
+ commandOptions();
}
break;
}
@@ -3303,41 +3097,46 @@ public final MetricsCommandContext metricsCommand() throws RecognitionException
}
@SuppressWarnings("CheckReturnValue")
- public static class EvalCommandContext extends ParserRuleContext {
- public TerminalNode EVAL() { return getToken(EsqlBaseParser.EVAL, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
+ public static class GrokCommandContext extends ParserRuleContext {
+ public TerminalNode GROK() { return getToken(EsqlBaseParser.GROK, 0); }
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
}
@SuppressWarnings("this-escape")
- public EvalCommandContext(ParserRuleContext parent, int invokingState) {
+ public GrokCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_evalCommand; }
+ @Override public int getRuleIndex() { return RULE_grokCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEvalCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterGrokCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEvalCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitGrokCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEvalCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitGrokCommand(this);
else return visitor.visitChildren(this);
}
}
- public final EvalCommandContext evalCommand() throws RecognitionException {
- EvalCommandContext _localctx = new EvalCommandContext(_ctx, getState());
- enterRule(_localctx, 62, RULE_evalCommand);
+ public final GrokCommandContext grokCommand() throws RecognitionException {
+ GrokCommandContext _localctx = new GrokCommandContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_grokCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(468);
- match(EVAL);
- setState(469);
- fields();
+ setState(426);
+ match(GROK);
+ setState(427);
+ primaryExpression(0);
+ setState(428);
+ string();
}
}
catch (RecognitionException re) {
@@ -3352,67 +3151,41 @@ public final EvalCommandContext evalCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class StatsCommandContext extends ParserRuleContext {
- public AggFieldsContext stats;
- public FieldsContext grouping;
- public TerminalNode STATS() { return getToken(EsqlBaseParser.STATS, 0); }
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
- }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
+ public static class MvExpandCommandContext extends ParserRuleContext {
+ public TerminalNode MV_EXPAND() { return getToken(EsqlBaseParser.MV_EXPAND, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
}
@SuppressWarnings("this-escape")
- public StatsCommandContext(ParserRuleContext parent, int invokingState) {
+ public MvExpandCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_statsCommand; }
+ @Override public int getRuleIndex() { return RULE_mvExpandCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStatsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMvExpandCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStatsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMvExpandCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStatsCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMvExpandCommand(this);
else return visitor.visitChildren(this);
}
}
- public final StatsCommandContext statsCommand() throws RecognitionException {
- StatsCommandContext _localctx = new StatsCommandContext(_ctx, getState());
- enterRule(_localctx, 64, RULE_statsCommand);
+ public final MvExpandCommandContext mvExpandCommand() throws RecognitionException {
+ MvExpandCommandContext _localctx = new MvExpandCommandContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_mvExpandCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(471);
- match(STATS);
- setState(473);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
- case 1:
- {
- setState(472);
- ((StatsCommandContext)_localctx).stats = aggFields();
- }
- break;
- }
- setState(477);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
- case 1:
- {
- setState(475);
- match(BY);
- setState(476);
- ((StatsCommandContext)_localctx).grouping = fields();
- }
- break;
- }
+ setState(430);
+ match(MV_EXPAND);
+ setState(431);
+ qualifiedName();
}
}
catch (RecognitionException re) {
@@ -3427,63 +3200,63 @@ public final StatsCommandContext statsCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class AggFieldsContext extends ParserRuleContext {
- public List aggField() {
- return getRuleContexts(AggFieldContext.class);
+ public static class CommandOptionsContext extends ParserRuleContext {
+ public List commandOption() {
+ return getRuleContexts(CommandOptionContext.class);
}
- public AggFieldContext aggField(int i) {
- return getRuleContext(AggFieldContext.class,i);
+ public CommandOptionContext commandOption(int i) {
+ return getRuleContext(CommandOptionContext.class,i);
}
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public AggFieldsContext(ParserRuleContext parent, int invokingState) {
+ public CommandOptionsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_aggFields; }
+ @Override public int getRuleIndex() { return RULE_commandOptions; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOptions(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggFields(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOptions(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggFields(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOptions(this);
else return visitor.visitChildren(this);
}
}
- public final AggFieldsContext aggFields() throws RecognitionException {
- AggFieldsContext _localctx = new AggFieldsContext(_ctx, getState());
- enterRule(_localctx, 66, RULE_aggFields);
+ public final CommandOptionsContext commandOptions() throws RecognitionException {
+ CommandOptionsContext _localctx = new CommandOptionsContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_commandOptions);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(479);
- aggField();
- setState(484);
+ setState(433);
+ commandOption();
+ setState(438);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,39,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(480);
+ setState(434);
match(COMMA);
- setState(481);
- aggField();
+ setState(435);
+ commandOption();
}
}
}
- setState(486);
+ setState(440);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,39,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,28,_ctx);
}
}
}
@@ -3499,54 +3272,46 @@ public final AggFieldsContext aggFields() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class AggFieldContext extends ParserRuleContext {
- public FieldContext field() {
- return getRuleContext(FieldContext.class,0);
+ public static class CommandOptionContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
}
- public TerminalNode WHERE() { return getToken(EsqlBaseParser.WHERE, 0); }
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
}
@SuppressWarnings("this-escape")
- public AggFieldContext(ParserRuleContext parent, int invokingState) {
+ public CommandOptionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_aggField; }
+ @Override public int getRuleIndex() { return RULE_commandOption; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterAggField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOption(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitAggField(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOption(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitAggField(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOption(this);
else return visitor.visitChildren(this);
}
}
- public final AggFieldContext aggField() throws RecognitionException {
- AggFieldContext _localctx = new AggFieldContext(_ctx, getState());
- enterRule(_localctx, 68, RULE_aggField);
+ public final CommandOptionContext commandOption() throws RecognitionException {
+ CommandOptionContext _localctx = new CommandOptionContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_commandOption);
try {
enterOuterAlt(_localctx, 1);
{
- setState(487);
- field();
- setState(490);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
- case 1:
- {
- setState(488);
- match(WHERE);
- setState(489);
- booleanExpression(0);
- }
- break;
- }
+ setState(441);
+ identifier();
+ setState(442);
+ match(ASSIGN);
+ setState(443);
+ constant();
}
}
catch (RecognitionException re) {
@@ -3561,64 +3326,41 @@ public final AggFieldContext aggField() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class QualifiedNameContext extends ParserRuleContext {
- public List identifierOrParameter() {
- return getRuleContexts(IdentifierOrParameterContext.class);
- }
- public IdentifierOrParameterContext identifierOrParameter(int i) {
- return getRuleContext(IdentifierOrParameterContext.class,i);
- }
- public List DOT() { return getTokens(EsqlBaseParser.DOT); }
- public TerminalNode DOT(int i) {
- return getToken(EsqlBaseParser.DOT, i);
+ public static class ExplainCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_EXPLAIN() { return getToken(EsqlBaseParser.DEV_EXPLAIN, 0); }
+ public SubqueryExpressionContext subqueryExpression() {
+ return getRuleContext(SubqueryExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public QualifiedNameContext(ParserRuleContext parent, int invokingState) {
+ public ExplainCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_qualifiedName; }
+ @Override public int getRuleIndex() { return RULE_explainCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterExplainCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitExplainCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedName(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitExplainCommand(this);
else return visitor.visitChildren(this);
}
}
- public final QualifiedNameContext qualifiedName() throws RecognitionException {
- QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState());
- enterRule(_localctx, 70, RULE_qualifiedName);
+ public final ExplainCommandContext explainCommand() throws RecognitionException {
+ ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_explainCommand);
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(492);
- identifierOrParameter();
- setState(497);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,41,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(493);
- match(DOT);
- setState(494);
- identifierOrParameter();
- }
- }
- }
- setState(499);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,41,_ctx);
- }
+ setState(445);
+ match(DEV_EXPLAIN);
+ setState(446);
+ subqueryExpression();
}
}
catch (RecognitionException re) {
@@ -3633,64 +3375,44 @@ public final QualifiedNameContext qualifiedName() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class QualifiedNamePatternContext extends ParserRuleContext {
- public List identifierPattern() {
- return getRuleContexts(IdentifierPatternContext.class);
- }
- public IdentifierPatternContext identifierPattern(int i) {
- return getRuleContext(IdentifierPatternContext.class,i);
- }
- public List DOT() { return getTokens(EsqlBaseParser.DOT); }
- public TerminalNode DOT(int i) {
- return getToken(EsqlBaseParser.DOT, i);
+ public static class SubqueryExpressionContext extends ParserRuleContext {
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public QueryContext query() {
+ return getRuleContext(QueryContext.class,0);
}
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
@SuppressWarnings("this-escape")
- public QualifiedNamePatternContext(ParserRuleContext parent, int invokingState) {
+ public SubqueryExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_qualifiedNamePattern; }
+ @Override public int getRuleIndex() { return RULE_subqueryExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSubqueryExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSubqueryExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePattern(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSubqueryExpression(this);
else return visitor.visitChildren(this);
}
}
- public final QualifiedNamePatternContext qualifiedNamePattern() throws RecognitionException {
- QualifiedNamePatternContext _localctx = new QualifiedNamePatternContext(_ctx, getState());
- enterRule(_localctx, 72, RULE_qualifiedNamePattern);
+ public final SubqueryExpressionContext subqueryExpression() throws RecognitionException {
+ SubqueryExpressionContext _localctx = new SubqueryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_subqueryExpression);
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(500);
- identifierPattern();
- setState(505);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(501);
- match(DOT);
- setState(502);
- identifierPattern();
- }
- }
- }
- setState(507);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
- }
+ setState(448);
+ match(LP);
+ setState(449);
+ query(0);
+ setState(450);
+ match(RP);
}
}
catch (RecognitionException re) {
@@ -3705,63 +3427,159 @@ public final QualifiedNamePatternContext qualifiedNamePattern() throws Recogniti
}
@SuppressWarnings("CheckReturnValue")
- public static class QualifiedNamePatternsContext extends ParserRuleContext {
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
+ public static class ShowCommandContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ShowCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ @Override public int getRuleIndex() { return RULE_showCommand; }
+
+ @SuppressWarnings("this-escape")
+ public ShowCommandContext() { }
+ public void copyFrom(ShowCommandContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ShowInfoContext extends ShowCommandContext {
+ public TerminalNode SHOW() { return getToken(EsqlBaseParser.SHOW, 0); }
+ public TerminalNode INFO() { return getToken(EsqlBaseParser.INFO, 0); }
+ @SuppressWarnings("this-escape")
+ public ShowInfoContext(ShowCommandContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterShowInfo(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitShowInfo(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitShowInfo(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ShowCommandContext showCommand() throws RecognitionException {
+ ShowCommandContext _localctx = new ShowCommandContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_showCommand);
+ try {
+ _localctx = new ShowInfoContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(452);
+ match(SHOW);
+ setState(453);
+ match(INFO);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnrichCommandContext extends ParserRuleContext {
+ public EnrichPolicyNameContext policyName;
+ public QualifiedNamePatternContext matchField;
+ public TerminalNode ENRICH() { return getToken(EsqlBaseParser.ENRICH, 0); }
+ public EnrichPolicyNameContext enrichPolicyName() {
+ return getRuleContext(EnrichPolicyNameContext.class,0);
+ }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
+ public List enrichWithClause() {
+ return getRuleContexts(EnrichWithClauseContext.class);
+ }
+ public EnrichWithClauseContext enrichWithClause(int i) {
+ return getRuleContext(EnrichWithClauseContext.class,i);
+ }
+ public QualifiedNamePatternContext qualifiedNamePattern() {
+ return getRuleContext(QualifiedNamePatternContext.class,0);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public QualifiedNamePatternsContext(ParserRuleContext parent, int invokingState) {
+ public EnrichCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_qualifiedNamePatterns; }
+ @Override public int getRuleIndex() { return RULE_enrichCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedNamePatterns(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedNamePatterns(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedNamePatterns(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichCommand(this);
else return visitor.visitChildren(this);
}
}
- public final QualifiedNamePatternsContext qualifiedNamePatterns() throws RecognitionException {
- QualifiedNamePatternsContext _localctx = new QualifiedNamePatternsContext(_ctx, getState());
- enterRule(_localctx, 74, RULE_qualifiedNamePatterns);
+ public final EnrichCommandContext enrichCommand() throws RecognitionException {
+ EnrichCommandContext _localctx = new EnrichCommandContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_enrichCommand);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(508);
- qualifiedNamePattern();
- setState(513);
+ setState(455);
+ match(ENRICH);
+ setState(456);
+ ((EnrichCommandContext)_localctx).policyName = enrichPolicyName();
+ setState(459);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(509);
- match(COMMA);
- setState(510);
- qualifiedNamePattern();
- }
- }
+ switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
+ case 1:
+ {
+ setState(457);
+ match(ON);
+ setState(458);
+ ((EnrichCommandContext)_localctx).matchField = qualifiedNamePattern();
}
- setState(515);
+ break;
+ }
+ setState(470);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
+ case 1:
+ {
+ setState(461);
+ match(WITH);
+ setState(462);
+ enrichWithClause();
+ setState(467);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,30,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(463);
+ match(COMMA);
+ setState(464);
+ enrichWithClause();
+ }
+ }
+ }
+ setState(469);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,30,_ctx);
+ }
+ }
+ break;
}
}
}
@@ -3777,39 +3595,39 @@ public final QualifiedNamePatternsContext qualifiedNamePatterns() throws Recogni
}
@SuppressWarnings("CheckReturnValue")
- public static class IdentifierContext extends ParserRuleContext {
- public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
- public TerminalNode QUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.QUOTED_IDENTIFIER, 0); }
+ public static class EnrichPolicyNameContext extends ParserRuleContext {
+ public TerminalNode ENRICH_POLICY_NAME() { return getToken(EsqlBaseParser.ENRICH_POLICY_NAME, 0); }
+ public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
@SuppressWarnings("this-escape")
- public IdentifierContext(ParserRuleContext parent, int invokingState) {
+ public EnrichPolicyNameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_identifier; }
+ @Override public int getRuleIndex() { return RULE_enrichPolicyName; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifier(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichPolicyName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifier(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichPolicyName(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifier(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichPolicyName(this);
else return visitor.visitChildren(this);
}
}
- public final IdentifierContext identifier() throws RecognitionException {
- IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
- enterRule(_localctx, 76, RULE_identifier);
+ public final EnrichPolicyNameContext enrichPolicyName() throws RecognitionException {
+ EnrichPolicyNameContext _localctx = new EnrichPolicyNameContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_enrichPolicyName);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(516);
+ setState(472);
_la = _input.LA(1);
- if ( !(_la==UNQUOTED_IDENTIFIER || _la==QUOTED_IDENTIFIER) ) {
+ if ( !(_la==ENRICH_POLICY_NAME || _la==QUOTED_STRING) ) {
_errHandler.recoverInline(this);
}
else {
@@ -3831,66 +3649,56 @@ public final IdentifierContext identifier() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class IdentifierPatternContext extends ParserRuleContext {
- public TerminalNode ID_PATTERN() { return getToken(EsqlBaseParser.ID_PATTERN, 0); }
- public ParameterContext parameter() {
- return getRuleContext(ParameterContext.class,0);
+ public static class EnrichWithClauseContext extends ParserRuleContext {
+ public QualifiedNamePatternContext newName;
+ public QualifiedNamePatternContext enrichField;
+ public List qualifiedNamePattern() {
+ return getRuleContexts(QualifiedNamePatternContext.class);
}
- public DoubleParameterContext doubleParameter() {
- return getRuleContext(DoubleParameterContext.class,0);
+ public QualifiedNamePatternContext qualifiedNamePattern(int i) {
+ return getRuleContext(QualifiedNamePatternContext.class,i);
}
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
@SuppressWarnings("this-escape")
- public IdentifierPatternContext(ParserRuleContext parent, int invokingState) {
+ public EnrichWithClauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_identifierPattern; }
+ @Override public int getRuleIndex() { return RULE_enrichWithClause; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierPattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichWithClause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierPattern(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichWithClause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierPattern(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichWithClause(this);
else return visitor.visitChildren(this);
}
}
- public final IdentifierPatternContext identifierPattern() throws RecognitionException {
- IdentifierPatternContext _localctx = new IdentifierPatternContext(_ctx, getState());
- enterRule(_localctx, 78, RULE_identifierPattern);
+ public final EnrichWithClauseContext enrichWithClause() throws RecognitionException {
+ EnrichWithClauseContext _localctx = new EnrichWithClauseContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_enrichWithClause);
try {
- setState(521);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(477);
_errHandler.sync(this);
- switch (_input.LA(1)) {
- case ID_PATTERN:
- enterOuterAlt(_localctx, 1);
- {
- setState(518);
- match(ID_PATTERN);
- }
- break;
- case PARAM:
- case NAMED_OR_POSITIONAL_PARAM:
- enterOuterAlt(_localctx, 2);
- {
- setState(519);
- parameter();
- }
- break;
- case DOUBLE_PARAMS:
- case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
- enterOuterAlt(_localctx, 3);
+ switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
+ case 1:
{
- setState(520);
- doubleParameter();
+ setState(474);
+ ((EnrichWithClauseContext)_localctx).newName = qualifiedNamePattern();
+ setState(475);
+ match(ASSIGN);
}
break;
- default:
- throw new NoViableAltException(this);
+ }
+ setState(479);
+ ((EnrichWithClauseContext)_localctx).enrichField = qualifiedNamePattern();
}
}
catch (RecognitionException re) {
@@ -3905,406 +3713,420 @@ public final IdentifierPatternContext identifierPattern() throws RecognitionExce
}
@SuppressWarnings("CheckReturnValue")
- public static class ConstantContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ConstantContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class SampleCommandContext extends ParserRuleContext {
+ public ConstantContext probability;
+ public TerminalNode SAMPLE() { return getToken(EsqlBaseParser.SAMPLE, 0); }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
}
- @Override public int getRuleIndex() { return RULE_constant; }
-
@SuppressWarnings("this-escape")
- public ConstantContext() { }
- public void copyFrom(ConstantContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class BooleanArrayLiteralContext extends ConstantContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public List booleanValue() {
- return getRuleContexts(BooleanValueContext.class);
- }
- public BooleanValueContext booleanValue(int i) {
- return getRuleContext(BooleanValueContext.class,i);
- }
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ public SampleCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- @SuppressWarnings("this-escape")
- public BooleanArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override public int getRuleIndex() { return RULE_sampleCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanArrayLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSampleCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanArrayLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSampleCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanArrayLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSampleCommand(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class DecimalLiteralContext extends ConstantContext {
- public DecimalValueContext decimalValue() {
- return getRuleContext(DecimalValueContext.class,0);
+
+ public final SampleCommandContext sampleCommand() throws RecognitionException {
+ SampleCommandContext _localctx = new SampleCommandContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_sampleCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(481);
+ match(SAMPLE);
+ setState(482);
+ ((SampleCommandContext)_localctx).probability = constant();
+ }
}
- @SuppressWarnings("this-escape")
- public DecimalLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDecimalLiteral(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDecimalLiteral(this);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDecimalLiteral(this);
- else return visitor.visitChildren(this);
+ finally {
+ exitRule();
}
+ return _localctx;
}
+
@SuppressWarnings("CheckReturnValue")
- public static class NullLiteralContext extends ConstantContext {
- public TerminalNode NULL() { return getToken(EsqlBaseParser.NULL, 0); }
+ public static class ChangePointCommandContext extends ParserRuleContext {
+ public QualifiedNameContext value;
+ public QualifiedNameContext key;
+ public QualifiedNameContext targetType;
+ public QualifiedNameContext targetPvalue;
+ public TerminalNode CHANGE_POINT() { return getToken(EsqlBaseParser.CHANGE_POINT, 0); }
+ public List qualifiedName() {
+ return getRuleContexts(QualifiedNameContext.class);
+ }
+ public QualifiedNameContext qualifiedName(int i) {
+ return getRuleContext(QualifiedNameContext.class,i);
+ }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
+ public TerminalNode COMMA() { return getToken(EsqlBaseParser.COMMA, 0); }
@SuppressWarnings("this-escape")
- public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public ChangePointCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_changePointCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNullLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterChangePointCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNullLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitChangePointCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNullLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitChangePointCommand(this);
else return visitor.visitChildren(this);
}
}
+
+ public final ChangePointCommandContext changePointCommand() throws RecognitionException {
+ ChangePointCommandContext _localctx = new ChangePointCommandContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_changePointCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(484);
+ match(CHANGE_POINT);
+ setState(485);
+ ((ChangePointCommandContext)_localctx).value = qualifiedName();
+ setState(488);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ {
+ setState(486);
+ match(ON);
+ setState(487);
+ ((ChangePointCommandContext)_localctx).key = qualifiedName();
+ }
+ break;
+ }
+ setState(495);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
+ case 1:
+ {
+ setState(490);
+ match(AS);
+ setState(491);
+ ((ChangePointCommandContext)_localctx).targetType = qualifiedName();
+ setState(492);
+ match(COMMA);
+ setState(493);
+ ((ChangePointCommandContext)_localctx).targetPvalue = qualifiedName();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
- public static class QualifiedIntegerLiteralContext extends ConstantContext {
- public IntegerValueContext integerValue() {
- return getRuleContext(IntegerValueContext.class,0);
+ public static class ForkCommandContext extends ParserRuleContext {
+ public TerminalNode FORK() { return getToken(EsqlBaseParser.FORK, 0); }
+ public ForkSubQueriesContext forkSubQueries() {
+ return getRuleContext(ForkSubQueriesContext.class,0);
}
- public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
@SuppressWarnings("this-escape")
- public QualifiedIntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public ForkCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedIntegerLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedIntegerLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedIntegerLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkCommand(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class StringArrayLiteralContext extends ConstantContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public List string() {
- return getRuleContexts(StringContext.class);
+
+ public final ForkCommandContext forkCommand() throws RecognitionException {
+ ForkCommandContext _localctx = new ForkCommandContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_forkCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(497);
+ match(FORK);
+ setState(498);
+ forkSubQueries();
+ }
}
- public StringContext string(int i) {
- return getRuleContext(StringContext.class,i);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueriesContext extends ParserRuleContext {
+ public List forkSubQuery() {
+ return getRuleContexts(ForkSubQueryContext.class);
+ }
+ public ForkSubQueryContext forkSubQuery(int i) {
+ return getRuleContext(ForkSubQueryContext.class,i);
}
@SuppressWarnings("this-escape")
- public StringArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public ForkSubQueriesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQueries; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStringArrayLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueries(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStringArrayLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueries(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStringArrayLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueries(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class InputParameterContext extends ConstantContext {
- public ParameterContext parameter() {
- return getRuleContext(ParameterContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public InputParameterContext(ConstantContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParameter(this);
+
+ public final ForkSubQueriesContext forkSubQueries() throws RecognitionException {
+ ForkSubQueriesContext _localctx = new ForkSubQueriesContext(_ctx, getState());
+ enterRule(_localctx, 106, RULE_forkSubQueries);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(501);
+ _errHandler.sync(this);
+ _alt = 1;
+ do {
+ switch (_alt) {
+ case 1:
+ {
+ {
+ setState(500);
+ forkSubQuery();
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(503);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,35,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
+ }
}
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParameter(this);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParameter(this);
- else return visitor.visitChildren(this);
+ finally {
+ exitRule();
}
+ return _localctx;
}
+
@SuppressWarnings("CheckReturnValue")
- public static class StringLiteralContext extends ConstantContext {
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
+ public static class ForkSubQueryContext extends ParserRuleContext {
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public ForkSubQueryCommandContext forkSubQueryCommand() {
+ return getRuleContext(ForkSubQueryCommandContext.class,0);
}
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
@SuppressWarnings("this-escape")
- public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public ForkSubQueryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forkSubQuery; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStringLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQuery(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStringLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQuery(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStringLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQuery(this);
else return visitor.visitChildren(this);
}
}
- @SuppressWarnings("CheckReturnValue")
- public static class NumericArrayLiteralContext extends ConstantContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public List numericValue() {
- return getRuleContexts(NumericValueContext.class);
+
+ public final ForkSubQueryContext forkSubQuery() throws RecognitionException {
+ ForkSubQueryContext _localctx = new ForkSubQueryContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_forkSubQuery);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(505);
+ match(LP);
+ setState(506);
+ forkSubQueryCommand(0);
+ setState(507);
+ match(RP);
+ }
}
- public NumericValueContext numericValue(int i) {
- return getRuleContext(NumericValueContext.class,i);
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
}
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ finally {
+ exitRule();
}
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForkSubQueryCommandContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public NumericArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNumericArrayLiteral(this);
- }
- @Override
- public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNumericArrayLiteral(this);
+ public ForkSubQueryCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- @Override
- public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNumericArrayLiteral(this);
- else return visitor.visitChildren(this);
+ @Override public int getRuleIndex() { return RULE_forkSubQueryCommand; }
+
+ @SuppressWarnings("this-escape")
+ public ForkSubQueryCommandContext() { }
+ public void copyFrom(ForkSubQueryCommandContext ctx) {
+ super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
- public static class IntegerLiteralContext extends ConstantContext {
- public IntegerValueContext integerValue() {
- return getRuleContext(IntegerValueContext.class,0);
+ public static class SingleForkSubQueryCommandContext extends ForkSubQueryCommandContext {
+ public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
+ return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
}
@SuppressWarnings("this-escape")
- public IntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public SingleForkSubQueryCommandContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIntegerLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSingleForkSubQueryCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIntegerLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSingleForkSubQueryCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIntegerLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSingleForkSubQueryCommand(this);
else return visitor.visitChildren(this);
}
}
@SuppressWarnings("CheckReturnValue")
- public static class BooleanLiteralContext extends ConstantContext {
- public BooleanValueContext booleanValue() {
- return getRuleContext(BooleanValueContext.class,0);
+ public static class CompositeForkSubQueryContext extends ForkSubQueryCommandContext {
+ public ForkSubQueryCommandContext forkSubQueryCommand() {
+ return getRuleContext(ForkSubQueryCommandContext.class,0);
+ }
+ public TerminalNode PIPE() { return getToken(EsqlBaseParser.PIPE, 0); }
+ public ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() {
+ return getRuleContext(ForkSubQueryProcessingCommandContext.class,0);
}
@SuppressWarnings("this-escape")
- public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ public CompositeForkSubQueryContext(ForkSubQueryCommandContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCompositeForkSubQuery(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanLiteral(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCompositeForkSubQuery(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanLiteral(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCompositeForkSubQuery(this);
else return visitor.visitChildren(this);
}
}
- public final ConstantContext constant() throws RecognitionException {
- ConstantContext _localctx = new ConstantContext(_ctx, getState());
- enterRule(_localctx, 80, RULE_constant);
- int _la;
+ public final ForkSubQueryCommandContext forkSubQueryCommand() throws RecognitionException {
+ return forkSubQueryCommand(0);
+ }
+
+ private ForkSubQueryCommandContext forkSubQueryCommand(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ForkSubQueryCommandContext _localctx = new ForkSubQueryCommandContext(_ctx, _parentState);
+ ForkSubQueryCommandContext _prevctx = _localctx;
+ int _startState = 110;
+ enterRecursionRule(_localctx, 110, RULE_forkSubQueryCommand, _p);
try {
- setState(565);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
- case 1:
- _localctx = new NullLiteralContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(523);
- match(NULL);
- }
- break;
- case 2:
- _localctx = new QualifiedIntegerLiteralContext(_localctx);
- enterOuterAlt(_localctx, 2);
- {
- setState(524);
- integerValue();
- setState(525);
- match(UNQUOTED_IDENTIFIER);
- }
- break;
- case 3:
- _localctx = new DecimalLiteralContext(_localctx);
- enterOuterAlt(_localctx, 3);
- {
- setState(527);
- decimalValue();
- }
- break;
- case 4:
- _localctx = new IntegerLiteralContext(_localctx);
- enterOuterAlt(_localctx, 4);
- {
- setState(528);
- integerValue();
- }
- break;
- case 5:
- _localctx = new BooleanLiteralContext(_localctx);
- enterOuterAlt(_localctx, 5);
- {
- setState(529);
- booleanValue();
- }
- break;
- case 6:
- _localctx = new InputParameterContext(_localctx);
- enterOuterAlt(_localctx, 6);
- {
- setState(530);
- parameter();
- }
- break;
- case 7:
- _localctx = new StringLiteralContext(_localctx);
- enterOuterAlt(_localctx, 7);
- {
- setState(531);
- string();
- }
- break;
- case 8:
- _localctx = new NumericArrayLiteralContext(_localctx);
- enterOuterAlt(_localctx, 8);
- {
- setState(532);
- match(OPENING_BRACKET);
- setState(533);
- numericValue();
- setState(538);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(534);
- match(COMMA);
- setState(535);
- numericValue();
- }
- }
- setState(540);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(541);
- match(CLOSING_BRACKET);
- }
- break;
- case 9:
- _localctx = new BooleanArrayLiteralContext(_localctx);
- enterOuterAlt(_localctx, 9);
- {
- setState(543);
- match(OPENING_BRACKET);
- setState(544);
- booleanValue();
- setState(549);
- _errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ _localctx = new SingleForkSubQueryCommandContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(510);
+ forkSubQueryProcessingCommand();
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(517);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
{
{
- setState(545);
- match(COMMA);
- setState(546);
- booleanValue();
- }
+ _localctx = new CompositeForkSubQueryContext(new ForkSubQueryCommandContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_forkSubQueryCommand);
+ setState(512);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(513);
+ match(PIPE);
+ setState(514);
+ forkSubQueryProcessingCommand();
}
- setState(551);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(552);
- match(CLOSING_BRACKET);
+ }
}
- break;
- case 10:
- _localctx = new StringArrayLiteralContext(_localctx);
- enterOuterAlt(_localctx, 10);
- {
- setState(554);
- match(OPENING_BRACKET);
- setState(555);
- string();
- setState(560);
+ setState(519);
_errHandler.sync(this);
- _la = _input.LA(1);
- while (_la==COMMA) {
- {
- {
- setState(556);
- match(COMMA);
- setState(557);
- string();
- }
- }
- setState(562);
- _errHandler.sync(this);
- _la = _input.LA(1);
- }
- setState(563);
- match(CLOSING_BRACKET);
- }
- break;
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -4313,89 +4135,120 @@ public final ConstantContext constant() throws RecognitionException {
_errHandler.recover(this, re);
}
finally {
- exitRule();
+ unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class ParameterContext extends ParserRuleContext {
- @SuppressWarnings("this-escape")
- public ParameterContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class ForkSubQueryProcessingCommandContext extends ParserRuleContext {
+ public ProcessingCommandContext processingCommand() {
+ return getRuleContext(ProcessingCommandContext.class,0);
}
- @Override public int getRuleIndex() { return RULE_parameter; }
-
@SuppressWarnings("this-escape")
- public ParameterContext() { }
- public void copyFrom(ParameterContext ctx) {
- super.copyFrom(ctx);
+ public ForkSubQueryProcessingCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- }
- @SuppressWarnings("CheckReturnValue")
- public static class InputNamedOrPositionalParamContext extends ParameterContext {
- public TerminalNode NAMED_OR_POSITIONAL_PARAM() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_PARAM, 0); }
- @SuppressWarnings("this-escape")
- public InputNamedOrPositionalParamContext(ParameterContext ctx) { copyFrom(ctx); }
+ @Override public int getRuleIndex() { return RULE_forkSubQueryProcessingCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalParam(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterForkSubQueryProcessingCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalParam(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitForkSubQueryProcessingCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalParam(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitForkSubQueryProcessingCommand(this);
else return visitor.visitChildren(this);
}
}
+
+ public final ForkSubQueryProcessingCommandContext forkSubQueryProcessingCommand() throws RecognitionException {
+ ForkSubQueryProcessingCommandContext _localctx = new ForkSubQueryProcessingCommandContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_forkSubQueryProcessingCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(520);
+ processingCommand();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
- public static class InputParamContext extends ParameterContext {
- public TerminalNode PARAM() { return getToken(EsqlBaseParser.PARAM, 0); }
+ public static class CompletionCommandContext extends ParserRuleContext {
+ public QualifiedNameContext targetField;
+ public PrimaryExpressionContext prompt;
+ public IdentifierOrParameterContext inferenceId;
+ public TerminalNode COMPLETION() { return getToken(EsqlBaseParser.COMPLETION, 0); }
+ public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ public IdentifierOrParameterContext identifierOrParameter() {
+ return getRuleContext(IdentifierOrParameterContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public InputParamContext(ParameterContext ctx) { copyFrom(ctx); }
+ public CompletionCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_completionCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParam(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCompletionCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParam(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCompletionCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParam(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCompletionCommand(this);
else return visitor.visitChildren(this);
}
}
- public final ParameterContext parameter() throws RecognitionException {
- ParameterContext _localctx = new ParameterContext(_ctx, getState());
- enterRule(_localctx, 82, RULE_parameter);
+ public final CompletionCommandContext completionCommand() throws RecognitionException {
+ CompletionCommandContext _localctx = new CompletionCommandContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_completionCommand);
try {
- setState(569);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(522);
+ match(COMPLETION);
+ setState(526);
_errHandler.sync(this);
- switch (_input.LA(1)) {
- case PARAM:
- _localctx = new InputParamContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(567);
- match(PARAM);
- }
- break;
- case NAMED_OR_POSITIONAL_PARAM:
- _localctx = new InputNamedOrPositionalParamContext(_localctx);
- enterOuterAlt(_localctx, 2);
+ switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
+ case 1:
{
- setState(568);
- match(NAMED_OR_POSITIONAL_PARAM);
+ setState(523);
+ ((CompletionCommandContext)_localctx).targetField = qualifiedName();
+ setState(524);
+ match(ASSIGN);
}
break;
- default:
- throw new NoViableAltException(this);
+ }
+ setState(528);
+ ((CompletionCommandContext)_localctx).prompt = primaryExpression(0);
+ setState(529);
+ match(WITH);
+ setState(530);
+ ((CompletionCommandContext)_localctx).inferenceId = identifierOrParameter();
}
}
catch (RecognitionException re) {
@@ -4410,83 +4263,118 @@ public final ParameterContext parameter() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class DoubleParameterContext extends ParserRuleContext {
+ public static class LookupCommandContext extends ParserRuleContext {
+ public IndexPatternContext tableName;
+ public QualifiedNamePatternsContext matchFields;
+ public TerminalNode DEV_LOOKUP() { return getToken(EsqlBaseParser.DEV_LOOKUP, 0); }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public IndexPatternContext indexPattern() {
+ return getRuleContext(IndexPatternContext.class,0);
+ }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public DoubleParameterContext(ParserRuleContext parent, int invokingState) {
+ public LookupCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_doubleParameter; }
-
- @SuppressWarnings("this-escape")
- public DoubleParameterContext() { }
- public void copyFrom(DoubleParameterContext ctx) {
- super.copyFrom(ctx);
- }
- }
- @SuppressWarnings("CheckReturnValue")
- public static class InputDoubleParamsContext extends DoubleParameterContext {
- public TerminalNode DOUBLE_PARAMS() { return getToken(EsqlBaseParser.DOUBLE_PARAMS, 0); }
- @SuppressWarnings("this-escape")
- public InputDoubleParamsContext(DoubleParameterContext ctx) { copyFrom(ctx); }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputDoubleParams(this);
+ @Override public int getRuleIndex() { return RULE_lookupCommand; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLookupCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputDoubleParams(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLookupCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputDoubleParams(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLookupCommand(this);
else return visitor.visitChildren(this);
}
}
+
+ public final LookupCommandContext lookupCommand() throws RecognitionException {
+ LookupCommandContext _localctx = new LookupCommandContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_lookupCommand);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(532);
+ match(DEV_LOOKUP);
+ setState(533);
+ ((LookupCommandContext)_localctx).tableName = indexPattern();
+ setState(534);
+ match(ON);
+ setState(535);
+ ((LookupCommandContext)_localctx).matchFields = qualifiedNamePatterns();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
@SuppressWarnings("CheckReturnValue")
- public static class InputNamedOrPositionalDoubleParamsContext extends DoubleParameterContext {
- public TerminalNode NAMED_OR_POSITIONAL_DOUBLE_PARAMS() { return getToken(EsqlBaseParser.NAMED_OR_POSITIONAL_DOUBLE_PARAMS, 0); }
+ public static class InlinestatsCommandContext extends ParserRuleContext {
+ public AggFieldsContext stats;
+ public FieldsContext grouping;
+ public TerminalNode DEV_INLINESTATS() { return getToken(EsqlBaseParser.DEV_INLINESTATS, 0); }
+ public AggFieldsContext aggFields() {
+ return getRuleContext(AggFieldsContext.class,0);
+ }
+ public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
+ public FieldsContext fields() {
+ return getRuleContext(FieldsContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public InputNamedOrPositionalDoubleParamsContext(DoubleParameterContext ctx) { copyFrom(ctx); }
+ public InlinestatsCommandContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inlinestatsCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputNamedOrPositionalDoubleParams(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlinestatsCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputNamedOrPositionalDoubleParams(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlinestatsCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputNamedOrPositionalDoubleParams(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlinestatsCommand(this);
else return visitor.visitChildren(this);
}
}
- public final DoubleParameterContext doubleParameter() throws RecognitionException {
- DoubleParameterContext _localctx = new DoubleParameterContext(_ctx, getState());
- enterRule(_localctx, 84, RULE_doubleParameter);
+ public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionException {
+ InlinestatsCommandContext _localctx = new InlinestatsCommandContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_inlinestatsCommand);
try {
- setState(573);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(537);
+ match(DEV_INLINESTATS);
+ setState(538);
+ ((InlinestatsCommandContext)_localctx).stats = aggFields();
+ setState(541);
_errHandler.sync(this);
- switch (_input.LA(1)) {
- case DOUBLE_PARAMS:
- _localctx = new InputDoubleParamsContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(571);
- match(DOUBLE_PARAMS);
- }
- break;
- case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
- _localctx = new InputNamedOrPositionalDoubleParamsContext(_localctx);
- enterOuterAlt(_localctx, 2);
+ switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
+ case 1:
{
- setState(572);
- match(NAMED_OR_POSITIONAL_DOUBLE_PARAMS);
+ setState(539);
+ match(BY);
+ setState(540);
+ ((InlinestatsCommandContext)_localctx).grouping = fields();
}
break;
- default:
- throw new NoViableAltException(this);
+ }
}
}
catch (RecognitionException re) {
@@ -4501,69 +4389,41 @@ public final DoubleParameterContext doubleParameter() throws RecognitionExceptio
}
@SuppressWarnings("CheckReturnValue")
- public static class IdentifierOrParameterContext extends ParserRuleContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
- public ParameterContext parameter() {
- return getRuleContext(ParameterContext.class,0);
- }
- public DoubleParameterContext doubleParameter() {
- return getRuleContext(DoubleParameterContext.class,0);
+ public static class InsistCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_INSIST() { return getToken(EsqlBaseParser.DEV_INSIST, 0); }
+ public QualifiedNamePatternsContext qualifiedNamePatterns() {
+ return getRuleContext(QualifiedNamePatternsContext.class,0);
}
@SuppressWarnings("this-escape")
- public IdentifierOrParameterContext(ParserRuleContext parent, int invokingState) {
+ public InsistCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_identifierOrParameter; }
+ @Override public int getRuleIndex() { return RULE_insistCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIdentifierOrParameter(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInsistCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIdentifierOrParameter(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInsistCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIdentifierOrParameter(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInsistCommand(this);
else return visitor.visitChildren(this);
}
}
- public final IdentifierOrParameterContext identifierOrParameter() throws RecognitionException {
- IdentifierOrParameterContext _localctx = new IdentifierOrParameterContext(_ctx, getState());
- enterRule(_localctx, 86, RULE_identifierOrParameter);
+ public final InsistCommandContext insistCommand() throws RecognitionException {
+ InsistCommandContext _localctx = new InsistCommandContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_insistCommand);
try {
- setState(578);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case UNQUOTED_IDENTIFIER:
- case QUOTED_IDENTIFIER:
- enterOuterAlt(_localctx, 1);
- {
- setState(575);
- identifier();
- }
- break;
- case PARAM:
- case NAMED_OR_POSITIONAL_PARAM:
- enterOuterAlt(_localctx, 2);
- {
- setState(576);
- parameter();
- }
- break;
- case DOUBLE_PARAMS:
- case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
- enterOuterAlt(_localctx, 3);
- {
- setState(577);
- doubleParameter();
- }
- break;
- default:
- throw new NoViableAltException(this);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(543);
+ match(DEV_INSIST);
+ setState(544);
+ qualifiedNamePatterns();
}
}
catch (RecognitionException re) {
@@ -4578,41 +4438,36 @@ public final IdentifierOrParameterContext identifierOrParameter() throws Recogni
}
@SuppressWarnings("CheckReturnValue")
- public static class LimitCommandContext extends ParserRuleContext {
- public TerminalNode LIMIT() { return getToken(EsqlBaseParser.LIMIT, 0); }
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
- }
+ public static class FuseCommandContext extends ParserRuleContext {
+ public TerminalNode DEV_FUSE() { return getToken(EsqlBaseParser.DEV_FUSE, 0); }
@SuppressWarnings("this-escape")
- public LimitCommandContext(ParserRuleContext parent, int invokingState) {
+ public FuseCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_limitCommand; }
+ @Override public int getRuleIndex() { return RULE_fuseCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLimitCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFuseCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLimitCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFuseCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLimitCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFuseCommand(this);
else return visitor.visitChildren(this);
}
}
- public final LimitCommandContext limitCommand() throws RecognitionException {
- LimitCommandContext _localctx = new LimitCommandContext(_ctx, getState());
- enterRule(_localctx, 88, RULE_limitCommand);
+ public final FuseCommandContext fuseCommand() throws RecognitionException {
+ FuseCommandContext _localctx = new FuseCommandContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_fuseCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(580);
- match(LIMIT);
- setState(581);
- constant();
+ setState(546);
+ match(DEV_FUSE);
}
}
catch (RecognitionException re) {
@@ -4627,66 +4482,63 @@ public final LimitCommandContext limitCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class SortCommandContext extends ParserRuleContext {
- public TerminalNode SORT() { return getToken(EsqlBaseParser.SORT, 0); }
- public List orderExpression() {
- return getRuleContexts(OrderExpressionContext.class);
+ public static class InferenceCommandOptionsContext extends ParserRuleContext {
+ public List inferenceCommandOption() {
+ return getRuleContexts(InferenceCommandOptionContext.class);
}
- public OrderExpressionContext orderExpression(int i) {
- return getRuleContext(OrderExpressionContext.class,i);
+ public InferenceCommandOptionContext inferenceCommandOption(int i) {
+ return getRuleContext(InferenceCommandOptionContext.class,i);
}
public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public SortCommandContext(ParserRuleContext parent, int invokingState) {
+ public InferenceCommandOptionsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_sortCommand; }
+ @Override public int getRuleIndex() { return RULE_inferenceCommandOptions; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSortCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOptions(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSortCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOptions(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSortCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOptions(this);
else return visitor.visitChildren(this);
}
}
- public final SortCommandContext sortCommand() throws RecognitionException {
- SortCommandContext _localctx = new SortCommandContext(_ctx, getState());
- enterRule(_localctx, 90, RULE_sortCommand);
+ public final InferenceCommandOptionsContext inferenceCommandOptions() throws RecognitionException {
+ InferenceCommandOptionsContext _localctx = new InferenceCommandOptionsContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_inferenceCommandOptions);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(583);
- match(SORT);
- setState(584);
- orderExpression();
- setState(589);
+ setState(548);
+ inferenceCommandOption();
+ setState(553);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,39,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(585);
+ setState(549);
match(COMMA);
- setState(586);
- orderExpression();
+ setState(550);
+ inferenceCommandOption();
}
}
}
- setState(591);
+ setState(555);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,52,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,39,_ctx);
}
}
}
@@ -4702,86 +4554,46 @@ public final SortCommandContext sortCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class OrderExpressionContext extends ParserRuleContext {
- public Token ordering;
- public Token nullOrdering;
- public BooleanExpressionContext booleanExpression() {
- return getRuleContext(BooleanExpressionContext.class,0);
+ public static class InferenceCommandOptionContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
+ public InferenceCommandOptionValueContext inferenceCommandOptionValue() {
+ return getRuleContext(InferenceCommandOptionValueContext.class,0);
}
- public TerminalNode NULLS() { return getToken(EsqlBaseParser.NULLS, 0); }
- public TerminalNode ASC() { return getToken(EsqlBaseParser.ASC, 0); }
- public TerminalNode DESC() { return getToken(EsqlBaseParser.DESC, 0); }
- public TerminalNode FIRST() { return getToken(EsqlBaseParser.FIRST, 0); }
- public TerminalNode LAST() { return getToken(EsqlBaseParser.LAST, 0); }
@SuppressWarnings("this-escape")
- public OrderExpressionContext(ParserRuleContext parent, int invokingState) {
+ public InferenceCommandOptionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_orderExpression; }
+ @Override public int getRuleIndex() { return RULE_inferenceCommandOption; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOrderExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOption(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOrderExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOption(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOrderExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOption(this);
else return visitor.visitChildren(this);
}
}
- public final OrderExpressionContext orderExpression() throws RecognitionException {
- OrderExpressionContext _localctx = new OrderExpressionContext(_ctx, getState());
- enterRule(_localctx, 92, RULE_orderExpression);
- int _la;
+ public final InferenceCommandOptionContext inferenceCommandOption() throws RecognitionException {
+ InferenceCommandOptionContext _localctx = new InferenceCommandOptionContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_inferenceCommandOption);
try {
enterOuterAlt(_localctx, 1);
{
- setState(592);
- booleanExpression(0);
- setState(594);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
- case 1:
- {
- setState(593);
- ((OrderExpressionContext)_localctx).ordering = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==ASC || _la==DESC) ) {
- ((OrderExpressionContext)_localctx).ordering = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- break;
- }
- setState(598);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
- case 1:
- {
- setState(596);
- match(NULLS);
- setState(597);
- ((OrderExpressionContext)_localctx).nullOrdering = _input.LT(1);
- _la = _input.LA(1);
- if ( !(_la==FIRST || _la==LAST) ) {
- ((OrderExpressionContext)_localctx).nullOrdering = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- break;
- }
+ setState(556);
+ identifier();
+ setState(557);
+ match(ASSIGN);
+ setState(558);
+ inferenceCommandOptionValue();
}
}
catch (RecognitionException re) {
@@ -4796,41 +4608,67 @@ public final OrderExpressionContext orderExpression() throws RecognitionExceptio
}
@SuppressWarnings("CheckReturnValue")
- public static class KeepCommandContext extends ParserRuleContext {
- public TerminalNode KEEP() { return getToken(EsqlBaseParser.KEEP, 0); }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
+ public static class InferenceCommandOptionValueContext extends ParserRuleContext {
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
}
@SuppressWarnings("this-escape")
- public KeepCommandContext(ParserRuleContext parent, int invokingState) {
+ public InferenceCommandOptionValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_keepCommand; }
+ @Override public int getRuleIndex() { return RULE_inferenceCommandOptionValue; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterKeepCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOptionValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitKeepCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOptionValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitKeepCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOptionValue(this);
else return visitor.visitChildren(this);
}
}
- public final KeepCommandContext keepCommand() throws RecognitionException {
- KeepCommandContext _localctx = new KeepCommandContext(_ctx, getState());
- enterRule(_localctx, 94, RULE_keepCommand);
+ public final InferenceCommandOptionValueContext inferenceCommandOptionValue() throws RecognitionException {
+ InferenceCommandOptionValueContext _localctx = new InferenceCommandOptionValueContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_inferenceCommandOptionValue);
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(600);
- match(KEEP);
- setState(601);
- qualifiedNamePatterns();
+ setState(562);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case QUOTED_STRING:
+ case INTEGER_LITERAL:
+ case DECIMAL_LITERAL:
+ case FALSE:
+ case NULL:
+ case PARAM:
+ case TRUE:
+ case PLUS:
+ case MINUS:
+ case NAMED_OR_POSITIONAL_PARAM:
+ case OPENING_BRACKET:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(560);
+ constant();
+ }
+ break;
+ case UNQUOTED_IDENTIFIER:
+ case QUOTED_IDENTIFIER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(561);
+ identifier();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -4845,41 +4683,66 @@ public final KeepCommandContext keepCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class DropCommandContext extends ParserRuleContext {
- public TerminalNode DROP() { return getToken(EsqlBaseParser.DROP, 0); }
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
+ public static class RerankCommandContext extends ParserRuleContext {
+ public ConstantContext queryText;
+ public TerminalNode DEV_RERANK() { return getToken(EsqlBaseParser.DEV_RERANK, 0); }
+ public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
+ public RerankFieldsContext rerankFields() {
+ return getRuleContext(RerankFieldsContext.class,0);
+ }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
+ public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
+ public InferenceCommandOptionsContext inferenceCommandOptions() {
+ return getRuleContext(InferenceCommandOptionsContext.class,0);
}
@SuppressWarnings("this-escape")
- public DropCommandContext(ParserRuleContext parent, int invokingState) {
+ public RerankCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_dropCommand; }
+ @Override public int getRuleIndex() { return RULE_rerankCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDropCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDropCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDropCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankCommand(this);
else return visitor.visitChildren(this);
}
}
- public final DropCommandContext dropCommand() throws RecognitionException {
- DropCommandContext _localctx = new DropCommandContext(_ctx, getState());
- enterRule(_localctx, 96, RULE_dropCommand);
+ public final RerankCommandContext rerankCommand() throws RecognitionException {
+ RerankCommandContext _localctx = new RerankCommandContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_rerankCommand);
try {
enterOuterAlt(_localctx, 1);
{
- setState(603);
- match(DROP);
- setState(604);
- qualifiedNamePatterns();
+ setState(564);
+ match(DEV_RERANK);
+ setState(565);
+ ((RerankCommandContext)_localctx).queryText = constant();
+ setState(566);
+ match(ON);
+ setState(567);
+ rerankFields();
+ setState(570);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
+ case 1:
+ {
+ setState(568);
+ match(WITH);
+ setState(569);
+ inferenceCommandOptions();
+ }
+ break;
+ }
}
}
catch (RecognitionException re) {
@@ -4894,383 +4757,360 @@ public final DropCommandContext dropCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class RenameCommandContext extends ParserRuleContext {
- public TerminalNode RENAME() { return getToken(EsqlBaseParser.RENAME, 0); }
- public List renameClause() {
- return getRuleContexts(RenameClauseContext.class);
+ public static class BooleanExpressionContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public BooleanExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public RenameClauseContext renameClause(int i) {
- return getRuleContext(RenameClauseContext.class,i);
+ @Override public int getRuleIndex() { return RULE_booleanExpression; }
+
+ @SuppressWarnings("this-escape")
+ public BooleanExpressionContext() { }
+ public void copyFrom(BooleanExpressionContext ctx) {
+ super.copyFrom(ctx);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class MatchExpressionContext extends BooleanExpressionContext {
+ public MatchBooleanExpressionContext matchBooleanExpression() {
+ return getRuleContext(MatchBooleanExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public RenameCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_renameCommand; }
+ public MatchExpressionContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMatchExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMatchExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMatchExpression(this);
else return visitor.visitChildren(this);
}
}
-
- public final RenameCommandContext renameCommand() throws RecognitionException {
- RenameCommandContext _localctx = new RenameCommandContext(_ctx, getState());
- enterRule(_localctx, 98, RULE_renameCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(606);
- match(RENAME);
- setState(607);
- renameClause();
- setState(612);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,55,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(608);
- match(COMMA);
- setState(609);
- renameClause();
- }
- }
- }
- setState(614);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,55,_ctx);
- }
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class LogicalNotContext extends BooleanExpressionContext {
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ @SuppressWarnings("this-escape")
+ public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalNot(this);
}
- finally {
- exitRule();
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalNot(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalNot(this);
+ else return visitor.visitChildren(this);
}
- return _localctx;
}
-
@SuppressWarnings("CheckReturnValue")
- public static class RenameClauseContext extends ParserRuleContext {
- public QualifiedNamePatternContext oldName;
- public QualifiedNamePatternContext newName;
- public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
+ public static class BooleanDefaultContext extends BooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
@SuppressWarnings("this-escape")
- public RenameClauseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_renameClause; }
+ public BooleanDefaultContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRenameClause(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanDefault(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRenameClause(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanDefault(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRenameClause(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanDefault(this);
else return visitor.visitChildren(this);
}
}
-
- public final RenameClauseContext renameClause() throws RecognitionException {
- RenameClauseContext _localctx = new RenameClauseContext(_ctx, getState());
- enterRule(_localctx, 100, RULE_renameClause);
- try {
- setState(623);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
- case 1:
- enterOuterAlt(_localctx, 1);
- {
- setState(615);
- ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
- setState(616);
- match(AS);
- setState(617);
- ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
- }
- break;
- case 2:
- enterOuterAlt(_localctx, 2);
- {
- setState(619);
- ((RenameClauseContext)_localctx).newName = qualifiedNamePattern();
- setState(620);
- match(ASSIGN);
- setState(621);
- ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern();
- }
- break;
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class IsNullContext extends BooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class DissectCommandContext extends ParserRuleContext {
- public TerminalNode DISSECT() { return getToken(EsqlBaseParser.DISSECT, 0); }
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
- }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
- }
- public CommandOptionsContext commandOptions() {
- return getRuleContext(CommandOptionsContext.class,0);
- }
- @SuppressWarnings("this-escape")
- public DissectCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_dissectCommand; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDissectCommand(this);
+ public TerminalNode IS() { return getToken(EsqlBaseParser.IS, 0); }
+ public TerminalNode NULL() { return getToken(EsqlBaseParser.NULL, 0); }
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ @SuppressWarnings("this-escape")
+ public IsNullContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIsNull(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDissectCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIsNull(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDissectCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIsNull(this);
else return visitor.visitChildren(this);
}
}
-
- public final DissectCommandContext dissectCommand() throws RecognitionException {
- DissectCommandContext _localctx = new DissectCommandContext(_ctx, getState());
- enterRule(_localctx, 102, RULE_dissectCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(625);
- match(DISSECT);
- setState(626);
- primaryExpression(0);
- setState(627);
- string();
- setState(629);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
- case 1:
- {
- setState(628);
- commandOptions();
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class GrokCommandContext extends ParserRuleContext {
- public TerminalNode GROK() { return getToken(EsqlBaseParser.GROK, 0); }
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
- }
- public StringContext string() {
- return getRuleContext(StringContext.class,0);
+ public static class RegexExpressionContext extends BooleanExpressionContext {
+ public RegexBooleanExpressionContext regexBooleanExpression() {
+ return getRuleContext(RegexBooleanExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public GrokCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_grokCommand; }
+ public RegexExpressionContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterGrokCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRegexExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitGrokCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRegexExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitGrokCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRegexExpression(this);
else return visitor.visitChildren(this);
}
}
-
- public final GrokCommandContext grokCommand() throws RecognitionException {
- GrokCommandContext _localctx = new GrokCommandContext(_ctx, getState());
- enterRule(_localctx, 104, RULE_grokCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(631);
- match(GROK);
- setState(632);
- primaryExpression(0);
- setState(633);
- string();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ @SuppressWarnings("CheckReturnValue")
+ public static class LogicalInContext extends BooleanExpressionContext {
+ public List valueExpression() {
+ return getRuleContexts(ValueExpressionContext.class);
}
- finally {
- exitRule();
+ public ValueExpressionContext valueExpression(int i) {
+ return getRuleContext(ValueExpressionContext.class,i);
}
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class MvExpandCommandContext extends ParserRuleContext {
- public TerminalNode MV_EXPAND() { return getToken(EsqlBaseParser.MV_EXPAND, 0); }
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
+ public TerminalNode IN() { return getToken(EsqlBaseParser.IN, 0); }
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public MvExpandCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_mvExpandCommand; }
+ public LogicalInContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMvExpandCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalIn(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMvExpandCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalIn(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMvExpandCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalIn(this);
else return visitor.visitChildren(this);
}
}
-
- public final MvExpandCommandContext mvExpandCommand() throws RecognitionException {
- MvExpandCommandContext _localctx = new MvExpandCommandContext(_ctx, getState());
- enterRule(_localctx, 106, RULE_mvExpandCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(635);
- match(MV_EXPAND);
- setState(636);
- qualifiedName();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class CommandOptionsContext extends ParserRuleContext {
- public List commandOption() {
- return getRuleContexts(CommandOptionContext.class);
- }
- public CommandOptionContext commandOption(int i) {
- return getRuleContext(CommandOptionContext.class,i);
+ public static class LogicalBinaryContext extends BooleanExpressionContext {
+ public BooleanExpressionContext left;
+ public Token operator;
+ public BooleanExpressionContext right;
+ public List booleanExpression() {
+ return getRuleContexts(BooleanExpressionContext.class);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ public BooleanExpressionContext booleanExpression(int i) {
+ return getRuleContext(BooleanExpressionContext.class,i);
}
+ public TerminalNode AND() { return getToken(EsqlBaseParser.AND, 0); }
+ public TerminalNode OR() { return getToken(EsqlBaseParser.OR, 0); }
@SuppressWarnings("this-escape")
- public CommandOptionsContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_commandOptions; }
+ public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOptions(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLogicalBinary(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOptions(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLogicalBinary(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOptions(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLogicalBinary(this);
else return visitor.visitChildren(this);
}
}
- public final CommandOptionsContext commandOptions() throws RecognitionException {
- CommandOptionsContext _localctx = new CommandOptionsContext(_ctx, getState());
- enterRule(_localctx, 108, RULE_commandOptions);
+ public final BooleanExpressionContext booleanExpression() throws RecognitionException {
+ return booleanExpression(0);
+ }
+
+ private BooleanExpressionContext booleanExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState);
+ BooleanExpressionContext _prevctx = _localctx;
+ int _startState = 132;
+ enterRecursionRule(_localctx, 132, RULE_booleanExpression, _p);
+ int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(638);
- commandOption();
- setState(643);
+ setState(601);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,58,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
+ switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
+ case 1:
+ {
+ _localctx = new LogicalNotContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(573);
+ match(NOT);
+ setState(574);
+ booleanExpression(8);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new BooleanDefaultContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(575);
+ valueExpression();
+ }
+ break;
+ case 3:
+ {
+ _localctx = new RegexExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(576);
+ regexBooleanExpression();
+ }
+ break;
+ case 4:
+ {
+ _localctx = new LogicalInContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(577);
+ valueExpression();
+ setState(579);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(578);
+ match(NOT);
+ }
+ }
+
+ setState(581);
+ match(IN);
+ setState(582);
+ match(LP);
+ setState(583);
+ valueExpression();
+ setState(588);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
{
{
- setState(639);
+ setState(584);
match(COMMA);
- setState(640);
- commandOption();
+ setState(585);
+ valueExpression();
}
- }
+ }
+ setState(590);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
}
- setState(645);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,58,_ctx);
- }
+ setState(591);
+ match(RP);
+ }
+ break;
+ case 5:
+ {
+ _localctx = new IsNullContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(593);
+ valueExpression();
+ setState(594);
+ match(IS);
+ setState(596);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(595);
+ match(NOT);
+ }
+ }
+
+ setState(598);
+ match(NULL);
+ }
+ break;
+ case 6:
+ {
+ _localctx = new MatchExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(600);
+ matchBooleanExpression();
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(611);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,47,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(609);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
+ case 1:
+ {
+ _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
+ ((LogicalBinaryContext)_localctx).left = _prevctx;
+ pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
+ setState(603);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+ setState(604);
+ ((LogicalBinaryContext)_localctx).operator = match(AND);
+ setState(605);
+ ((LogicalBinaryContext)_localctx).right = booleanExpression(6);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState));
+ ((LogicalBinaryContext)_localctx).left = _prevctx;
+ pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression);
+ setState(606);
+ if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
+ setState(607);
+ ((LogicalBinaryContext)_localctx).operator = match(OR);
+ setState(608);
+ ((LogicalBinaryContext)_localctx).right = booleanExpression(5);
+ }
+ break;
+ }
+ }
+ }
+ setState(613);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,47,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -5279,167 +5119,283 @@ public final CommandOptionsContext commandOptions() throws RecognitionException
_errHandler.recover(this, re);
}
finally {
- exitRule();
+ unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class CommandOptionContext extends ParserRuleContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
- }
+ public static class RegexBooleanExpressionContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public CommandOptionContext(ParserRuleContext parent, int invokingState) {
+ public RegexBooleanExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_commandOption; }
+ @Override public int getRuleIndex() { return RULE_regexBooleanExpression; }
+
+ @SuppressWarnings("this-escape")
+ public RegexBooleanExpressionContext() { }
+ public void copyFrom(RegexBooleanExpressionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class LikeExpressionContext extends RegexBooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
+ }
+ public TerminalNode LIKE() { return getToken(EsqlBaseParser.LIKE, 0); }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
+ }
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ @SuppressWarnings("this-escape")
+ public LikeExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCommandOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLikeExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCommandOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLikeExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCommandOption(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLikeExpression(this);
else return visitor.visitChildren(this);
}
}
-
- public final CommandOptionContext commandOption() throws RecognitionException {
- CommandOptionContext _localctx = new CommandOptionContext(_ctx, getState());
- enterRule(_localctx, 110, RULE_commandOption);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(646);
- identifier();
- setState(647);
- match(ASSIGN);
- setState(648);
- constant();
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class LikeListExpressionContext extends RegexBooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ public TerminalNode LIKE() { return getToken(EsqlBaseParser.LIKE, 0); }
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public List string() {
+ return getRuleContexts(StringContext.class);
}
- finally {
- exitRule();
+ public StringContext string(int i) {
+ return getRuleContext(StringContext.class,i);
}
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class BooleanValueContext extends ParserRuleContext {
- public TerminalNode TRUE() { return getToken(EsqlBaseParser.TRUE, 0); }
- public TerminalNode FALSE() { return getToken(EsqlBaseParser.FALSE, 0); }
- @SuppressWarnings("this-escape")
- public BooleanValueContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
}
- @Override public int getRuleIndex() { return RULE_booleanValue; }
+ @SuppressWarnings("this-escape")
+ public LikeListExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLikeListExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLikeListExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanValue(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLikeListExpression(this);
else return visitor.visitChildren(this);
}
}
-
- public final BooleanValueContext booleanValue() throws RecognitionException {
- BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState());
- enterRule(_localctx, 112, RULE_booleanValue);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(650);
- _la = _input.LA(1);
- if ( !(_la==FALSE || _la==TRUE) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class RlikeExpressionContext extends RegexBooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ public TerminalNode RLIKE() { return getToken(EsqlBaseParser.RLIKE, 0); }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
}
- finally {
- exitRule();
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ @SuppressWarnings("this-escape")
+ public RlikeExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRlikeExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRlikeExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRlikeExpression(this);
+ else return visitor.visitChildren(this);
}
- return _localctx;
}
-
@SuppressWarnings("CheckReturnValue")
- public static class NumericValueContext extends ParserRuleContext {
- public DecimalValueContext decimalValue() {
- return getRuleContext(DecimalValueContext.class,0);
+ public static class RlikeListExpressionContext extends RegexBooleanExpressionContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
- public IntegerValueContext integerValue() {
- return getRuleContext(IntegerValueContext.class,0);
+ public TerminalNode RLIKE() { return getToken(EsqlBaseParser.RLIKE, 0); }
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public List string() {
+ return getRuleContexts(StringContext.class);
}
- @SuppressWarnings("this-escape")
- public NumericValueContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public StringContext string(int i) {
+ return getRuleContext(StringContext.class,i);
}
- @Override public int getRuleIndex() { return RULE_numericValue; }
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ public TerminalNode NOT() { return getToken(EsqlBaseParser.NOT, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public RlikeListExpressionContext(RegexBooleanExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNumericValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRlikeListExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNumericValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRlikeListExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNumericValue(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRlikeListExpression(this);
else return visitor.visitChildren(this);
}
}
- public final NumericValueContext numericValue() throws RecognitionException {
- NumericValueContext _localctx = new NumericValueContext(_ctx, getState());
- enterRule(_localctx, 114, RULE_numericValue);
+ public final RegexBooleanExpressionContext regexBooleanExpression() throws RecognitionException {
+ RegexBooleanExpressionContext _localctx = new RegexBooleanExpressionContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_regexBooleanExpression);
+ int _la;
try {
- setState(654);
+ setState(660);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
case 1:
+ _localctx = new LikeExpressionContext(_localctx);
enterOuterAlt(_localctx, 1);
{
- setState(652);
- decimalValue();
+ setState(614);
+ valueExpression();
+ setState(616);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(615);
+ match(NOT);
+ }
+ }
+
+ setState(618);
+ match(LIKE);
+ setState(619);
+ string();
}
break;
case 2:
+ _localctx = new RlikeExpressionContext(_localctx);
enterOuterAlt(_localctx, 2);
{
- setState(653);
- integerValue();
- }
+ setState(621);
+ valueExpression();
+ setState(623);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(622);
+ match(NOT);
+ }
+ }
+
+ setState(625);
+ match(RLIKE);
+ setState(626);
+ string();
+ }
+ break;
+ case 3:
+ _localctx = new LikeListExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(628);
+ valueExpression();
+ setState(630);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(629);
+ match(NOT);
+ }
+ }
+
+ setState(632);
+ match(LIKE);
+ setState(633);
+ match(LP);
+ setState(634);
+ string();
+ setState(639);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(635);
+ match(COMMA);
+ setState(636);
+ string();
+ }
+ }
+ setState(641);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(642);
+ match(RP);
+ }
+ break;
+ case 4:
+ _localctx = new RlikeListExpressionContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(644);
+ valueExpression();
+ setState(646);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==NOT) {
+ {
+ setState(645);
+ match(NOT);
+ }
+ }
+
+ setState(648);
+ match(RLIKE);
+ setState(649);
+ match(LP);
+ setState(650);
+ string();
+ setState(655);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(651);
+ match(COMMA);
+ setState(652);
+ string();
+ }
+ }
+ setState(657);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(658);
+ match(RP);
+ }
break;
}
}
@@ -5455,57 +5411,66 @@ public final NumericValueContext numericValue() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class DecimalValueContext extends ParserRuleContext {
- public TerminalNode DECIMAL_LITERAL() { return getToken(EsqlBaseParser.DECIMAL_LITERAL, 0); }
- public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
- public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
+ public static class MatchBooleanExpressionContext extends ParserRuleContext {
+ public QualifiedNameContext fieldExp;
+ public DataTypeContext fieldType;
+ public ConstantContext matchQuery;
+ public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
+ public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
+ public DataTypeContext dataType() {
+ return getRuleContext(DataTypeContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public DecimalValueContext(ParserRuleContext parent, int invokingState) {
+ public MatchBooleanExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_decimalValue; }
+ @Override public int getRuleIndex() { return RULE_matchBooleanExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDecimalValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMatchBooleanExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDecimalValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMatchBooleanExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDecimalValue(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMatchBooleanExpression(this);
else return visitor.visitChildren(this);
}
}
- public final DecimalValueContext decimalValue() throws RecognitionException {
- DecimalValueContext _localctx = new DecimalValueContext(_ctx, getState());
- enterRule(_localctx, 116, RULE_decimalValue);
+ public final MatchBooleanExpressionContext matchBooleanExpression() throws RecognitionException {
+ MatchBooleanExpressionContext _localctx = new MatchBooleanExpressionContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_matchBooleanExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(657);
+ setState(662);
+ ((MatchBooleanExpressionContext)_localctx).fieldExp = qualifiedName();
+ setState(665);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==PLUS || _la==MINUS) {
+ if (_la==CAST_OP) {
{
- setState(656);
- _la = _input.LA(1);
- if ( !(_la==PLUS || _la==MINUS) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
+ setState(663);
+ match(CAST_OP);
+ setState(664);
+ ((MatchBooleanExpressionContext)_localctx).fieldType = dataType();
}
}
- setState(659);
- match(DECIMAL_LITERAL);
+ setState(667);
+ match(COLON);
+ setState(668);
+ ((MatchBooleanExpressionContext)_localctx).matchQuery = constant();
}
}
catch (RecognitionException re) {
@@ -5520,101 +5485,97 @@ public final DecimalValueContext decimalValue() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class IntegerValueContext extends ParserRuleContext {
- public TerminalNode INTEGER_LITERAL() { return getToken(EsqlBaseParser.INTEGER_LITERAL, 0); }
- public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
- public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
+ public static class ValueExpressionContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public IntegerValueContext(ParserRuleContext parent, int invokingState) {
+ public ValueExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_integerValue; }
+ @Override public int getRuleIndex() { return RULE_valueExpression; }
+
+ @SuppressWarnings("this-escape")
+ public ValueExpressionContext() { }
+ public void copyFrom(ValueExpressionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ValueExpressionDefaultContext extends ValueExpressionContext {
+ public OperatorExpressionContext operatorExpression() {
+ return getRuleContext(OperatorExpressionContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIntegerValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterValueExpressionDefault(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIntegerValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitValueExpressionDefault(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIntegerValue(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitValueExpressionDefault(this);
else return visitor.visitChildren(this);
}
}
-
- public final IntegerValueContext integerValue() throws RecognitionException {
- IntegerValueContext _localctx = new IntegerValueContext(_ctx, getState());
- enterRule(_localctx, 118, RULE_integerValue);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(662);
- _errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==PLUS || _la==MINUS) {
- {
- setState(661);
- _la = _input.LA(1);
- if ( !(_la==PLUS || _la==MINUS) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- }
-
- setState(664);
- match(INTEGER_LITERAL);
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ComparisonContext extends ValueExpressionContext {
+ public OperatorExpressionContext left;
+ public OperatorExpressionContext right;
+ public ComparisonOperatorContext comparisonOperator() {
+ return getRuleContext(ComparisonOperatorContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ public List operatorExpression() {
+ return getRuleContexts(OperatorExpressionContext.class);
}
- finally {
- exitRule();
+ public OperatorExpressionContext operatorExpression(int i) {
+ return getRuleContext(OperatorExpressionContext.class,i);
}
- return _localctx;
- }
-
- @SuppressWarnings("CheckReturnValue")
- public static class StringContext extends ParserRuleContext {
- public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
@SuppressWarnings("this-escape")
- public StringContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_string; }
+ public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterComparison(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitString(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitComparison(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitString(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitComparison(this);
else return visitor.visitChildren(this);
}
}
- public final StringContext string() throws RecognitionException {
- StringContext _localctx = new StringContext(_ctx, getState());
- enterRule(_localctx, 120, RULE_string);
+ public final ValueExpressionContext valueExpression() throws RecognitionException {
+ ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_valueExpression);
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(666);
- match(QUOTED_STRING);
+ setState(675);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
+ case 1:
+ _localctx = new ValueExpressionDefaultContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(670);
+ operatorExpression(0);
+ }
+ break;
+ case 2:
+ _localctx = new ComparisonContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(671);
+ ((ComparisonContext)_localctx).left = operatorExpression(0);
+ setState(672);
+ comparisonOperator();
+ setState(673);
+ ((ComparisonContext)_localctx).right = operatorExpression(0);
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -5629,151 +5590,210 @@ public final StringContext string() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class ComparisonOperatorContext extends ParserRuleContext {
- public TerminalNode EQ() { return getToken(EsqlBaseParser.EQ, 0); }
- public TerminalNode NEQ() { return getToken(EsqlBaseParser.NEQ, 0); }
- public TerminalNode LT() { return getToken(EsqlBaseParser.LT, 0); }
- public TerminalNode LTE() { return getToken(EsqlBaseParser.LTE, 0); }
- public TerminalNode GT() { return getToken(EsqlBaseParser.GT, 0); }
- public TerminalNode GTE() { return getToken(EsqlBaseParser.GTE, 0); }
+ public static class OperatorExpressionContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
+ public OperatorExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_comparisonOperator; }
- @Override
- public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterComparisonOperator(this);
- }
+ @Override public int getRuleIndex() { return RULE_operatorExpression; }
+
+ @SuppressWarnings("this-escape")
+ public OperatorExpressionContext() { }
+ public void copyFrom(OperatorExpressionContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperatorExpressionDefaultContext extends OperatorExpressionContext {
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public OperatorExpressionDefaultContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterOperatorExpressionDefault(this);
+ }
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitComparisonOperator(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitOperatorExpressionDefault(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitComparisonOperator(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitOperatorExpressionDefault(this);
else return visitor.visitChildren(this);
}
}
-
- public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
- ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
- enterRule(_localctx, 122, RULE_comparisonOperator);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(668);
- _la = _input.LA(1);
- if ( !(((((_la - 62)) & ~0x3f) == 0 && ((1L << (_la - 62)) & 125L) != 0)) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class ExplainCommandContext extends ParserRuleContext {
- public TerminalNode EXPLAIN() { return getToken(EsqlBaseParser.EXPLAIN, 0); }
- public SubqueryExpressionContext subqueryExpression() {
- return getRuleContext(SubqueryExpressionContext.class,0);
+ public static class ArithmeticBinaryContext extends OperatorExpressionContext {
+ public OperatorExpressionContext left;
+ public Token operator;
+ public OperatorExpressionContext right;
+ public List operatorExpression() {
+ return getRuleContexts(OperatorExpressionContext.class);
}
- @SuppressWarnings("this-escape")
- public ExplainCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public OperatorExpressionContext operatorExpression(int i) {
+ return getRuleContext(OperatorExpressionContext.class,i);
}
- @Override public int getRuleIndex() { return RULE_explainCommand; }
+ public TerminalNode ASTERISK() { return getToken(EsqlBaseParser.ASTERISK, 0); }
+ public TerminalNode SLASH() { return getToken(EsqlBaseParser.SLASH, 0); }
+ public TerminalNode PERCENT() { return getToken(EsqlBaseParser.PERCENT, 0); }
+ public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
+ public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
+ @SuppressWarnings("this-escape")
+ public ArithmeticBinaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterExplainCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterArithmeticBinary(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitExplainCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitArithmeticBinary(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitExplainCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitArithmeticBinary(this);
else return visitor.visitChildren(this);
}
}
-
- public final ExplainCommandContext explainCommand() throws RecognitionException {
- ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState());
- enterRule(_localctx, 124, RULE_explainCommand);
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(670);
- match(EXPLAIN);
- setState(671);
- subqueryExpression();
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class SubqueryExpressionContext extends ParserRuleContext {
- public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
- public QueryContext query() {
- return getRuleContext(QueryContext.class,0);
+ public static class ArithmeticUnaryContext extends OperatorExpressionContext {
+ public Token operator;
+ public OperatorExpressionContext operatorExpression() {
+ return getRuleContext(OperatorExpressionContext.class,0);
}
- public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
+ public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
+ public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
@SuppressWarnings("this-escape")
- public SubqueryExpressionContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_subqueryExpression; }
+ public ArithmeticUnaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSubqueryExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterArithmeticUnary(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSubqueryExpression(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitArithmeticUnary(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSubqueryExpression(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitArithmeticUnary(this);
else return visitor.visitChildren(this);
}
}
- public final SubqueryExpressionContext subqueryExpression() throws RecognitionException {
- SubqueryExpressionContext _localctx = new SubqueryExpressionContext(_ctx, getState());
- enterRule(_localctx, 126, RULE_subqueryExpression);
+ public final OperatorExpressionContext operatorExpression() throws RecognitionException {
+ return operatorExpression(0);
+ }
+
+ private OperatorExpressionContext operatorExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ OperatorExpressionContext _localctx = new OperatorExpressionContext(_ctx, _parentState);
+ OperatorExpressionContext _prevctx = _localctx;
+ int _startState = 140;
+ enterRecursionRule(_localctx, 140, RULE_operatorExpression, _p);
+ int _la;
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(673);
- match(OPENING_BRACKET);
- setState(674);
- query(0);
- setState(675);
- match(CLOSING_BRACKET);
+ setState(681);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
+ case 1:
+ {
+ _localctx = new OperatorExpressionDefaultContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(678);
+ primaryExpression(0);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new ArithmeticUnaryContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(679);
+ ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==PLUS || _la==MINUS) ) {
+ ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(680);
+ operatorExpression(3);
+ }
+ break;
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(691);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,59,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(689);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
+ case 1:
+ {
+ _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
+ ((ArithmeticBinaryContext)_localctx).left = _prevctx;
+ pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
+ setState(683);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(684);
+ ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & 7L) != 0)) ) {
+ ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(685);
+ ((ArithmeticBinaryContext)_localctx).right = operatorExpression(3);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState));
+ ((ArithmeticBinaryContext)_localctx).left = _prevctx;
+ pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression);
+ setState(686);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(687);
+ ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !(_la==PLUS || _la==MINUS) ) {
+ ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(688);
+ ((ArithmeticBinaryContext)_localctx).right = operatorExpression(2);
+ }
+ break;
+ }
+ }
+ }
+ setState(693);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,59,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -5782,284 +5802,222 @@ public final SubqueryExpressionContext subqueryExpression() throws RecognitionEx
_errHandler.recover(this, re);
}
finally {
- exitRule();
+ unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class ShowCommandContext extends ParserRuleContext {
+ public static class PrimaryExpressionContext extends ParserRuleContext {
@SuppressWarnings("this-escape")
- public ShowCommandContext(ParserRuleContext parent, int invokingState) {
+ public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_showCommand; }
+ @Override public int getRuleIndex() { return RULE_primaryExpression; }
@SuppressWarnings("this-escape")
- public ShowCommandContext() { }
- public void copyFrom(ShowCommandContext ctx) {
+ public PrimaryExpressionContext() { }
+ public void copyFrom(PrimaryExpressionContext ctx) {
super.copyFrom(ctx);
}
}
@SuppressWarnings("CheckReturnValue")
- public static class ShowInfoContext extends ShowCommandContext {
- public TerminalNode SHOW() { return getToken(EsqlBaseParser.SHOW, 0); }
- public TerminalNode INFO() { return getToken(EsqlBaseParser.INFO, 0); }
+ public static class DereferenceContext extends PrimaryExpressionContext {
+ public QualifiedNameContext qualifiedName() {
+ return getRuleContext(QualifiedNameContext.class,0);
+ }
@SuppressWarnings("this-escape")
- public ShowInfoContext(ShowCommandContext ctx) { copyFrom(ctx); }
+ public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterShowInfo(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDereference(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitShowInfo(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDereference(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitShowInfo(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDereference(this);
else return visitor.visitChildren(this);
}
}
-
- public final ShowCommandContext showCommand() throws RecognitionException {
- ShowCommandContext _localctx = new ShowCommandContext(_ctx, getState());
- enterRule(_localctx, 128, RULE_showCommand);
- try {
- _localctx = new ShowInfoContext(_localctx);
- enterOuterAlt(_localctx, 1);
- {
- setState(677);
- match(SHOW);
- setState(678);
- match(INFO);
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class EnrichCommandContext extends ParserRuleContext {
- public EnrichPolicyNameContext policyName;
- public QualifiedNamePatternContext matchField;
- public TerminalNode ENRICH() { return getToken(EsqlBaseParser.ENRICH, 0); }
- public EnrichPolicyNameContext enrichPolicyName() {
- return getRuleContext(EnrichPolicyNameContext.class,0);
- }
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
- public List enrichWithClause() {
- return getRuleContexts(EnrichWithClauseContext.class);
- }
- public EnrichWithClauseContext enrichWithClause(int i) {
- return getRuleContext(EnrichWithClauseContext.class,i);
- }
- public QualifiedNamePatternContext qualifiedNamePattern() {
- return getRuleContext(QualifiedNamePatternContext.class,0);
+ public static class InlineCastContext extends PrimaryExpressionContext {
+ public PrimaryExpressionContext primaryExpression() {
+ return getRuleContext(PrimaryExpressionContext.class,0);
}
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
+ public TerminalNode CAST_OP() { return getToken(EsqlBaseParser.CAST_OP, 0); }
+ public DataTypeContext dataType() {
+ return getRuleContext(DataTypeContext.class,0);
}
@SuppressWarnings("this-escape")
- public EnrichCommandContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_enrichCommand; }
+ public InlineCastContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlineCast(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlineCast(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlineCast(this);
else return visitor.visitChildren(this);
}
}
-
- public final EnrichCommandContext enrichCommand() throws RecognitionException {
- EnrichCommandContext _localctx = new EnrichCommandContext(_ctx, getState());
- enterRule(_localctx, 130, RULE_enrichCommand);
- try {
- int _alt;
- enterOuterAlt(_localctx, 1);
- {
- setState(680);
- match(ENRICH);
- setState(681);
- ((EnrichCommandContext)_localctx).policyName = enrichPolicyName();
- setState(684);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
- case 1:
- {
- setState(682);
- match(ON);
- setState(683);
- ((EnrichCommandContext)_localctx).matchField = qualifiedNamePattern();
- }
- break;
- }
- setState(695);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
- case 1:
- {
- setState(686);
- match(WITH);
- setState(687);
- enrichWithClause();
- setState(692);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,63,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(688);
- match(COMMA);
- setState(689);
- enrichWithClause();
- }
- }
- }
- setState(694);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,63,_ctx);
- }
- }
- break;
- }
- }
- }
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
- }
- finally {
- exitRule();
- }
- return _localctx;
- }
-
@SuppressWarnings("CheckReturnValue")
- public static class EnrichPolicyNameContext extends ParserRuleContext {
- public TerminalNode ENRICH_POLICY_NAME() { return getToken(EsqlBaseParser.ENRICH_POLICY_NAME, 0); }
- public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
- @SuppressWarnings("this-escape")
- public EnrichPolicyNameContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
+ public static class ConstantDefaultContext extends PrimaryExpressionContext {
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
}
- @Override public int getRuleIndex() { return RULE_enrichPolicyName; }
+ @SuppressWarnings("this-escape")
+ public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichPolicyName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterConstantDefault(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichPolicyName(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitConstantDefault(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichPolicyName(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitConstantDefault(this);
else return visitor.visitChildren(this);
}
}
-
- public final EnrichPolicyNameContext enrichPolicyName() throws RecognitionException {
- EnrichPolicyNameContext _localctx = new EnrichPolicyNameContext(_ctx, getState());
- enterRule(_localctx, 132, RULE_enrichPolicyName);
- int _la;
- try {
- enterOuterAlt(_localctx, 1);
- {
- setState(697);
- _la = _input.LA(1);
- if ( !(_la==QUOTED_STRING || _la==ENRICH_POLICY_NAME) ) {
- _errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- }
+ @SuppressWarnings("CheckReturnValue")
+ public static class ParenthesizedExpressionContext extends PrimaryExpressionContext {
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public BooleanExpressionContext booleanExpression() {
+ return getRuleContext(BooleanExpressionContext.class,0);
}
- catch (RecognitionException re) {
- _localctx.exception = re;
- _errHandler.reportError(this, re);
- _errHandler.recover(this, re);
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ @SuppressWarnings("this-escape")
+ public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterParenthesizedExpression(this);
}
- finally {
- exitRule();
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitParenthesizedExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitParenthesizedExpression(this);
+ else return visitor.visitChildren(this);
}
- return _localctx;
}
-
@SuppressWarnings("CheckReturnValue")
- public static class EnrichWithClauseContext extends ParserRuleContext {
- public QualifiedNamePatternContext newName;
- public QualifiedNamePatternContext enrichField;
- public List qualifiedNamePattern() {
- return getRuleContexts(QualifiedNamePatternContext.class);
- }
- public QualifiedNamePatternContext qualifiedNamePattern(int i) {
- return getRuleContext(QualifiedNamePatternContext.class,i);
+ public static class FunctionContext extends PrimaryExpressionContext {
+ public FunctionExpressionContext functionExpression() {
+ return getRuleContext(FunctionExpressionContext.class,0);
}
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
@SuppressWarnings("this-escape")
- public EnrichWithClauseContext(ParserRuleContext parent, int invokingState) {
- super(parent, invokingState);
- }
- @Override public int getRuleIndex() { return RULE_enrichWithClause; }
+ public FunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEnrichWithClause(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunction(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEnrichWithClause(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunction(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEnrichWithClause(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunction(this);
else return visitor.visitChildren(this);
}
}
- public final EnrichWithClauseContext enrichWithClause() throws RecognitionException {
- EnrichWithClauseContext _localctx = new EnrichWithClauseContext(_ctx, getState());
- enterRule(_localctx, 134, RULE_enrichWithClause);
+ public final PrimaryExpressionContext primaryExpression() throws RecognitionException {
+ return primaryExpression(0);
+ }
+
+ private PrimaryExpressionContext primaryExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, _parentState);
+ PrimaryExpressionContext _prevctx = _localctx;
+ int _startState = 142;
+ enterRecursionRule(_localctx, 142, RULE_primaryExpression, _p);
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
setState(702);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
case 1:
{
+ _localctx = new ConstantDefaultContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+
+ setState(695);
+ constant();
+ }
+ break;
+ case 2:
+ {
+ _localctx = new DereferenceContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(696);
+ qualifiedName();
+ }
+ break;
+ case 3:
+ {
+ _localctx = new FunctionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(697);
+ functionExpression();
+ }
+ break;
+ case 4:
+ {
+ _localctx = new ParenthesizedExpressionContext(_localctx);
+ _ctx = _localctx;
+ _prevctx = _localctx;
+ setState(698);
+ match(LP);
setState(699);
- ((EnrichWithClauseContext)_localctx).newName = qualifiedNamePattern();
+ booleanExpression(0);
setState(700);
- match(ASSIGN);
+ match(RP);
}
break;
}
- setState(704);
- ((EnrichWithClauseContext)_localctx).enrichField = qualifiedNamePattern();
+ _ctx.stop = _input.LT(-1);
+ setState(709);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,61,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new InlineCastContext(new PrimaryExpressionContext(_parentctx, _parentState));
+ pushNewRecursionContext(_localctx, _startState, RULE_primaryExpression);
+ setState(704);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(705);
+ match(CAST_OP);
+ setState(706);
+ dataType();
+ }
+ }
+ }
+ setState(711);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,61,_ctx);
+ }
}
}
catch (RecognitionException re) {
@@ -6068,85 +6026,134 @@ public final EnrichWithClauseContext enrichWithClause() throws RecognitionExcept
_errHandler.recover(this, re);
}
finally {
- exitRule();
+ unrollRecursionContexts(_parentctx);
}
return _localctx;
}
@SuppressWarnings("CheckReturnValue")
- public static class ChangePointCommandContext extends ParserRuleContext {
- public QualifiedNameContext value;
- public QualifiedNameContext key;
- public QualifiedNameContext targetType;
- public QualifiedNameContext targetPvalue;
- public TerminalNode CHANGE_POINT() { return getToken(EsqlBaseParser.CHANGE_POINT, 0); }
- public List qualifiedName() {
- return getRuleContexts(QualifiedNameContext.class);
+ public static class FunctionExpressionContext extends ParserRuleContext {
+ public FunctionNameContext functionName() {
+ return getRuleContext(FunctionNameContext.class,0);
}
- public QualifiedNameContext qualifiedName(int i) {
- return getRuleContext(QualifiedNameContext.class,i);
+ public TerminalNode LP() { return getToken(EsqlBaseParser.LP, 0); }
+ public TerminalNode RP() { return getToken(EsqlBaseParser.RP, 0); }
+ public TerminalNode ASTERISK() { return getToken(EsqlBaseParser.ASTERISK, 0); }
+ public List booleanExpression() {
+ return getRuleContexts(BooleanExpressionContext.class);
+ }
+ public BooleanExpressionContext booleanExpression(int i) {
+ return getRuleContext(BooleanExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ public MapExpressionContext mapExpression() {
+ return getRuleContext(MapExpressionContext.class,0);
}
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public TerminalNode AS() { return getToken(EsqlBaseParser.AS, 0); }
- public TerminalNode COMMA() { return getToken(EsqlBaseParser.COMMA, 0); }
@SuppressWarnings("this-escape")
- public ChangePointCommandContext(ParserRuleContext parent, int invokingState) {
+ public FunctionExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_changePointCommand; }
+ @Override public int getRuleIndex() { return RULE_functionExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterChangePointCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunctionExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitChangePointCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunctionExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitChangePointCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunctionExpression(this);
else return visitor.visitChildren(this);
}
}
- public final ChangePointCommandContext changePointCommand() throws RecognitionException {
- ChangePointCommandContext _localctx = new ChangePointCommandContext(_ctx, getState());
- enterRule(_localctx, 136, RULE_changePointCommand);
+ public final FunctionExpressionContext functionExpression() throws RecognitionException {
+ FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_functionExpression);
+ int _la;
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(706);
- match(CHANGE_POINT);
- setState(707);
- ((ChangePointCommandContext)_localctx).value = qualifiedName();
- setState(710);
+ setState(712);
+ functionName();
+ setState(713);
+ match(LP);
+ setState(727);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
- case 1:
+ switch (_input.LA(1)) {
+ case ASTERISK:
{
- setState(708);
- match(ON);
- setState(709);
- ((ChangePointCommandContext)_localctx).key = qualifiedName();
+ setState(714);
+ match(ASTERISK);
}
break;
- }
- setState(717);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
- case 1:
+ case QUOTED_STRING:
+ case INTEGER_LITERAL:
+ case DECIMAL_LITERAL:
+ case FALSE:
+ case NOT:
+ case NULL:
+ case PARAM:
+ case TRUE:
+ case PLUS:
+ case MINUS:
+ case DOUBLE_PARAMS:
+ case NAMED_OR_POSITIONAL_PARAM:
+ case NAMED_OR_POSITIONAL_DOUBLE_PARAMS:
+ case OPENING_BRACKET:
+ case LP:
+ case UNQUOTED_IDENTIFIER:
+ case QUOTED_IDENTIFIER:
+ {
{
- setState(712);
- match(AS);
- setState(713);
- ((ChangePointCommandContext)_localctx).targetType = qualifiedName();
- setState(714);
- match(COMMA);
setState(715);
- ((ChangePointCommandContext)_localctx).targetPvalue = qualifiedName();
+ booleanExpression(0);
+ setState(720);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,62,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(716);
+ match(COMMA);
+ setState(717);
+ booleanExpression(0);
+ }
+ }
+ }
+ setState(722);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,62,_ctx);
+ }
+ setState(725);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(723);
+ match(COMMA);
+ setState(724);
+ mapExpression();
+ }
}
+
+ }
+ }
+ break;
+ case RP:
+ break;
+ default:
break;
}
+ setState(729);
+ match(RP);
}
}
catch (RecognitionException re) {
@@ -6161,42 +6168,38 @@ public final ChangePointCommandContext changePointCommand() throws RecognitionEx
}
@SuppressWarnings("CheckReturnValue")
- public static class SampleCommandContext extends ParserRuleContext {
- public ConstantContext probability;
- public TerminalNode SAMPLE() { return getToken(EsqlBaseParser.SAMPLE, 0); }
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
+ public static class FunctionNameContext extends ParserRuleContext {
+ public IdentifierOrParameterContext identifierOrParameter() {
+ return getRuleContext(IdentifierOrParameterContext.class,0);
}
@SuppressWarnings("this-escape")
- public SampleCommandContext(ParserRuleContext parent, int invokingState) {
+ public FunctionNameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_sampleCommand; }
+ @Override public int getRuleIndex() { return RULE_functionName; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterSampleCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterFunctionName(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitSampleCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitFunctionName(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitSampleCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitFunctionName(this);
else return visitor.visitChildren(this);
}
}
- public final SampleCommandContext sampleCommand() throws RecognitionException {
- SampleCommandContext _localctx = new SampleCommandContext(_ctx, getState());
- enterRule(_localctx, 138, RULE_sampleCommand);
+ public final FunctionNameContext functionName() throws RecognitionException {
+ FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_functionName);
try {
enterOuterAlt(_localctx, 1);
{
- setState(719);
- match(SAMPLE);
- setState(720);
- ((SampleCommandContext)_localctx).probability = constant();
+ setState(731);
+ identifierOrParameter();
}
}
catch (RecognitionException re) {
@@ -6211,51 +6214,538 @@ public final SampleCommandContext sampleCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class LookupCommandContext extends ParserRuleContext {
- public IndexPatternContext tableName;
- public QualifiedNamePatternsContext matchFields;
- public TerminalNode DEV_LOOKUP() { return getToken(EsqlBaseParser.DEV_LOOKUP, 0); }
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public IndexPatternContext indexPattern() {
- return getRuleContext(IndexPatternContext.class,0);
+ public static class MapExpressionContext extends ParserRuleContext {
+ public TerminalNode LEFT_BRACES() { return getToken(EsqlBaseParser.LEFT_BRACES, 0); }
+ public List entryExpression() {
+ return getRuleContexts(EntryExpressionContext.class);
}
- public QualifiedNamePatternsContext qualifiedNamePatterns() {
- return getRuleContext(QualifiedNamePatternsContext.class,0);
+ public EntryExpressionContext entryExpression(int i) {
+ return getRuleContext(EntryExpressionContext.class,i);
+ }
+ public TerminalNode RIGHT_BRACES() { return getToken(EsqlBaseParser.RIGHT_BRACES, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public LookupCommandContext(ParserRuleContext parent, int invokingState) {
+ public MapExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_lookupCommand; }
+ @Override public int getRuleIndex() { return RULE_mapExpression; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterLookupCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterMapExpression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitLookupCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitMapExpression(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitLookupCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitMapExpression(this);
else return visitor.visitChildren(this);
}
}
- public final LookupCommandContext lookupCommand() throws RecognitionException {
- LookupCommandContext _localctx = new LookupCommandContext(_ctx, getState());
- enterRule(_localctx, 140, RULE_lookupCommand);
+ public final MapExpressionContext mapExpression() throws RecognitionException {
+ MapExpressionContext _localctx = new MapExpressionContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_mapExpression);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(722);
- match(DEV_LOOKUP);
- setState(723);
- ((LookupCommandContext)_localctx).tableName = indexPattern();
- setState(724);
- match(ON);
- setState(725);
- ((LookupCommandContext)_localctx).matchFields = qualifiedNamePatterns();
+ setState(733);
+ match(LEFT_BRACES);
+ setState(734);
+ entryExpression();
+ setState(739);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(735);
+ match(COMMA);
+ setState(736);
+ entryExpression();
+ }
+ }
+ setState(741);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(742);
+ match(RIGHT_BRACES);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EntryExpressionContext extends ParserRuleContext {
+ public StringContext key;
+ public ConstantContext value;
+ public TerminalNode COLON() { return getToken(EsqlBaseParser.COLON, 0); }
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
+ }
+ public ConstantContext constant() {
+ return getRuleContext(ConstantContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public EntryExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_entryExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterEntryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitEntryExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitEntryExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final EntryExpressionContext entryExpression() throws RecognitionException {
+ EntryExpressionContext _localctx = new EntryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_entryExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(744);
+ ((EntryExpressionContext)_localctx).key = string();
+ setState(745);
+ match(COLON);
+ setState(746);
+ ((EntryExpressionContext)_localctx).value = constant();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstantContext extends ParserRuleContext {
+ @SuppressWarnings("this-escape")
+ public ConstantContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constant; }
+
+ @SuppressWarnings("this-escape")
+ public ConstantContext() { }
+ public void copyFrom(ConstantContext ctx) {
+ super.copyFrom(ctx);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class BooleanArrayLiteralContext extends ConstantContext {
+ public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
+ public List booleanValue() {
+ return getRuleContexts(BooleanValueContext.class);
+ }
+ public BooleanValueContext booleanValue(int i) {
+ return getRuleContext(BooleanValueContext.class,i);
+ }
+ public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public BooleanArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanArrayLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanArrayLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanArrayLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class DecimalLiteralContext extends ConstantContext {
+ public DecimalValueContext decimalValue() {
+ return getRuleContext(DecimalValueContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public DecimalLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDecimalLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDecimalLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDecimalLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class NullLiteralContext extends ConstantContext {
+ public TerminalNode NULL() { return getToken(EsqlBaseParser.NULL, 0); }
+ @SuppressWarnings("this-escape")
+ public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNullLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNullLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNullLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class QualifiedIntegerLiteralContext extends ConstantContext {
+ public IntegerValueContext integerValue() {
+ return getRuleContext(IntegerValueContext.class,0);
+ }
+ public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(EsqlBaseParser.UNQUOTED_IDENTIFIER, 0); }
+ @SuppressWarnings("this-escape")
+ public QualifiedIntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterQualifiedIntegerLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitQualifiedIntegerLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitQualifiedIntegerLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class StringArrayLiteralContext extends ConstantContext {
+ public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
+ public List string() {
+ return getRuleContexts(StringContext.class);
+ }
+ public StringContext string(int i) {
+ return getRuleContext(StringContext.class,i);
+ }
+ public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public StringArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStringArrayLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStringArrayLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStringArrayLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputParameterContext extends ConstantContext {
+ public ParameterContext parameter() {
+ return getRuleContext(ParameterContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public InputParameterContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInputParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInputParameter(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInputParameter(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class StringLiteralContext extends ConstantContext {
+ public StringContext string() {
+ return getRuleContext(StringContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterStringLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitStringLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitStringLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class NumericArrayLiteralContext extends ConstantContext {
+ public TerminalNode OPENING_BRACKET() { return getToken(EsqlBaseParser.OPENING_BRACKET, 0); }
+ public List numericValue() {
+ return getRuleContexts(NumericValueContext.class);
+ }
+ public NumericValueContext numericValue(int i) {
+ return getRuleContext(NumericValueContext.class,i);
+ }
+ public TerminalNode CLOSING_BRACKET() { return getToken(EsqlBaseParser.CLOSING_BRACKET, 0); }
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
+ }
+ @SuppressWarnings("this-escape")
+ public NumericArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNumericArrayLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNumericArrayLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNumericArrayLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class IntegerLiteralContext extends ConstantContext {
+ public IntegerValueContext integerValue() {
+ return getRuleContext(IntegerValueContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public IntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIntegerLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIntegerLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIntegerLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+ @SuppressWarnings("CheckReturnValue")
+ public static class BooleanLiteralContext extends ConstantContext {
+ public BooleanValueContext booleanValue() {
+ return getRuleContext(BooleanValueContext.class,0);
+ }
+ @SuppressWarnings("this-escape")
+ public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ConstantContext constant() throws RecognitionException {
+ ConstantContext _localctx = new ConstantContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_constant);
+ int _la;
+ try {
+ setState(790);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
+ case 1:
+ _localctx = new NullLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(748);
+ match(NULL);
+ }
+ break;
+ case 2:
+ _localctx = new QualifiedIntegerLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(749);
+ integerValue();
+ setState(750);
+ match(UNQUOTED_IDENTIFIER);
+ }
+ break;
+ case 3:
+ _localctx = new DecimalLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(752);
+ decimalValue();
+ }
+ break;
+ case 4:
+ _localctx = new IntegerLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(753);
+ integerValue();
+ }
+ break;
+ case 5:
+ _localctx = new BooleanLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(754);
+ booleanValue();
+ }
+ break;
+ case 6:
+ _localctx = new InputParameterContext(_localctx);
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(755);
+ parameter();
+ }
+ break;
+ case 7:
+ _localctx = new StringLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(756);
+ string();
+ }
+ break;
+ case 8:
+ _localctx = new NumericArrayLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(757);
+ match(OPENING_BRACKET);
+ setState(758);
+ numericValue();
+ setState(763);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(759);
+ match(COMMA);
+ setState(760);
+ numericValue();
+ }
+ }
+ setState(765);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(766);
+ match(CLOSING_BRACKET);
+ }
+ break;
+ case 9:
+ _localctx = new BooleanArrayLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(768);
+ match(OPENING_BRACKET);
+ setState(769);
+ booleanValue();
+ setState(774);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(770);
+ match(COMMA);
+ setState(771);
+ booleanValue();
+ }
+ }
+ setState(776);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(777);
+ match(CLOSING_BRACKET);
+ }
+ break;
+ case 10:
+ _localctx = new StringArrayLiteralContext(_localctx);
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(779);
+ match(OPENING_BRACKET);
+ setState(780);
+ string();
+ setState(785);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(781);
+ match(COMMA);
+ setState(782);
+ string();
+ }
+ }
+ setState(787);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(788);
+ match(CLOSING_BRACKET);
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -6270,58 +6760,45 @@ public final LookupCommandContext lookupCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class InlinestatsCommandContext extends ParserRuleContext {
- public AggFieldsContext stats;
- public FieldsContext grouping;
- public TerminalNode DEV_INLINESTATS() { return getToken(EsqlBaseParser.DEV_INLINESTATS, 0); }
- public AggFieldsContext aggFields() {
- return getRuleContext(AggFieldsContext.class,0);
- }
- public TerminalNode BY() { return getToken(EsqlBaseParser.BY, 0); }
- public FieldsContext fields() {
- return getRuleContext(FieldsContext.class,0);
- }
+ public static class BooleanValueContext extends ParserRuleContext {
+ public TerminalNode TRUE() { return getToken(EsqlBaseParser.TRUE, 0); }
+ public TerminalNode FALSE() { return getToken(EsqlBaseParser.FALSE, 0); }
@SuppressWarnings("this-escape")
- public InlinestatsCommandContext(ParserRuleContext parent, int invokingState) {
+ public BooleanValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_inlinestatsCommand; }
+ @Override public int getRuleIndex() { return RULE_booleanValue; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInlinestatsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterBooleanValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInlinestatsCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitBooleanValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInlinestatsCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitBooleanValue(this);
else return visitor.visitChildren(this);
}
}
- public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionException {
- InlinestatsCommandContext _localctx = new InlinestatsCommandContext(_ctx, getState());
- enterRule(_localctx, 142, RULE_inlinestatsCommand);
+ public final BooleanValueContext booleanValue() throws RecognitionException {
+ BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_booleanValue);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(727);
- match(DEV_INLINESTATS);
- setState(728);
- ((InlinestatsCommandContext)_localctx).stats = aggFields();
- setState(731);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,68,_ctx) ) {
- case 1:
- {
- setState(729);
- match(BY);
- setState(730);
- ((InlinestatsCommandContext)_localctx).grouping = fields();
- }
- break;
+ setState(792);
+ _la = _input.LA(1);
+ if ( !(_la==FALSE || _la==TRUE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
}
}
}
@@ -6337,62 +6814,54 @@ public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionEx
}
@SuppressWarnings("CheckReturnValue")
- public static class JoinCommandContext extends ParserRuleContext {
- public Token type;
- public TerminalNode JOIN() { return getToken(EsqlBaseParser.JOIN, 0); }
- public JoinTargetContext joinTarget() {
- return getRuleContext(JoinTargetContext.class,0);
+ public static class NumericValueContext extends ParserRuleContext {
+ public DecimalValueContext decimalValue() {
+ return getRuleContext(DecimalValueContext.class,0);
}
- public JoinConditionContext joinCondition() {
- return getRuleContext(JoinConditionContext.class,0);
+ public IntegerValueContext integerValue() {
+ return getRuleContext(IntegerValueContext.class,0);
}
- public TerminalNode JOIN_LOOKUP() { return getToken(EsqlBaseParser.JOIN_LOOKUP, 0); }
- public TerminalNode DEV_JOIN_LEFT() { return getToken(EsqlBaseParser.DEV_JOIN_LEFT, 0); }
- public TerminalNode DEV_JOIN_RIGHT() { return getToken(EsqlBaseParser.DEV_JOIN_RIGHT, 0); }
@SuppressWarnings("this-escape")
- public JoinCommandContext(ParserRuleContext parent, int invokingState) {
+ public NumericValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_joinCommand; }
+ @Override public int getRuleIndex() { return RULE_numericValue; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterNumericValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitNumericValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitNumericValue(this);
else return visitor.visitChildren(this);
}
}
- public final JoinCommandContext joinCommand() throws RecognitionException {
- JoinCommandContext _localctx = new JoinCommandContext(_ctx, getState());
- enterRule(_localctx, 144, RULE_joinCommand);
- int _la;
+ public final NumericValueContext numericValue() throws RecognitionException {
+ NumericValueContext _localctx = new NumericValueContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_numericValue);
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(733);
- ((JoinCommandContext)_localctx).type = _input.LT(1);
- _la = _input.LA(1);
- if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 201850880L) != 0)) ) {
- ((JoinCommandContext)_localctx).type = (Token)_errHandler.recoverInline(this);
- }
- else {
- if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
- _errHandler.reportMatch(this);
- consume();
- }
- setState(734);
- match(JOIN);
- setState(735);
- joinTarget();
- setState(736);
- joinCondition();
+ setState(796);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(794);
+ decimalValue();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(795);
+ integerValue();
+ }
+ break;
}
}
catch (RecognitionException re) {
@@ -6407,39 +6876,57 @@ public final JoinCommandContext joinCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class JoinTargetContext extends ParserRuleContext {
- public IndexPatternContext index;
- public IndexPatternContext indexPattern() {
- return getRuleContext(IndexPatternContext.class,0);
- }
+ public static class DecimalValueContext extends ParserRuleContext {
+ public TerminalNode DECIMAL_LITERAL() { return getToken(EsqlBaseParser.DECIMAL_LITERAL, 0); }
+ public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
+ public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
@SuppressWarnings("this-escape")
- public JoinTargetContext(ParserRuleContext parent, int invokingState) {
+ public DecimalValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_joinTarget; }
+ @Override public int getRuleIndex() { return RULE_decimalValue; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinTarget(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterDecimalValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinTarget(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitDecimalValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinTarget(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitDecimalValue(this);
else return visitor.visitChildren(this);
}
}
- public final JoinTargetContext joinTarget() throws RecognitionException {
- JoinTargetContext _localctx = new JoinTargetContext(_ctx, getState());
- enterRule(_localctx, 146, RULE_joinTarget);
+ public final DecimalValueContext decimalValue() throws RecognitionException {
+ DecimalValueContext _localctx = new DecimalValueContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_decimalValue);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(738);
- ((JoinTargetContext)_localctx).index = indexPattern();
+ setState(799);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==PLUS || _la==MINUS) {
+ {
+ setState(798);
+ _la = _input.LA(1);
+ if ( !(_la==PLUS || _la==MINUS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+
+ setState(801);
+ match(DECIMAL_LITERAL);
}
}
catch (RecognitionException re) {
@@ -6454,67 +6941,57 @@ public final JoinTargetContext joinTarget() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class JoinConditionContext extends ParserRuleContext {
- public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public List joinPredicate() {
- return getRuleContexts(JoinPredicateContext.class);
- }
- public JoinPredicateContext joinPredicate(int i) {
- return getRuleContext(JoinPredicateContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
+ public static class IntegerValueContext extends ParserRuleContext {
+ public TerminalNode INTEGER_LITERAL() { return getToken(EsqlBaseParser.INTEGER_LITERAL, 0); }
+ public TerminalNode PLUS() { return getToken(EsqlBaseParser.PLUS, 0); }
+ public TerminalNode MINUS() { return getToken(EsqlBaseParser.MINUS, 0); }
@SuppressWarnings("this-escape")
- public JoinConditionContext(ParserRuleContext parent, int invokingState) {
+ public IntegerValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_joinCondition; }
+ @Override public int getRuleIndex() { return RULE_integerValue; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinCondition(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterIntegerValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinCondition(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitIntegerValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinCondition(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitIntegerValue(this);
else return visitor.visitChildren(this);
}
}
- public final JoinConditionContext joinCondition() throws RecognitionException {
- JoinConditionContext _localctx = new JoinConditionContext(_ctx, getState());
- enterRule(_localctx, 148, RULE_joinCondition);
+ public final IntegerValueContext integerValue() throws RecognitionException {
+ IntegerValueContext _localctx = new IntegerValueContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_integerValue);
+ int _la;
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(740);
- match(ON);
- setState(741);
- joinPredicate();
- setState(746);
+ setState(804);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,69,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(742);
- match(COMMA);
- setState(743);
- joinPredicate();
- }
- }
+ _la = _input.LA(1);
+ if (_la==PLUS || _la==MINUS) {
+ {
+ setState(803);
+ _la = _input.LA(1);
+ if ( !(_la==PLUS || _la==MINUS) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
}
- setState(748);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,69,_ctx);
}
+
+ setState(806);
+ match(INTEGER_LITERAL);
}
}
catch (RecognitionException re) {
@@ -6529,38 +7006,36 @@ public final JoinConditionContext joinCondition() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class JoinPredicateContext extends ParserRuleContext {
- public ValueExpressionContext valueExpression() {
- return getRuleContext(ValueExpressionContext.class,0);
- }
+ public static class StringContext extends ParserRuleContext {
+ public TerminalNode QUOTED_STRING() { return getToken(EsqlBaseParser.QUOTED_STRING, 0); }
@SuppressWarnings("this-escape")
- public JoinPredicateContext(ParserRuleContext parent, int invokingState) {
+ public StringContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_joinPredicate; }
+ @Override public int getRuleIndex() { return RULE_string; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinPredicate(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterString(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinPredicate(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitString(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinPredicate(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitString(this);
else return visitor.visitChildren(this);
}
}
- public final JoinPredicateContext joinPredicate() throws RecognitionException {
- JoinPredicateContext _localctx = new JoinPredicateContext(_ctx, getState());
- enterRule(_localctx, 150, RULE_joinPredicate);
+ public final StringContext string() throws RecognitionException {
+ StringContext _localctx = new StringContext(_ctx, getState());
+ enterRule(_localctx, 162, RULE_string);
try {
enterOuterAlt(_localctx, 1);
{
- setState(749);
- valueExpression();
+ setState(808);
+ match(QUOTED_STRING);
}
}
catch (RecognitionException re) {
@@ -6575,63 +7050,49 @@ public final JoinPredicateContext joinPredicate() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class InferenceCommandOptionsContext extends ParserRuleContext {
- public List inferenceCommandOption() {
- return getRuleContexts(InferenceCommandOptionContext.class);
- }
- public InferenceCommandOptionContext inferenceCommandOption(int i) {
- return getRuleContext(InferenceCommandOptionContext.class,i);
- }
- public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
- public TerminalNode COMMA(int i) {
- return getToken(EsqlBaseParser.COMMA, i);
- }
+ public static class ComparisonOperatorContext extends ParserRuleContext {
+ public TerminalNode EQ() { return getToken(EsqlBaseParser.EQ, 0); }
+ public TerminalNode NEQ() { return getToken(EsqlBaseParser.NEQ, 0); }
+ public TerminalNode LT() { return getToken(EsqlBaseParser.LT, 0); }
+ public TerminalNode LTE() { return getToken(EsqlBaseParser.LTE, 0); }
+ public TerminalNode GT() { return getToken(EsqlBaseParser.GT, 0); }
+ public TerminalNode GTE() { return getToken(EsqlBaseParser.GTE, 0); }
@SuppressWarnings("this-escape")
- public InferenceCommandOptionsContext(ParserRuleContext parent, int invokingState) {
+ public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_inferenceCommandOptions; }
+ @Override public int getRuleIndex() { return RULE_comparisonOperator; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOptions(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterComparisonOperator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOptions(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitComparisonOperator(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOptions(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitComparisonOperator(this);
else return visitor.visitChildren(this);
}
}
- public final InferenceCommandOptionsContext inferenceCommandOptions() throws RecognitionException {
- InferenceCommandOptionsContext _localctx = new InferenceCommandOptionsContext(_ctx, getState());
- enterRule(_localctx, 152, RULE_inferenceCommandOptions);
+ public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
+ ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_comparisonOperator);
+ int _la;
try {
- int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(751);
- inferenceCommandOption();
- setState(756);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,70,_ctx);
- while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
- if ( _alt==1 ) {
- {
- {
- setState(752);
- match(COMMA);
- setState(753);
- inferenceCommandOption();
- }
- }
- }
- setState(758);
- _errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,70,_ctx);
+ setState(810);
+ _la = _input.LA(1);
+ if ( !(((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & 125L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
}
}
}
@@ -6647,46 +7108,62 @@ public final InferenceCommandOptionsContext inferenceCommandOptions() throws Rec
}
@SuppressWarnings("CheckReturnValue")
- public static class InferenceCommandOptionContext extends ParserRuleContext {
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
+ public static class JoinCommandContext extends ParserRuleContext {
+ public Token type;
+ public TerminalNode JOIN() { return getToken(EsqlBaseParser.JOIN, 0); }
+ public JoinTargetContext joinTarget() {
+ return getRuleContext(JoinTargetContext.class,0);
}
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- public InferenceCommandOptionValueContext inferenceCommandOptionValue() {
- return getRuleContext(InferenceCommandOptionValueContext.class,0);
+ public JoinConditionContext joinCondition() {
+ return getRuleContext(JoinConditionContext.class,0);
}
+ public TerminalNode JOIN_LOOKUP() { return getToken(EsqlBaseParser.JOIN_LOOKUP, 0); }
+ public TerminalNode DEV_JOIN_LEFT() { return getToken(EsqlBaseParser.DEV_JOIN_LEFT, 0); }
+ public TerminalNode DEV_JOIN_RIGHT() { return getToken(EsqlBaseParser.DEV_JOIN_RIGHT, 0); }
@SuppressWarnings("this-escape")
- public InferenceCommandOptionContext(ParserRuleContext parent, int invokingState) {
+ public JoinCommandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_inferenceCommandOption; }
+ @Override public int getRuleIndex() { return RULE_joinCommand; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinCommand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOption(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinCommand(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOption(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinCommand(this);
else return visitor.visitChildren(this);
}
}
- public final InferenceCommandOptionContext inferenceCommandOption() throws RecognitionException {
- InferenceCommandOptionContext _localctx = new InferenceCommandOptionContext(_ctx, getState());
- enterRule(_localctx, 154, RULE_inferenceCommandOption);
+ public final JoinCommandContext joinCommand() throws RecognitionException {
+ JoinCommandContext _localctx = new JoinCommandContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_joinCommand);
+ int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(759);
- identifier();
- setState(760);
- match(ASSIGN);
- setState(761);
- inferenceCommandOptionValue();
+ setState(812);
+ ((JoinCommandContext)_localctx).type = _input.LT(1);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 109051904L) != 0)) ) {
+ ((JoinCommandContext)_localctx).type = (Token)_errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ setState(813);
+ match(JOIN);
+ setState(814);
+ joinTarget();
+ setState(815);
+ joinCondition();
}
}
catch (RecognitionException re) {
@@ -6701,67 +7178,39 @@ public final InferenceCommandOptionContext inferenceCommandOption() throws Recog
}
@SuppressWarnings("CheckReturnValue")
- public static class InferenceCommandOptionValueContext extends ParserRuleContext {
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
- }
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
+ public static class JoinTargetContext extends ParserRuleContext {
+ public IndexPatternContext index;
+ public IndexPatternContext indexPattern() {
+ return getRuleContext(IndexPatternContext.class,0);
}
@SuppressWarnings("this-escape")
- public InferenceCommandOptionValueContext(ParserRuleContext parent, int invokingState) {
+ public JoinTargetContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_inferenceCommandOptionValue; }
+ @Override public int getRuleIndex() { return RULE_joinTarget; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterInferenceCommandOptionValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinTarget(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitInferenceCommandOptionValue(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinTarget(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitInferenceCommandOptionValue(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinTarget(this);
else return visitor.visitChildren(this);
}
}
- public final InferenceCommandOptionValueContext inferenceCommandOptionValue() throws RecognitionException {
- InferenceCommandOptionValueContext _localctx = new InferenceCommandOptionValueContext(_ctx, getState());
- enterRule(_localctx, 156, RULE_inferenceCommandOptionValue);
+ public final JoinTargetContext joinTarget() throws RecognitionException {
+ JoinTargetContext _localctx = new JoinTargetContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_joinTarget);
try {
- setState(765);
- _errHandler.sync(this);
- switch (_input.LA(1)) {
- case QUOTED_STRING:
- case INTEGER_LITERAL:
- case DECIMAL_LITERAL:
- case FALSE:
- case NULL:
- case PARAM:
- case TRUE:
- case PLUS:
- case MINUS:
- case NAMED_OR_POSITIONAL_PARAM:
- case OPENING_BRACKET:
- enterOuterAlt(_localctx, 1);
- {
- setState(763);
- constant();
- }
- break;
- case UNQUOTED_IDENTIFIER:
- case QUOTED_IDENTIFIER:
- enterOuterAlt(_localctx, 2);
- {
- setState(764);
- identifier();
- }
- break;
- default:
- throw new NoViableAltException(this);
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(817);
+ ((JoinTargetContext)_localctx).index = indexPattern();
}
}
catch (RecognitionException re) {
@@ -6776,65 +7225,66 @@ public final InferenceCommandOptionValueContext inferenceCommandOptionValue() th
}
@SuppressWarnings("CheckReturnValue")
- public static class RerankCommandContext extends ParserRuleContext {
- public ConstantContext queryText;
- public TerminalNode DEV_RERANK() { return getToken(EsqlBaseParser.DEV_RERANK, 0); }
+ public static class JoinConditionContext extends ParserRuleContext {
public TerminalNode ON() { return getToken(EsqlBaseParser.ON, 0); }
- public RerankFieldsContext rerankFields() {
- return getRuleContext(RerankFieldsContext.class,0);
+ public List joinPredicate() {
+ return getRuleContexts(JoinPredicateContext.class);
}
- public ConstantContext constant() {
- return getRuleContext(ConstantContext.class,0);
+ public JoinPredicateContext joinPredicate(int i) {
+ return getRuleContext(JoinPredicateContext.class,i);
}
- public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
- public InferenceCommandOptionsContext inferenceCommandOptions() {
- return getRuleContext(InferenceCommandOptionsContext.class,0);
+ public List COMMA() { return getTokens(EsqlBaseParser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(EsqlBaseParser.COMMA, i);
}
@SuppressWarnings("this-escape")
- public RerankCommandContext(ParserRuleContext parent, int invokingState) {
+ public JoinConditionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_rerankCommand; }
+ @Override public int getRuleIndex() { return RULE_joinCondition; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterRerankCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinCondition(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitRerankCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinCondition(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitRerankCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinCondition(this);
else return visitor.visitChildren(this);
}
}
- public final RerankCommandContext rerankCommand() throws RecognitionException {
- RerankCommandContext _localctx = new RerankCommandContext(_ctx, getState());
- enterRule(_localctx, 158, RULE_rerankCommand);
+ public final JoinConditionContext joinCondition() throws RecognitionException {
+ JoinConditionContext _localctx = new JoinConditionContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_joinCondition);
try {
+ int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(767);
- match(DEV_RERANK);
- setState(768);
- ((RerankCommandContext)_localctx).queryText = constant();
- setState(769);
+ setState(819);
match(ON);
- setState(770);
- rerankFields();
- setState(773);
+ setState(820);
+ joinPredicate();
+ setState(825);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
- case 1:
- {
- setState(771);
- match(WITH);
- setState(772);
- inferenceCommandOptions();
+ _alt = getInterpreter().adaptivePredict(_input,73,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(821);
+ match(COMMA);
+ setState(822);
+ joinPredicate();
+ }
+ }
}
- break;
+ setState(827);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,73,_ctx);
}
}
}
@@ -6850,68 +7300,38 @@ public final RerankCommandContext rerankCommand() throws RecognitionException {
}
@SuppressWarnings("CheckReturnValue")
- public static class CompletionCommandContext extends ParserRuleContext {
- public QualifiedNameContext targetField;
- public PrimaryExpressionContext prompt;
- public IdentifierOrParameterContext inferenceId;
- public TerminalNode COMPLETION() { return getToken(EsqlBaseParser.COMPLETION, 0); }
- public TerminalNode WITH() { return getToken(EsqlBaseParser.WITH, 0); }
- public PrimaryExpressionContext primaryExpression() {
- return getRuleContext(PrimaryExpressionContext.class,0);
- }
- public IdentifierOrParameterContext identifierOrParameter() {
- return getRuleContext(IdentifierOrParameterContext.class,0);
- }
- public TerminalNode ASSIGN() { return getToken(EsqlBaseParser.ASSIGN, 0); }
- public QualifiedNameContext qualifiedName() {
- return getRuleContext(QualifiedNameContext.class,0);
+ public static class JoinPredicateContext extends ParserRuleContext {
+ public ValueExpressionContext valueExpression() {
+ return getRuleContext(ValueExpressionContext.class,0);
}
@SuppressWarnings("this-escape")
- public CompletionCommandContext(ParserRuleContext parent, int invokingState) {
+ public JoinPredicateContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_completionCommand; }
+ @Override public int getRuleIndex() { return RULE_joinPredicate; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterCompletionCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).enterJoinPredicate(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitCompletionCommand(this);
+ if ( listener instanceof EsqlBaseParserListener ) ((EsqlBaseParserListener)listener).exitJoinPredicate(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitCompletionCommand(this);
+ if ( visitor instanceof EsqlBaseParserVisitor ) return ((EsqlBaseParserVisitor extends T>)visitor).visitJoinPredicate(this);
else return visitor.visitChildren(this);
}
}
- public final CompletionCommandContext completionCommand() throws RecognitionException {
- CompletionCommandContext _localctx = new CompletionCommandContext(_ctx, getState());
- enterRule(_localctx, 160, RULE_completionCommand);
+ public final JoinPredicateContext joinPredicate() throws RecognitionException {
+ JoinPredicateContext _localctx = new JoinPredicateContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_joinPredicate);
try {
enterOuterAlt(_localctx, 1);
{
- setState(775);
- match(COMPLETION);
- setState(779);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
- case 1:
- {
- setState(776);
- ((CompletionCommandContext)_localctx).targetField = qualifiedName();
- setState(777);
- match(ASSIGN);
- }
- break;
- }
- setState(781);
- ((CompletionCommandContext)_localctx).prompt = primaryExpression(0);
- setState(782);
- match(WITH);
- setState(783);
- ((CompletionCommandContext)_localctx).inferenceId = identifierOrParameter();
+ setState(828);
+ valueExpression();
}
}
catch (RecognitionException re) {
@@ -6933,11 +7353,13 @@ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
return sourceCommand_sempred((SourceCommandContext)_localctx, predIndex);
case 3:
return processingCommand_sempred((ProcessingCommandContext)_localctx, predIndex);
- case 5:
+ case 55:
+ return forkSubQueryCommand_sempred((ForkSubQueryCommandContext)_localctx, predIndex);
+ case 66:
return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex);
- case 9:
+ case 70:
return operatorExpression_sempred((OperatorExpressionContext)_localctx, predIndex);
- case 10:
+ case 71:
return primaryExpression_sempred((PrimaryExpressionContext)_localctx, predIndex);
}
return true;
@@ -6953,48 +7375,61 @@ private boolean sourceCommand_sempred(SourceCommandContext _localctx, int predIn
switch (predIndex) {
case 1:
return this.isDevVersion();
+ case 2:
+ return this.isDevVersion();
}
return true;
}
private boolean processingCommand_sempred(ProcessingCommandContext _localctx, int predIndex) {
switch (predIndex) {
- case 2:
- return this.isDevVersion();
case 3:
return this.isDevVersion();
case 4:
return this.isDevVersion();
+ case 5:
+ return this.isDevVersion();
+ case 6:
+ return this.isDevVersion();
+ case 7:
+ return this.isDevVersion();
+ }
+ return true;
+ }
+ private boolean forkSubQueryCommand_sempred(ForkSubQueryCommandContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 8:
+ return precpred(_ctx, 1);
}
return true;
}
private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) {
switch (predIndex) {
- case 5:
+ case 9:
return precpred(_ctx, 5);
- case 6:
+ case 10:
return precpred(_ctx, 4);
}
return true;
}
private boolean operatorExpression_sempred(OperatorExpressionContext _localctx, int predIndex) {
switch (predIndex) {
- case 7:
+ case 11:
return precpred(_ctx, 2);
- case 8:
+ case 12:
return precpred(_ctx, 1);
}
return true;
}
private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, int predIndex) {
switch (predIndex) {
- case 9:
+ case 13:
return precpred(_ctx, 1);
}
return true;
}
public static final String _serializedATN =
- "\u0004\u0001\u008b\u0312\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
+ "\u0004\u0001\u008b\u033f\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"+
@@ -7014,475 +7449,495 @@ private boolean primaryExpression_sempred(PrimaryExpressionContext _localctx, in
"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
- "O\u0002P\u0007P\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+
- "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005\u0001\u00ac"+
- "\b\u0001\n\u0001\f\u0001\u00af\t\u0001\u0001\u0002\u0001\u0002\u0001\u0002"+
- "\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u00b7\b\u0002\u0001\u0003"+
+ "O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
+ "T\u0002U\u0007U\u0002V\u0007V\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0005"+
+ "\u0001\u00b8\b\u0001\n\u0001\f\u0001\u00bb\t\u0001\u0001\u0002\u0001\u0002"+
+ "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002"+
+ "\u00c4\b\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
- "\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003\u00cf\b\u0003\u0001\u0004"+
- "\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
- "\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u00db\b\u0005\u0001\u0005"+
- "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0005\u0005\u00e2\b\u0005"+
- "\n\u0005\f\u0005\u00e5\t\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
- "\u0005\u0001\u0005\u0003\u0005\u00ec\b\u0005\u0001\u0005\u0001\u0005\u0001"+
- "\u0005\u0003\u0005\u00f1\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
- "\u0005\u0001\u0005\u0001\u0005\u0005\u0005\u00f9\b\u0005\n\u0005\f\u0005"+
- "\u00fc\t\u0005\u0001\u0006\u0001\u0006\u0003\u0006\u0100\b\u0006\u0001"+
- "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006\u0107"+
- "\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003"+
- "\u0006\u010e\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
- "\u0006\u0005\u0006\u0115\b\u0006\n\u0006\f\u0006\u0118\t\u0006\u0001\u0006"+
- "\u0001\u0006\u0003\u0006\u011c\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+
- "\u0003\u0007\u0121\b\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b"+
- "\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u012b\b\b\u0001\t\u0001\t\u0001"+
- "\t\u0001\t\u0003\t\u0131\b\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
- "\t\u0005\t\u0139\b\t\n\t\f\t\u013c\t\t\u0001\n\u0001\n\u0001\n\u0001\n"+
- "\u0001\n\u0001\n\u0001\n\u0001\n\u0003\n\u0146\b\n\u0001\n\u0001\n\u0001"+
- "\n\u0005\n\u014b\b\n\n\n\f\n\u014e\t\n\u0001\u000b\u0001\u000b\u0001\u000b"+
- "\u0001\u000b\u0001\u000b\u0001\u000b\u0005\u000b\u0156\b\u000b\n\u000b"+
- "\f\u000b\u0159\t\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u015d\b\u000b"+
- "\u0003\u000b\u015f\b\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+
- "\r\u0001\r\u0001\r\u0001\r\u0005\r\u0169\b\r\n\r\f\r\u016c\t\r\u0001\r"+
- "\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001"+
- "\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001"+
- "\u0011\u0005\u0011\u017c\b\u0011\n\u0011\f\u0011\u017f\t\u0011\u0001\u0012"+
- "\u0001\u0012\u0001\u0012\u0003\u0012\u0184\b\u0012\u0001\u0012\u0001\u0012"+
- "\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u018b\b\u0013\n\u0013"+
- "\f\u0013\u018e\t\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014"+
- "\u0193\b\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0005\u0015"+
- "\u0199\b\u0015\n\u0015\f\u0015\u019c\t\u0015\u0001\u0015\u0003\u0015\u019f"+
- "\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
- "\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u01aa\b\u0016\u0001"+
- "\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001"+
- "\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0003\u001b\u01b6\b\u001b\u0001"+
- "\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u01bc\b\u001c\n"+
- "\u001c\f\u001c\u01bf\t\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+
- "\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0005\u001e\u01c9"+
- "\b\u001e\n\u001e\f\u001e\u01cc\t\u001e\u0001\u001e\u0003\u001e\u01cf\b"+
- "\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u01d3\b\u001e\u0001\u001f\u0001"+
- "\u001f\u0001\u001f\u0001 \u0001 \u0003 \u01da\b \u0001 \u0001 \u0003 "+
- "\u01de\b \u0001!\u0001!\u0001!\u0005!\u01e3\b!\n!\f!\u01e6\t!\u0001\""+
- "\u0001\"\u0001\"\u0003\"\u01eb\b\"\u0001#\u0001#\u0001#\u0005#\u01f0\b"+
- "#\n#\f#\u01f3\t#\u0001$\u0001$\u0001$\u0005$\u01f8\b$\n$\f$\u01fb\t$\u0001"+
- "%\u0001%\u0001%\u0005%\u0200\b%\n%\f%\u0203\t%\u0001&\u0001&\u0001\'\u0001"+
- "\'\u0001\'\u0003\'\u020a\b\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+
- "(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0005(\u0219\b(\n("+
- "\f(\u021c\t(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0005(\u0224\b"+
- "(\n(\f(\u0227\t(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0005(\u022f"+
- "\b(\n(\f(\u0232\t(\u0001(\u0001(\u0003(\u0236\b(\u0001)\u0001)\u0003)"+
- "\u023a\b)\u0001*\u0001*\u0003*\u023e\b*\u0001+\u0001+\u0001+\u0003+\u0243"+
- "\b+\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0005-\u024c\b-\n"+
- "-\f-\u024f\t-\u0001.\u0001.\u0003.\u0253\b.\u0001.\u0001.\u0003.\u0257"+
- "\b.\u0001/\u0001/\u0001/\u00010\u00010\u00010\u00011\u00011\u00011\u0001"+
- "1\u00051\u0263\b1\n1\f1\u0266\t1\u00012\u00012\u00012\u00012\u00012\u0001"+
- "2\u00012\u00012\u00032\u0270\b2\u00013\u00013\u00013\u00013\u00033\u0276"+
- "\b3\u00014\u00014\u00014\u00014\u00015\u00015\u00015\u00016\u00016\u0001"+
- "6\u00056\u0282\b6\n6\f6\u0285\t6\u00017\u00017\u00017\u00017\u00018\u0001"+
- "8\u00019\u00019\u00039\u028f\b9\u0001:\u0003:\u0292\b:\u0001:\u0001:\u0001"+
- ";\u0003;\u0297\b;\u0001;\u0001;\u0001<\u0001<\u0001=\u0001=\u0001>\u0001"+
- ">\u0001>\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0001@\u0001A\u0001"+
- "A\u0001A\u0001A\u0003A\u02ad\bA\u0001A\u0001A\u0001A\u0001A\u0005A\u02b3"+
- "\bA\nA\fA\u02b6\tA\u0003A\u02b8\bA\u0001B\u0001B\u0001C\u0001C\u0001C"+
- "\u0003C\u02bf\bC\u0001C\u0001C\u0001D\u0001D\u0001D\u0001D\u0003D\u02c7"+
- "\bD\u0001D\u0001D\u0001D\u0001D\u0001D\u0003D\u02ce\bD\u0001E\u0001E\u0001"+
- "E\u0001F\u0001F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0003"+
- "G\u02dc\bG\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001J\u0001"+
- "J\u0001J\u0001J\u0005J\u02e9\bJ\nJ\fJ\u02ec\tJ\u0001K\u0001K\u0001L\u0001"+
- "L\u0001L\u0005L\u02f3\bL\nL\fL\u02f6\tL\u0001M\u0001M\u0001M\u0001M\u0001"+
- "N\u0001N\u0003N\u02fe\bN\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0003"+
- "O\u0306\bO\u0001P\u0001P\u0001P\u0001P\u0003P\u030c\bP\u0001P\u0001P\u0001"+
- "P\u0001P\u0001P\u0000\u0004\u0002\n\u0012\u0014Q\u0000\u0002\u0004\u0006"+
- "\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,."+
- "02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088"+
- "\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0"+
- "\u0000\n\u0001\u0000EF\u0001\u0000GI\u0002\u0000!!ZZ\u0001\u0000QR\u0002"+
- "\u0000%%++\u0002\u0000..11\u0002\u0000--<<\u0002\u0000>>@D\u0002\u0000"+
- "!!ff\u0002\u0000\u0013\u0013\u001a\u001b\u0331\u0000\u00a2\u0001\u0000"+
- "\u0000\u0000\u0002\u00a5\u0001\u0000\u0000\u0000\u0004\u00b6\u0001\u0000"+
- "\u0000\u0000\u0006\u00ce\u0001\u0000\u0000\u0000\b\u00d0\u0001\u0000\u0000"+
- "\u0000\n\u00f0\u0001\u0000\u0000\u0000\f\u011b\u0001\u0000\u0000\u0000"+
- "\u000e\u011d\u0001\u0000\u0000\u0000\u0010\u012a\u0001\u0000\u0000\u0000"+
- "\u0012\u0130\u0001\u0000\u0000\u0000\u0014\u0145\u0001\u0000\u0000\u0000"+
- "\u0016\u014f\u0001\u0000\u0000\u0000\u0018\u0162\u0001\u0000\u0000\u0000"+
- "\u001a\u0164\u0001\u0000\u0000\u0000\u001c\u016f\u0001\u0000\u0000\u0000"+
- "\u001e\u0173\u0001\u0000\u0000\u0000 \u0175\u0001\u0000\u0000\u0000\""+
- "\u0178\u0001\u0000\u0000\u0000$\u0183\u0001\u0000\u0000\u0000&\u0187\u0001"+
- "\u0000\u0000\u0000(\u018f\u0001\u0000\u0000\u0000*\u0194\u0001\u0000\u0000"+
- "\u0000,\u01a9\u0001\u0000\u0000\u0000.\u01ab\u0001\u0000\u0000\u00000"+
- "\u01ad\u0001\u0000\u0000\u00002\u01af\u0001\u0000\u0000\u00004\u01b1\u0001"+
- "\u0000\u0000\u00006\u01b5\u0001\u0000\u0000\u00008\u01b7\u0001\u0000\u0000"+
- "\u0000:\u01c0\u0001\u0000\u0000\u0000<\u01c4\u0001\u0000\u0000\u0000>"+
- "\u01d4\u0001\u0000\u0000\u0000@\u01d7\u0001\u0000\u0000\u0000B\u01df\u0001"+
- "\u0000\u0000\u0000D\u01e7\u0001\u0000\u0000\u0000F\u01ec\u0001\u0000\u0000"+
- "\u0000H\u01f4\u0001\u0000\u0000\u0000J\u01fc\u0001\u0000\u0000\u0000L"+
- "\u0204\u0001\u0000\u0000\u0000N\u0209\u0001\u0000\u0000\u0000P\u0235\u0001"+
- "\u0000\u0000\u0000R\u0239\u0001\u0000\u0000\u0000T\u023d\u0001\u0000\u0000"+
- "\u0000V\u0242\u0001\u0000\u0000\u0000X\u0244\u0001\u0000\u0000\u0000Z"+
- "\u0247\u0001\u0000\u0000\u0000\\\u0250\u0001\u0000\u0000\u0000^\u0258"+
- "\u0001\u0000\u0000\u0000`\u025b\u0001\u0000\u0000\u0000b\u025e\u0001\u0000"+
- "\u0000\u0000d\u026f\u0001\u0000\u0000\u0000f\u0271\u0001\u0000\u0000\u0000"+
- "h\u0277\u0001\u0000\u0000\u0000j\u027b\u0001\u0000\u0000\u0000l\u027e"+
- "\u0001\u0000\u0000\u0000n\u0286\u0001\u0000\u0000\u0000p\u028a\u0001\u0000"+
- "\u0000\u0000r\u028e\u0001\u0000\u0000\u0000t\u0291\u0001\u0000\u0000\u0000"+
- "v\u0296\u0001\u0000\u0000\u0000x\u029a\u0001\u0000\u0000\u0000z\u029c"+
- "\u0001\u0000\u0000\u0000|\u029e\u0001\u0000\u0000\u0000~\u02a1\u0001\u0000"+
- "\u0000\u0000\u0080\u02a5\u0001\u0000\u0000\u0000\u0082\u02a8\u0001\u0000"+
- "\u0000\u0000\u0084\u02b9\u0001\u0000\u0000\u0000\u0086\u02be\u0001\u0000"+
- "\u0000\u0000\u0088\u02c2\u0001\u0000\u0000\u0000\u008a\u02cf\u0001\u0000"+
- "\u0000\u0000\u008c\u02d2\u0001\u0000\u0000\u0000\u008e\u02d7\u0001\u0000"+
- "\u0000\u0000\u0090\u02dd\u0001\u0000\u0000\u0000\u0092\u02e2\u0001\u0000"+
- "\u0000\u0000\u0094\u02e4\u0001\u0000\u0000\u0000\u0096\u02ed\u0001\u0000"+
- "\u0000\u0000\u0098\u02ef\u0001\u0000\u0000\u0000\u009a\u02f7\u0001\u0000"+
- "\u0000\u0000\u009c\u02fd\u0001\u0000\u0000\u0000\u009e\u02ff\u0001\u0000"+
- "\u0000\u0000\u00a0\u0307\u0001\u0000\u0000\u0000\u00a2\u00a3\u0003\u0002"+
- "\u0001\u0000\u00a3\u00a4\u0005\u0000\u0000\u0001\u00a4\u0001\u0001\u0000"+
- "\u0000\u0000\u00a5\u00a6\u0006\u0001\uffff\uffff\u0000\u00a6\u00a7\u0003"+
- "\u0004\u0002\u0000\u00a7\u00ad\u0001\u0000\u0000\u0000\u00a8\u00a9\n\u0001"+
- "\u0000\u0000\u00a9\u00aa\u0005 \u0000\u0000\u00aa\u00ac\u0003\u0006\u0003"+
- "\u0000\u00ab\u00a8\u0001\u0000\u0000\u0000\u00ac\u00af\u0001\u0000\u0000"+
- "\u0000\u00ad\u00ab\u0001\u0000\u0000\u0000\u00ad\u00ae\u0001\u0000\u0000"+
- "\u0000\u00ae\u0003\u0001\u0000\u0000\u0000\u00af\u00ad\u0001\u0000\u0000"+
- "\u0000\u00b0\u00b7\u0003|>\u0000\u00b1\u00b7\u0003*\u0015\u0000\u00b2"+
- "\u00b7\u0003 \u0010\u0000\u00b3\u00b7\u0003\u0080@\u0000\u00b4\u00b5\u0004"+
- "\u0002\u0001\u0000\u00b5\u00b7\u0003<\u001e\u0000\u00b6\u00b0\u0001\u0000"+
- "\u0000\u0000\u00b6\u00b1\u0001\u0000\u0000\u0000\u00b6\u00b2\u0001\u0000"+
- "\u0000\u0000\u00b6\u00b3\u0001\u0000\u0000\u0000\u00b6\u00b4\u0001\u0000"+
- "\u0000\u0000\u00b7\u0005\u0001\u0000\u0000\u0000\u00b8\u00cf\u0003>\u001f"+
- "\u0000\u00b9\u00cf\u0003\b\u0004\u0000\u00ba\u00cf\u0003^/\u0000\u00bb"+
- "\u00cf\u0003X,\u0000\u00bc\u00cf\u0003@ \u0000\u00bd\u00cf\u0003Z-\u0000"+
- "\u00be\u00cf\u0003`0\u0000\u00bf\u00cf\u0003b1\u0000\u00c0\u00cf\u0003"+
- "f3\u0000\u00c1\u00cf\u0003h4\u0000\u00c2\u00cf\u0003\u0082A\u0000\u00c3"+
- "\u00cf\u0003j5\u0000\u00c4\u00cf\u0003\u0090H\u0000\u00c5\u00cf\u0003"+
- "\u0088D\u0000\u00c6\u00cf\u0003\u00a0P\u0000\u00c7\u00cf\u0003\u008aE"+
- "\u0000\u00c8\u00c9\u0004\u0003\u0002\u0000\u00c9\u00cf\u0003\u008eG\u0000"+
- "\u00ca\u00cb\u0004\u0003\u0003\u0000\u00cb\u00cf\u0003\u008cF\u0000\u00cc"+
- "\u00cd\u0004\u0003\u0004\u0000\u00cd\u00cf\u0003\u009eO\u0000\u00ce\u00b8"+
- "\u0001\u0000\u0000\u0000\u00ce\u00b9\u0001\u0000\u0000\u0000\u00ce\u00ba"+
- "\u0001\u0000\u0000\u0000\u00ce\u00bb\u0001\u0000\u0000\u0000\u00ce\u00bc"+
- "\u0001\u0000\u0000\u0000\u00ce\u00bd\u0001\u0000\u0000\u0000\u00ce\u00be"+
- "\u0001\u0000\u0000\u0000\u00ce\u00bf\u0001\u0000\u0000\u0000\u00ce\u00c0"+
- "\u0001\u0000\u0000\u0000\u00ce\u00c1\u0001\u0000\u0000\u0000\u00ce\u00c2"+
- "\u0001\u0000\u0000\u0000\u00ce\u00c3\u0001\u0000\u0000\u0000\u00ce\u00c4"+
- "\u0001\u0000\u0000\u0000\u00ce\u00c5\u0001\u0000\u0000\u0000\u00ce\u00c6"+
- "\u0001\u0000\u0000\u0000\u00ce\u00c7\u0001\u0000\u0000\u0000\u00ce\u00c8"+
- "\u0001\u0000\u0000\u0000\u00ce\u00ca\u0001\u0000\u0000\u0000\u00ce\u00cc"+
- "\u0001\u0000\u0000\u0000\u00cf\u0007\u0001\u0000\u0000\u0000\u00d0\u00d1"+
- "\u0005\u0012\u0000\u0000\u00d1\u00d2\u0003\n\u0005\u0000\u00d2\t\u0001"+
- "\u0000\u0000\u0000\u00d3\u00d4\u0006\u0005\uffff\uffff\u0000\u00d4\u00d5"+
- "\u00054\u0000\u0000\u00d5\u00f1\u0003\n\u0005\b\u00d6\u00f1\u0003\u0010"+
- "\b\u0000\u00d7\u00f1\u0003\f\u0006\u0000\u00d8\u00da\u0003\u0010\b\u0000"+
- "\u00d9\u00db\u00054\u0000\u0000\u00da\u00d9\u0001\u0000\u0000\u0000\u00da"+
- "\u00db\u0001\u0000\u0000\u0000\u00db\u00dc\u0001\u0000\u0000\u0000\u00dc"+
- "\u00dd\u0005/\u0000\u0000\u00dd\u00de\u00053\u0000\u0000\u00de\u00e3\u0003"+
- "\u0010\b\u0000\u00df\u00e0\u0005*\u0000\u0000\u00e0\u00e2\u0003\u0010"+
- "\b\u0000\u00e1\u00df\u0001\u0000\u0000\u0000\u00e2\u00e5\u0001\u0000\u0000"+
- "\u0000\u00e3\u00e1\u0001\u0000\u0000\u0000\u00e3\u00e4\u0001\u0000\u0000"+
- "\u0000\u00e4\u00e6\u0001\u0000\u0000\u0000\u00e5\u00e3\u0001\u0000\u0000"+
- "\u0000\u00e6\u00e7\u0005;\u0000\u0000\u00e7\u00f1\u0001\u0000\u0000\u0000"+
- "\u00e8\u00e9\u0003\u0010\b\u0000\u00e9\u00eb\u00050\u0000\u0000\u00ea"+
- "\u00ec\u00054\u0000\u0000\u00eb\u00ea\u0001\u0000\u0000\u0000\u00eb\u00ec"+
- "\u0001\u0000\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed\u00ee"+
- "\u00055\u0000\u0000\u00ee\u00f1\u0001\u0000\u0000\u0000\u00ef\u00f1\u0003"+
- "\u000e\u0007\u0000\u00f0\u00d3\u0001\u0000\u0000\u0000\u00f0\u00d6\u0001"+
- "\u0000\u0000\u0000\u00f0\u00d7\u0001\u0000\u0000\u0000\u00f0\u00d8\u0001"+
- "\u0000\u0000\u0000\u00f0\u00e8\u0001\u0000\u0000\u0000\u00f0\u00ef\u0001"+
- "\u0000\u0000\u0000\u00f1\u00fa\u0001\u0000\u0000\u0000\u00f2\u00f3\n\u0005"+
- "\u0000\u0000\u00f3\u00f4\u0005$\u0000\u0000\u00f4\u00f9\u0003\n\u0005"+
- "\u0006\u00f5\u00f6\n\u0004\u0000\u0000\u00f6\u00f7\u00058\u0000\u0000"+
- "\u00f7\u00f9\u0003\n\u0005\u0005\u00f8\u00f2\u0001\u0000\u0000\u0000\u00f8"+
- "\u00f5\u0001\u0000\u0000\u0000\u00f9\u00fc\u0001\u0000\u0000\u0000\u00fa"+
- "\u00f8\u0001\u0000\u0000\u0000\u00fa\u00fb\u0001\u0000\u0000\u0000\u00fb"+
- "\u000b\u0001\u0000\u0000\u0000\u00fc\u00fa\u0001\u0000\u0000\u0000\u00fd"+
- "\u00ff\u0003\u0010\b\u0000\u00fe\u0100\u00054\u0000\u0000\u00ff\u00fe"+
- "\u0001\u0000\u0000\u0000\u00ff\u0100\u0001\u0000\u0000\u0000\u0100\u0101"+
- "\u0001\u0000\u0000\u0000\u0101\u0102\u00052\u0000\u0000\u0102\u0103\u0003"+
- "x<\u0000\u0103\u011c\u0001\u0000\u0000\u0000\u0104\u0106\u0003\u0010\b"+
- "\u0000\u0105\u0107\u00054\u0000\u0000\u0106\u0105\u0001\u0000\u0000\u0000"+
- "\u0106\u0107\u0001\u0000\u0000\u0000\u0107\u0108\u0001\u0000\u0000\u0000"+
- "\u0108\u0109\u0005:\u0000\u0000\u0109\u010a\u0003x<\u0000\u010a\u011c"+
- "\u0001\u0000\u0000\u0000\u010b\u010d\u0003\u0010\b\u0000\u010c\u010e\u0005"+
- "4\u0000\u0000\u010d\u010c\u0001\u0000\u0000\u0000\u010d\u010e\u0001\u0000"+
- "\u0000\u0000\u010e\u010f\u0001\u0000\u0000\u0000\u010f\u0110\u00052\u0000"+
- "\u0000\u0110\u0111\u00053\u0000\u0000\u0111\u0116\u0003x<\u0000\u0112"+
- "\u0113\u0005*\u0000\u0000\u0113\u0115\u0003x<\u0000\u0114\u0112\u0001"+
- "\u0000\u0000\u0000\u0115\u0118\u0001\u0000\u0000\u0000\u0116\u0114\u0001"+
- "\u0000\u0000\u0000\u0116\u0117\u0001\u0000\u0000\u0000\u0117\u0119\u0001"+
- "\u0000\u0000\u0000\u0118\u0116\u0001\u0000\u0000\u0000\u0119\u011a\u0005"+
- ";\u0000\u0000\u011a\u011c\u0001\u0000\u0000\u0000\u011b\u00fd\u0001\u0000"+
- "\u0000\u0000\u011b\u0104\u0001\u0000\u0000\u0000\u011b\u010b\u0001\u0000"+
- "\u0000\u0000\u011c\r\u0001\u0000\u0000\u0000\u011d\u0120\u0003F#\u0000"+
- "\u011e\u011f\u0005(\u0000\u0000\u011f\u0121\u0003\u001e\u000f\u0000\u0120"+
- "\u011e\u0001\u0000\u0000\u0000\u0120\u0121\u0001\u0000\u0000\u0000\u0121"+
- "\u0122\u0001\u0000\u0000\u0000\u0122\u0123\u0005)\u0000\u0000\u0123\u0124"+
- "\u0003P(\u0000\u0124\u000f\u0001\u0000\u0000\u0000\u0125\u012b\u0003\u0012"+
- "\t\u0000\u0126\u0127\u0003\u0012\t\u0000\u0127\u0128\u0003z=\u0000\u0128"+
- "\u0129\u0003\u0012\t\u0000\u0129\u012b\u0001\u0000\u0000\u0000\u012a\u0125"+
- "\u0001\u0000\u0000\u0000\u012a\u0126\u0001\u0000\u0000\u0000\u012b\u0011"+
- "\u0001\u0000\u0000\u0000\u012c\u012d\u0006\t\uffff\uffff\u0000\u012d\u0131"+
- "\u0003\u0014\n\u0000\u012e\u012f\u0007\u0000\u0000\u0000\u012f\u0131\u0003"+
- "\u0012\t\u0003\u0130\u012c\u0001\u0000\u0000\u0000\u0130\u012e\u0001\u0000"+
- "\u0000\u0000\u0131\u013a\u0001\u0000\u0000\u0000\u0132\u0133\n\u0002\u0000"+
- "\u0000\u0133\u0134\u0007\u0001\u0000\u0000\u0134\u0139\u0003\u0012\t\u0003"+
- "\u0135\u0136\n\u0001\u0000\u0000\u0136\u0137\u0007\u0000\u0000\u0000\u0137"+
- "\u0139\u0003\u0012\t\u0002\u0138\u0132\u0001\u0000\u0000\u0000\u0138\u0135"+
- "\u0001\u0000\u0000\u0000\u0139\u013c\u0001\u0000\u0000\u0000\u013a\u0138"+
- "\u0001\u0000\u0000\u0000\u013a\u013b\u0001\u0000\u0000\u0000\u013b\u0013"+
- "\u0001\u0000\u0000\u0000\u013c\u013a\u0001\u0000\u0000\u0000\u013d\u013e"+
- "\u0006\n\uffff\uffff\u0000\u013e\u0146\u0003P(\u0000\u013f\u0146\u0003"+
- "F#\u0000\u0140\u0146\u0003\u0016\u000b\u0000\u0141\u0142\u00053\u0000"+
- "\u0000\u0142\u0143\u0003\n\u0005\u0000\u0143\u0144\u0005;\u0000\u0000"+
- "\u0144\u0146\u0001\u0000\u0000\u0000\u0145\u013d\u0001\u0000\u0000\u0000"+
- "\u0145\u013f\u0001\u0000\u0000\u0000\u0145\u0140\u0001\u0000\u0000\u0000"+
- "\u0145\u0141\u0001\u0000\u0000\u0000\u0146\u014c\u0001\u0000\u0000\u0000"+
- "\u0147\u0148\n\u0001\u0000\u0000\u0148\u0149\u0005(\u0000\u0000\u0149"+
- "\u014b\u0003\u001e\u000f\u0000\u014a\u0147\u0001\u0000\u0000\u0000\u014b"+
- "\u014e\u0001\u0000\u0000\u0000\u014c\u014a\u0001\u0000\u0000\u0000\u014c"+
- "\u014d\u0001\u0000\u0000\u0000\u014d\u0015\u0001\u0000\u0000\u0000\u014e"+
- "\u014c\u0001\u0000\u0000\u0000\u014f\u0150\u0003\u0018\f\u0000\u0150\u015e"+
- "\u00053\u0000\u0000\u0151\u015f\u0005G\u0000\u0000\u0152\u0157\u0003\n"+
- "\u0005\u0000\u0153\u0154\u0005*\u0000\u0000\u0154\u0156\u0003\n\u0005"+
- "\u0000\u0155\u0153\u0001\u0000\u0000\u0000\u0156\u0159\u0001\u0000\u0000"+
- "\u0000\u0157\u0155\u0001\u0000\u0000\u0000\u0157\u0158\u0001\u0000\u0000"+
- "\u0000\u0158\u015c\u0001\u0000\u0000\u0000\u0159\u0157\u0001\u0000\u0000"+
- "\u0000\u015a\u015b\u0005*\u0000\u0000\u015b\u015d\u0003\u001a\r\u0000"+
- "\u015c\u015a\u0001\u0000\u0000\u0000\u015c\u015d\u0001\u0000\u0000\u0000"+
- "\u015d\u015f\u0001\u0000\u0000\u0000\u015e\u0151\u0001\u0000\u0000\u0000"+
- "\u015e\u0152\u0001\u0000\u0000\u0000\u015e\u015f\u0001\u0000\u0000\u0000"+
- "\u015f\u0160\u0001\u0000\u0000\u0000\u0160\u0161\u0005;\u0000\u0000\u0161"+
- "\u0017\u0001\u0000\u0000\u0000\u0162\u0163\u0003V+\u0000\u0163\u0019\u0001"+
- "\u0000\u0000\u0000\u0164\u0165\u0005J\u0000\u0000\u0165\u016a\u0003\u001c"+
- "\u000e\u0000\u0166\u0167\u0005*\u0000\u0000\u0167\u0169\u0003\u001c\u000e"+
- "\u0000\u0168\u0166\u0001\u0000\u0000\u0000\u0169\u016c\u0001\u0000\u0000"+
- "\u0000\u016a\u0168\u0001\u0000\u0000\u0000\u016a\u016b\u0001\u0000\u0000"+
- "\u0000\u016b\u016d\u0001\u0000\u0000\u0000\u016c\u016a\u0001\u0000\u0000"+
- "\u0000\u016d\u016e\u0005K\u0000\u0000\u016e\u001b\u0001\u0000\u0000\u0000"+
- "\u016f\u0170\u0003x<\u0000\u0170\u0171\u0005)\u0000\u0000\u0171\u0172"+
- "\u0003P(\u0000\u0172\u001d\u0001\u0000\u0000\u0000\u0173\u0174\u0003L"+
- "&\u0000\u0174\u001f\u0001\u0000\u0000\u0000\u0175\u0176\u0005\r\u0000"+
- "\u0000\u0176\u0177\u0003\"\u0011\u0000\u0177!\u0001\u0000\u0000\u0000"+
- "\u0178\u017d\u0003$\u0012\u0000\u0179\u017a\u0005*\u0000\u0000\u017a\u017c"+
- "\u0003$\u0012\u0000\u017b\u0179\u0001\u0000\u0000\u0000\u017c\u017f\u0001"+
- "\u0000\u0000\u0000\u017d\u017b\u0001\u0000\u0000\u0000\u017d\u017e\u0001"+
- "\u0000\u0000\u0000\u017e#\u0001\u0000\u0000\u0000\u017f\u017d\u0001\u0000"+
- "\u0000\u0000\u0180\u0181\u0003F#\u0000\u0181\u0182\u0005&\u0000\u0000"+
- "\u0182\u0184\u0001\u0000\u0000\u0000\u0183\u0180\u0001\u0000\u0000\u0000"+
- "\u0183\u0184\u0001\u0000\u0000\u0000\u0184\u0185\u0001\u0000\u0000\u0000"+
- "\u0185\u0186\u0003\n\u0005\u0000\u0186%\u0001\u0000\u0000\u0000\u0187"+
- "\u018c\u0003(\u0014\u0000\u0188\u0189\u0005*\u0000\u0000\u0189\u018b\u0003"+
- "(\u0014\u0000\u018a\u0188\u0001\u0000\u0000\u0000\u018b\u018e\u0001\u0000"+
- "\u0000\u0000\u018c\u018a\u0001\u0000\u0000\u0000\u018c\u018d\u0001\u0000"+
- "\u0000\u0000\u018d\'\u0001\u0000\u0000\u0000\u018e\u018c\u0001\u0000\u0000"+
- "\u0000\u018f\u0192\u0003F#\u0000\u0190\u0191\u0005&\u0000\u0000\u0191"+
- "\u0193\u0003\n\u0005\u0000\u0192\u0190\u0001\u0000\u0000\u0000\u0192\u0193"+
- "\u0001\u0000\u0000\u0000\u0193)\u0001\u0000\u0000\u0000\u0194\u0195\u0005"+
- "\u0007\u0000\u0000\u0195\u019a\u0003,\u0016\u0000\u0196\u0197\u0005*\u0000"+
- "\u0000\u0197\u0199\u0003,\u0016\u0000\u0198\u0196\u0001\u0000\u0000\u0000"+
- "\u0199\u019c\u0001\u0000\u0000\u0000\u019a\u0198\u0001\u0000\u0000\u0000"+
- "\u019a\u019b\u0001\u0000\u0000\u0000\u019b\u019e\u0001\u0000\u0000\u0000"+
- "\u019c\u019a\u0001\u0000\u0000\u0000\u019d\u019f\u00036\u001b\u0000\u019e"+
- "\u019d\u0001\u0000\u0000\u0000\u019e\u019f\u0001\u0000\u0000\u0000\u019f"+
- "+\u0001\u0000\u0000\u0000\u01a0\u01a1\u0003.\u0017\u0000\u01a1\u01a2\u0005"+
- ")\u0000\u0000\u01a2\u01a3\u00032\u0019\u0000\u01a3\u01aa\u0001\u0000\u0000"+
- "\u0000\u01a4\u01a5\u00032\u0019\u0000\u01a5\u01a6\u0005(\u0000\u0000\u01a6"+
- "\u01a7\u00030\u0018\u0000\u01a7\u01aa\u0001\u0000\u0000\u0000\u01a8\u01aa"+
- "\u00034\u001a\u0000\u01a9\u01a0\u0001\u0000\u0000\u0000\u01a9\u01a4\u0001"+
- "\u0000\u0000\u0000\u01a9\u01a8\u0001\u0000\u0000\u0000\u01aa-\u0001\u0000"+
- "\u0000\u0000\u01ab\u01ac\u0005Z\u0000\u0000\u01ac/\u0001\u0000\u0000\u0000"+
- "\u01ad\u01ae\u0005Z\u0000\u0000\u01ae1\u0001\u0000\u0000\u0000\u01af\u01b0"+
- "\u0005Z\u0000\u0000\u01b03\u0001\u0000\u0000\u0000\u01b1\u01b2\u0007\u0002"+
- "\u0000\u0000\u01b25\u0001\u0000\u0000\u0000\u01b3\u01b6\u00038\u001c\u0000"+
- "\u01b4\u01b6\u0003:\u001d\u0000\u01b5\u01b3\u0001\u0000\u0000\u0000\u01b5"+
- "\u01b4\u0001\u0000\u0000\u0000\u01b67\u0001\u0000\u0000\u0000\u01b7\u01b8"+
- "\u0005Y\u0000\u0000\u01b8\u01bd\u0005Z\u0000\u0000\u01b9\u01ba\u0005*"+
- "\u0000\u0000\u01ba\u01bc\u0005Z\u0000\u0000\u01bb\u01b9\u0001\u0000\u0000"+
- "\u0000\u01bc\u01bf\u0001\u0000\u0000\u0000\u01bd\u01bb\u0001\u0000\u0000"+
- "\u0000\u01bd\u01be\u0001\u0000\u0000\u0000\u01be9\u0001\u0000\u0000\u0000"+
- "\u01bf\u01bd\u0001\u0000\u0000\u0000\u01c0\u01c1\u0005O\u0000\u0000\u01c1"+
- "\u01c2\u00038\u001c\u0000\u01c2\u01c3\u0005P\u0000\u0000\u01c3;\u0001"+
- "\u0000\u0000\u0000\u01c4\u01c5\u0005\u0017\u0000\u0000\u01c5\u01ca\u0003"+
- ",\u0016\u0000\u01c6\u01c7\u0005*\u0000\u0000\u01c7\u01c9\u0003,\u0016"+
- "\u0000\u01c8\u01c6\u0001\u0000\u0000\u0000\u01c9\u01cc\u0001\u0000\u0000"+
- "\u0000\u01ca\u01c8\u0001\u0000\u0000\u0000\u01ca\u01cb\u0001\u0000\u0000"+
- "\u0000\u01cb\u01ce\u0001\u0000\u0000\u0000\u01cc\u01ca\u0001\u0000\u0000"+
- "\u0000\u01cd\u01cf\u0003B!\u0000\u01ce\u01cd\u0001\u0000\u0000\u0000\u01ce"+
- "\u01cf\u0001\u0000\u0000\u0000\u01cf\u01d2\u0001\u0000\u0000\u0000\u01d0"+
- "\u01d1\u0005\'\u0000\u0000\u01d1\u01d3\u0003\"\u0011\u0000\u01d2\u01d0"+
- "\u0001\u0000\u0000\u0000\u01d2\u01d3\u0001\u0000\u0000\u0000\u01d3=\u0001"+
- "\u0000\u0000\u0000\u01d4\u01d5\u0005\u0005\u0000\u0000\u01d5\u01d6\u0003"+
- "\"\u0011\u0000\u01d6?\u0001\u0000\u0000\u0000\u01d7\u01d9\u0005\u0011"+
- "\u0000\u0000\u01d8\u01da\u0003B!\u0000\u01d9\u01d8\u0001\u0000\u0000\u0000"+
- "\u01d9\u01da\u0001\u0000\u0000\u0000\u01da\u01dd\u0001\u0000\u0000\u0000"+
- "\u01db\u01dc\u0005\'\u0000\u0000\u01dc\u01de\u0003\"\u0011\u0000\u01dd"+
- "\u01db\u0001\u0000\u0000\u0000\u01dd\u01de\u0001\u0000\u0000\u0000\u01de"+
- "A\u0001\u0000\u0000\u0000\u01df\u01e4\u0003D\"\u0000\u01e0\u01e1\u0005"+
- "*\u0000\u0000\u01e1\u01e3\u0003D\"\u0000\u01e2\u01e0\u0001\u0000\u0000"+
- "\u0000\u01e3\u01e6\u0001\u0000\u0000\u0000\u01e4\u01e2\u0001\u0000\u0000"+
- "\u0000\u01e4\u01e5\u0001\u0000\u0000\u0000\u01e5C\u0001\u0000\u0000\u0000"+
- "\u01e6\u01e4\u0001\u0000\u0000\u0000\u01e7\u01ea\u0003$\u0012\u0000\u01e8"+
- "\u01e9\u0005\u0012\u0000\u0000\u01e9\u01eb\u0003\n\u0005\u0000\u01ea\u01e8"+
- "\u0001\u0000\u0000\u0000\u01ea\u01eb\u0001\u0000\u0000\u0000\u01ebE\u0001"+
- "\u0000\u0000\u0000\u01ec\u01f1\u0003V+\u0000\u01ed\u01ee\u0005,\u0000"+
- "\u0000\u01ee\u01f0\u0003V+\u0000\u01ef\u01ed\u0001\u0000\u0000\u0000\u01f0"+
- "\u01f3\u0001\u0000\u0000\u0000\u01f1\u01ef\u0001\u0000\u0000\u0000\u01f1"+
- "\u01f2\u0001\u0000\u0000\u0000\u01f2G\u0001\u0000\u0000\u0000\u01f3\u01f1"+
- "\u0001\u0000\u0000\u0000\u01f4\u01f9\u0003N\'\u0000\u01f5\u01f6\u0005"+
- ",\u0000\u0000\u01f6\u01f8\u0003N\'\u0000\u01f7\u01f5\u0001\u0000\u0000"+
- "\u0000\u01f8\u01fb\u0001\u0000\u0000\u0000\u01f9\u01f7\u0001\u0000\u0000"+
- "\u0000\u01f9\u01fa\u0001\u0000\u0000\u0000\u01faI\u0001\u0000\u0000\u0000"+
- "\u01fb\u01f9\u0001\u0000\u0000\u0000\u01fc\u0201\u0003H$\u0000\u01fd\u01fe"+
- "\u0005*\u0000\u0000\u01fe\u0200\u0003H$\u0000\u01ff\u01fd\u0001\u0000"+
- "\u0000\u0000\u0200\u0203\u0001\u0000\u0000\u0000\u0201\u01ff\u0001\u0000"+
- "\u0000\u0000\u0201\u0202\u0001\u0000\u0000\u0000\u0202K\u0001\u0000\u0000"+
- "\u0000\u0203\u0201\u0001\u0000\u0000\u0000\u0204\u0205\u0007\u0003\u0000"+
- "\u0000\u0205M\u0001\u0000\u0000\u0000\u0206\u020a\u0005^\u0000\u0000\u0207"+
- "\u020a\u0003R)\u0000\u0208\u020a\u0003T*\u0000\u0209\u0206\u0001\u0000"+
- "\u0000\u0000\u0209\u0207\u0001\u0000\u0000\u0000\u0209\u0208\u0001\u0000"+
- "\u0000\u0000\u020aO\u0001\u0000\u0000\u0000\u020b\u0236\u00055\u0000\u0000"+
- "\u020c\u020d\u0003v;\u0000\u020d\u020e\u0005Q\u0000\u0000\u020e\u0236"+
- "\u0001\u0000\u0000\u0000\u020f\u0236\u0003t:\u0000\u0210\u0236\u0003v"+
- ";\u0000\u0211\u0236\u0003p8\u0000\u0212\u0236\u0003R)\u0000\u0213\u0236"+
- "\u0003x<\u0000\u0214\u0215\u0005O\u0000\u0000\u0215\u021a\u0003r9\u0000"+
- "\u0216\u0217\u0005*\u0000\u0000\u0217\u0219\u0003r9\u0000\u0218\u0216"+
- "\u0001\u0000\u0000\u0000\u0219\u021c\u0001\u0000\u0000\u0000\u021a\u0218"+
- "\u0001\u0000\u0000\u0000\u021a\u021b\u0001\u0000\u0000\u0000\u021b\u021d"+
- "\u0001\u0000\u0000\u0000\u021c\u021a\u0001\u0000\u0000\u0000\u021d\u021e"+
- "\u0005P\u0000\u0000\u021e\u0236\u0001\u0000\u0000\u0000\u021f\u0220\u0005"+
- "O\u0000\u0000\u0220\u0225\u0003p8\u0000\u0221\u0222\u0005*\u0000\u0000"+
- "\u0222\u0224\u0003p8\u0000\u0223\u0221\u0001\u0000\u0000\u0000\u0224\u0227"+
- "\u0001\u0000\u0000\u0000\u0225\u0223\u0001\u0000\u0000\u0000\u0225\u0226"+
- "\u0001\u0000\u0000\u0000\u0226\u0228\u0001\u0000\u0000\u0000\u0227\u0225"+
- "\u0001\u0000\u0000\u0000\u0228\u0229\u0005P\u0000\u0000\u0229\u0236\u0001"+
- "\u0000\u0000\u0000\u022a\u022b\u0005O\u0000\u0000\u022b\u0230\u0003x<"+
- "\u0000\u022c\u022d\u0005*\u0000\u0000\u022d\u022f\u0003x<\u0000\u022e"+
- "\u022c\u0001\u0000\u0000\u0000\u022f\u0232\u0001\u0000\u0000\u0000\u0230"+
- "\u022e\u0001\u0000\u0000\u0000\u0230\u0231\u0001\u0000\u0000\u0000\u0231"+
- "\u0233\u0001\u0000\u0000\u0000\u0232\u0230\u0001\u0000\u0000\u0000\u0233"+
- "\u0234\u0005P\u0000\u0000\u0234\u0236\u0001\u0000\u0000\u0000\u0235\u020b"+
- "\u0001\u0000\u0000\u0000\u0235\u020c\u0001\u0000\u0000\u0000\u0235\u020f"+
- "\u0001\u0000\u0000\u0000\u0235\u0210\u0001\u0000\u0000\u0000\u0235\u0211"+
- "\u0001\u0000\u0000\u0000\u0235\u0212\u0001\u0000\u0000\u0000\u0235\u0213"+
- "\u0001\u0000\u0000\u0000\u0235\u0214\u0001\u0000\u0000\u0000\u0235\u021f"+
- "\u0001\u0000\u0000\u0000\u0235\u022a\u0001\u0000\u0000\u0000\u0236Q\u0001"+
- "\u0000\u0000\u0000\u0237\u023a\u00059\u0000\u0000\u0238\u023a\u0005M\u0000"+
- "\u0000\u0239\u0237\u0001\u0000\u0000\u0000\u0239\u0238\u0001\u0000\u0000"+
- "\u0000\u023aS\u0001\u0000\u0000\u0000\u023b\u023e\u0005L\u0000\u0000\u023c"+
- "\u023e\u0005N\u0000\u0000\u023d\u023b\u0001\u0000\u0000\u0000\u023d\u023c"+
- "\u0001\u0000\u0000\u0000\u023eU\u0001\u0000\u0000\u0000\u023f\u0243\u0003"+
- "L&\u0000\u0240\u0243\u0003R)\u0000\u0241\u0243\u0003T*\u0000\u0242\u023f"+
- "\u0001\u0000\u0000\u0000\u0242\u0240\u0001\u0000\u0000\u0000\u0242\u0241"+
- "\u0001\u0000\u0000\u0000\u0243W\u0001\u0000\u0000\u0000\u0244\u0245\u0005"+
- "\n\u0000\u0000\u0245\u0246\u0003P(\u0000\u0246Y\u0001\u0000\u0000\u0000"+
- "\u0247\u0248\u0005\u0010\u0000\u0000\u0248\u024d\u0003\\.\u0000\u0249"+
- "\u024a\u0005*\u0000\u0000\u024a\u024c\u0003\\.\u0000\u024b\u0249\u0001"+
- "\u0000\u0000\u0000\u024c\u024f\u0001\u0000\u0000\u0000\u024d\u024b\u0001"+
- "\u0000\u0000\u0000\u024d\u024e\u0001\u0000\u0000\u0000\u024e[\u0001\u0000"+
- "\u0000\u0000\u024f\u024d\u0001\u0000\u0000\u0000\u0250\u0252\u0003\n\u0005"+
- "\u0000\u0251\u0253\u0007\u0004\u0000\u0000\u0252\u0251\u0001\u0000\u0000"+
- "\u0000\u0252\u0253\u0001\u0000\u0000\u0000\u0253\u0256\u0001\u0000\u0000"+
- "\u0000\u0254\u0255\u00056\u0000\u0000\u0255\u0257\u0007\u0005\u0000\u0000"+
- "\u0256\u0254\u0001\u0000\u0000\u0000\u0256\u0257\u0001\u0000\u0000\u0000"+
- "\u0257]\u0001\u0000\u0000\u0000\u0258\u0259\u0005\t\u0000\u0000\u0259"+
- "\u025a\u0003J%\u0000\u025a_\u0001\u0000\u0000\u0000\u025b\u025c\u0005"+
- "\u0003\u0000\u0000\u025c\u025d\u0003J%\u0000\u025da\u0001\u0000\u0000"+
- "\u0000\u025e\u025f\u0005\f\u0000\u0000\u025f\u0264\u0003d2\u0000\u0260"+
- "\u0261\u0005*\u0000\u0000\u0261\u0263\u0003d2\u0000\u0262\u0260\u0001"+
- "\u0000\u0000\u0000\u0263\u0266\u0001\u0000\u0000\u0000\u0264\u0262\u0001"+
- "\u0000\u0000\u0000\u0264\u0265\u0001\u0000\u0000\u0000\u0265c\u0001\u0000"+
- "\u0000\u0000\u0266\u0264\u0001\u0000\u0000\u0000\u0267\u0268\u0003H$\u0000"+
- "\u0268\u0269\u0005b\u0000\u0000\u0269\u026a\u0003H$\u0000\u026a\u0270"+
- "\u0001\u0000\u0000\u0000\u026b\u026c\u0003H$\u0000\u026c\u026d\u0005&"+
- "\u0000\u0000\u026d\u026e\u0003H$\u0000\u026e\u0270\u0001\u0000\u0000\u0000"+
- "\u026f\u0267\u0001\u0000\u0000\u0000\u026f\u026b\u0001\u0000\u0000\u0000"+
- "\u0270e\u0001\u0000\u0000\u0000\u0271\u0272\u0005\u0002\u0000\u0000\u0272"+
- "\u0273\u0003\u0014\n\u0000\u0273\u0275\u0003x<\u0000\u0274\u0276\u0003"+
- "l6\u0000\u0275\u0274\u0001\u0000\u0000\u0000\u0275\u0276\u0001\u0000\u0000"+
- "\u0000\u0276g\u0001\u0000\u0000\u0000\u0277\u0278\u0005\b\u0000\u0000"+
- "\u0278\u0279\u0003\u0014\n\u0000\u0279\u027a\u0003x<\u0000\u027ai\u0001"+
- "\u0000\u0000\u0000\u027b\u027c\u0005\u000b\u0000\u0000\u027c\u027d\u0003"+
- "F#\u0000\u027dk\u0001\u0000\u0000\u0000\u027e\u0283\u0003n7\u0000\u027f"+
- "\u0280\u0005*\u0000\u0000\u0280\u0282\u0003n7\u0000\u0281\u027f\u0001"+
- "\u0000\u0000\u0000\u0282\u0285\u0001\u0000\u0000\u0000\u0283\u0281\u0001"+
- "\u0000\u0000\u0000\u0283\u0284\u0001\u0000\u0000\u0000\u0284m\u0001\u0000"+
- "\u0000\u0000\u0285\u0283\u0001\u0000\u0000\u0000\u0286\u0287\u0003L&\u0000"+
- "\u0287\u0288\u0005&\u0000\u0000\u0288\u0289\u0003P(\u0000\u0289o\u0001"+
- "\u0000\u0000\u0000\u028a\u028b\u0007\u0006\u0000\u0000\u028bq\u0001\u0000"+
- "\u0000\u0000\u028c\u028f\u0003t:\u0000\u028d\u028f\u0003v;\u0000\u028e"+
- "\u028c\u0001\u0000\u0000\u0000\u028e\u028d\u0001\u0000\u0000\u0000\u028f"+
- "s\u0001\u0000\u0000\u0000\u0290\u0292\u0007\u0000\u0000\u0000\u0291\u0290"+
- "\u0001\u0000\u0000\u0000\u0291\u0292\u0001\u0000\u0000\u0000\u0292\u0293"+
- "\u0001\u0000\u0000\u0000\u0293\u0294\u0005#\u0000\u0000\u0294u\u0001\u0000"+
- "\u0000\u0000\u0295\u0297\u0007\u0000\u0000\u0000\u0296\u0295\u0001\u0000"+
- "\u0000\u0000\u0296\u0297\u0001\u0000\u0000\u0000\u0297\u0298\u0001\u0000"+
- "\u0000\u0000\u0298\u0299\u0005\"\u0000\u0000\u0299w\u0001\u0000\u0000"+
- "\u0000\u029a\u029b\u0005!\u0000\u0000\u029by\u0001\u0000\u0000\u0000\u029c"+
- "\u029d\u0007\u0007\u0000\u0000\u029d{\u0001\u0000\u0000\u0000\u029e\u029f"+
- "\u0005\u0006\u0000\u0000\u029f\u02a0\u0003~?\u0000\u02a0}\u0001\u0000"+
- "\u0000\u0000\u02a1\u02a2\u0005O\u0000\u0000\u02a2\u02a3\u0003\u0002\u0001"+
- "\u0000\u02a3\u02a4\u0005P\u0000\u0000\u02a4\u007f\u0001\u0000\u0000\u0000"+
- "\u02a5\u02a6\u0005\u000f\u0000\u0000\u02a6\u02a7\u0005p\u0000\u0000\u02a7"+
- "\u0081\u0001\u0000\u0000\u0000\u02a8\u02a9\u0005\u0004\u0000\u0000\u02a9"+
- "\u02ac\u0003\u0084B\u0000\u02aa\u02ab\u00057\u0000\u0000\u02ab\u02ad\u0003"+
- "H$\u0000\u02ac\u02aa\u0001\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000\u0000"+
- "\u0000\u02ad\u02b7\u0001\u0000\u0000\u0000\u02ae\u02af\u0005=\u0000\u0000"+
- "\u02af\u02b4\u0003\u0086C\u0000\u02b0\u02b1\u0005*\u0000\u0000\u02b1\u02b3"+
- "\u0003\u0086C\u0000\u02b2\u02b0\u0001\u0000\u0000\u0000\u02b3\u02b6\u0001"+
- "\u0000\u0000\u0000\u02b4\u02b2\u0001\u0000\u0000\u0000\u02b4\u02b5\u0001"+
- "\u0000\u0000\u0000\u02b5\u02b8\u0001\u0000\u0000\u0000\u02b6\u02b4\u0001"+
- "\u0000\u0000\u0000\u02b7\u02ae\u0001\u0000\u0000\u0000\u02b7\u02b8\u0001"+
- "\u0000\u0000\u0000\u02b8\u0083\u0001\u0000\u0000\u0000\u02b9\u02ba\u0007"+
- "\b\u0000\u0000\u02ba\u0085\u0001\u0000\u0000\u0000\u02bb\u02bc\u0003H"+
- "$\u0000\u02bc\u02bd\u0005&\u0000\u0000\u02bd\u02bf\u0001\u0000\u0000\u0000"+
- "\u02be\u02bb\u0001\u0000\u0000\u0000\u02be\u02bf\u0001\u0000\u0000\u0000"+
- "\u02bf\u02c0\u0001\u0000\u0000\u0000\u02c0\u02c1\u0003H$\u0000\u02c1\u0087"+
- "\u0001\u0000\u0000\u0000\u02c2\u02c3\u0005\u0014\u0000\u0000\u02c3\u02c6"+
- "\u0003F#\u0000\u02c4\u02c5\u00057\u0000\u0000\u02c5\u02c7\u0003F#\u0000"+
- "\u02c6\u02c4\u0001\u0000\u0000\u0000\u02c6\u02c7\u0001\u0000\u0000\u0000"+
- "\u02c7\u02cd\u0001\u0000\u0000\u0000\u02c8\u02c9\u0005b\u0000\u0000\u02c9"+
- "\u02ca\u0003F#\u0000\u02ca\u02cb\u0005*\u0000\u0000\u02cb\u02cc\u0003"+
- "F#\u0000\u02cc\u02ce\u0001\u0000\u0000\u0000\u02cd\u02c8\u0001\u0000\u0000"+
- "\u0000\u02cd\u02ce\u0001\u0000\u0000\u0000\u02ce\u0089\u0001\u0000\u0000"+
- "\u0000\u02cf\u02d0\u0005\u000e\u0000\u0000\u02d0\u02d1\u0003P(\u0000\u02d1"+
- "\u008b\u0001\u0000\u0000\u0000\u02d2\u02d3\u0005\u0016\u0000\u0000\u02d3"+
- "\u02d4\u0003,\u0016\u0000\u02d4\u02d5\u00057\u0000\u0000\u02d5\u02d6\u0003"+
- "J%\u0000\u02d6\u008d\u0001\u0000\u0000\u0000\u02d7\u02d8\u0005\u0015\u0000"+
- "\u0000\u02d8\u02db\u0003B!\u0000\u02d9\u02da\u0005\'\u0000\u0000\u02da"+
- "\u02dc\u0003\"\u0011\u0000\u02db\u02d9\u0001\u0000\u0000\u0000\u02db\u02dc"+
- "\u0001\u0000\u0000\u0000\u02dc\u008f\u0001\u0000\u0000\u0000\u02dd\u02de"+
- "\u0007\t\u0000\u0000\u02de\u02df\u0005~\u0000\u0000\u02df\u02e0\u0003"+
- "\u0092I\u0000\u02e0\u02e1\u0003\u0094J\u0000\u02e1\u0091\u0001\u0000\u0000"+
- "\u0000\u02e2\u02e3\u0003,\u0016\u0000\u02e3\u0093\u0001\u0000\u0000\u0000"+
- "\u02e4\u02e5\u00057\u0000\u0000\u02e5\u02ea\u0003\u0096K\u0000\u02e6\u02e7"+
- "\u0005*\u0000\u0000\u02e7\u02e9\u0003\u0096K\u0000\u02e8\u02e6\u0001\u0000"+
- "\u0000\u0000\u02e9\u02ec\u0001\u0000\u0000\u0000\u02ea\u02e8\u0001\u0000"+
- "\u0000\u0000\u02ea\u02eb\u0001\u0000\u0000\u0000\u02eb\u0095\u0001\u0000"+
- "\u0000\u0000\u02ec\u02ea\u0001\u0000\u0000\u0000\u02ed\u02ee\u0003\u0010"+
- "\b\u0000\u02ee\u0097\u0001\u0000\u0000\u0000\u02ef\u02f4\u0003\u009aM"+
- "\u0000\u02f0\u02f1\u0005*\u0000\u0000\u02f1\u02f3\u0003\u009aM\u0000\u02f2"+
- "\u02f0\u0001\u0000\u0000\u0000\u02f3\u02f6\u0001\u0000\u0000\u0000\u02f4"+
- "\u02f2\u0001\u0000\u0000\u0000\u02f4\u02f5\u0001\u0000\u0000\u0000\u02f5"+
- "\u0099\u0001\u0000\u0000\u0000\u02f6\u02f4\u0001\u0000\u0000\u0000\u02f7"+
- "\u02f8\u0003L&\u0000\u02f8\u02f9\u0005&\u0000\u0000\u02f9\u02fa\u0003"+
- "\u009cN\u0000\u02fa\u009b\u0001\u0000\u0000\u0000\u02fb\u02fe\u0003P("+
- "\u0000\u02fc\u02fe\u0003L&\u0000\u02fd\u02fb\u0001\u0000\u0000\u0000\u02fd"+
- "\u02fc\u0001\u0000\u0000\u0000\u02fe\u009d\u0001\u0000\u0000\u0000\u02ff"+
- "\u0300\u0005\u0018\u0000\u0000\u0300\u0301\u0003P(\u0000\u0301\u0302\u0005"+
- "7\u0000\u0000\u0302\u0305\u0003&\u0013\u0000\u0303\u0304\u0005=\u0000"+
- "\u0000\u0304\u0306\u0003\u0098L\u0000\u0305\u0303\u0001\u0000\u0000\u0000"+
- "\u0305\u0306\u0001\u0000\u0000\u0000\u0306\u009f\u0001\u0000\u0000\u0000"+
- "\u0307\u030b\u0005\u0001\u0000\u0000\u0308\u0309\u0003F#\u0000\u0309\u030a"+
- "\u0005&\u0000\u0000\u030a\u030c\u0001\u0000\u0000\u0000\u030b\u0308\u0001"+
- "\u0000\u0000\u0000\u030b\u030c\u0001\u0000\u0000\u0000\u030c\u030d\u0001"+
- "\u0000\u0000\u0000\u030d\u030e\u0003\u0014\n\u0000\u030e\u030f\u0005="+
- "\u0000\u0000\u030f\u0310\u0003V+\u0000\u0310\u00a1\u0001\u0000\u0000\u0000"+
- "J\u00ad\u00b6\u00ce\u00da\u00e3\u00eb\u00f0\u00f8\u00fa\u00ff\u0106\u010d"+
- "\u0116\u011b\u0120\u012a\u0130\u0138\u013a\u0145\u014c\u0157\u015c\u015e"+
- "\u016a\u017d\u0183\u018c\u0192\u019a\u019e\u01a9\u01b5\u01bd\u01ca\u01ce"+
- "\u01d2\u01d9\u01dd\u01e4\u01ea\u01f1\u01f9\u0201\u0209\u021a\u0225\u0230"+
- "\u0235\u0239\u023d\u0242\u024d\u0252\u0256\u0264\u026f\u0275\u0283\u028e"+
- "\u0291\u0296\u02ac\u02b4\u02b7\u02be\u02c6\u02cd\u02db\u02ea\u02f4\u02fd"+
- "\u0305\u030b";
+ "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003\u00e1\b\u0003"+
+ "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006"+
+ "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0005\u0007"+
+ "\u00ee\b\u0007\n\u0007\f\u0007\u00f1\t\u0007\u0001\b\u0001\b\u0001\b\u0003"+
+ "\b\u00f6\b\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0005\t\u00fd\b\t"+
+ "\n\t\f\t\u0100\t\t\u0001\n\u0001\n\u0001\n\u0003\n\u0105\b\n\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+
+ "\r\u0005\r\u0110\b\r\n\r\f\r\u0113\t\r\u0001\r\u0003\r\u0116\b\r\u0001"+
+ "\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
+ "\u000e\u0001\u000e\u0001\u000e\u0003\u000e\u0121\b\u000e\u0001\u000f\u0001"+
+ "\u000f\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001"+
+ "\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u012f"+
+ "\b\u0013\n\u0013\f\u0013\u0132\t\u0013\u0001\u0014\u0001\u0014\u0001\u0014"+
+ "\u0001\u0015\u0001\u0015\u0003\u0015\u0139\b\u0015\u0001\u0015\u0001\u0015"+
+ "\u0003\u0015\u013d\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0005\u0016"+
+ "\u0142\b\u0016\n\u0016\f\u0016\u0145\t\u0016\u0001\u0017\u0001\u0017\u0001"+
+ "\u0017\u0003\u0017\u014a\b\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0005"+
+ "\u0018\u014f\b\u0018\n\u0018\f\u0018\u0152\t\u0018\u0001\u0019\u0001\u0019"+
+ "\u0001\u0019\u0005\u0019\u0157\b\u0019\n\u0019\f\u0019\u015a\t\u0019\u0001"+
+ "\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u015f\b\u001a\n\u001a\f\u001a"+
+ "\u0162\t\u001a\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0003\u001c\u0169\b\u001c\u0001\u001d\u0001\u001d\u0003\u001d\u016d\b"+
+ "\u001d\u0001\u001e\u0001\u001e\u0003\u001e\u0171\b\u001e\u0001\u001f\u0001"+
+ "\u001f\u0001\u001f\u0003\u001f\u0176\b\u001f\u0001 \u0001 \u0001 \u0001"+
+ "!\u0001!\u0001!\u0001!\u0005!\u017f\b!\n!\f!\u0182\t!\u0001\"\u0001\""+
+ "\u0003\"\u0186\b\"\u0001\"\u0001\"\u0003\"\u018a\b\"\u0001#\u0001#\u0001"+
+ "#\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0005%\u0196\b%\n%"+
+ "\f%\u0199\t%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0003"+
+ "&\u01a3\b&\u0001\'\u0001\'\u0001\'\u0001\'\u0003\'\u01a9\b\'\u0001(\u0001"+
+ "(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0005*\u01b5"+
+ "\b*\n*\f*\u01b8\t*\u0001+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001"+
+ "-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001"+
+ "/\u0003/\u01cc\b/\u0001/\u0001/\u0001/\u0001/\u0005/\u01d2\b/\n/\f/\u01d5"+
+ "\t/\u0003/\u01d7\b/\u00010\u00010\u00011\u00011\u00011\u00031\u01de\b"+
+ "1\u00011\u00011\u00012\u00012\u00012\u00013\u00013\u00013\u00013\u0003"+
+ "3\u01e9\b3\u00013\u00013\u00013\u00013\u00013\u00033\u01f0\b3\u00014\u0001"+
+ "4\u00014\u00015\u00045\u01f6\b5\u000b5\f5\u01f7\u00016\u00016\u00016\u0001"+
+ "6\u00017\u00017\u00017\u00017\u00017\u00017\u00057\u0204\b7\n7\f7\u0207"+
+ "\t7\u00018\u00018\u00019\u00019\u00019\u00019\u00039\u020f\b9\u00019\u0001"+
+ "9\u00019\u00019\u0001:\u0001:\u0001:\u0001:\u0001:\u0001;\u0001;\u0001"+
+ ";\u0001;\u0003;\u021e\b;\u0001<\u0001<\u0001<\u0001=\u0001=\u0001>\u0001"+
+ ">\u0001>\u0005>\u0228\b>\n>\f>\u022b\t>\u0001?\u0001?\u0001?\u0001?\u0001"+
+ "@\u0001@\u0003@\u0233\b@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0003"+
+ "A\u023b\bA\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0003B\u0244"+
+ "\bB\u0001B\u0001B\u0001B\u0001B\u0001B\u0005B\u024b\bB\nB\fB\u024e\tB"+
+ "\u0001B\u0001B\u0001B\u0001B\u0001B\u0003B\u0255\bB\u0001B\u0001B\u0001"+
+ "B\u0003B\u025a\bB\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0005B\u0262"+
+ "\bB\nB\fB\u0265\tB\u0001C\u0001C\u0003C\u0269\bC\u0001C\u0001C\u0001C"+
+ "\u0001C\u0001C\u0003C\u0270\bC\u0001C\u0001C\u0001C\u0001C\u0001C\u0003"+
+ "C\u0277\bC\u0001C\u0001C\u0001C\u0001C\u0001C\u0005C\u027e\bC\nC\fC\u0281"+
+ "\tC\u0001C\u0001C\u0001C\u0001C\u0003C\u0287\bC\u0001C\u0001C\u0001C\u0001"+
+ "C\u0001C\u0005C\u028e\bC\nC\fC\u0291\tC\u0001C\u0001C\u0003C\u0295\bC"+
+ "\u0001D\u0001D\u0001D\u0003D\u029a\bD\u0001D\u0001D\u0001D\u0001E\u0001"+
+ "E\u0001E\u0001E\u0001E\u0003E\u02a4\bE\u0001F\u0001F\u0001F\u0001F\u0003"+
+ "F\u02aa\bF\u0001F\u0001F\u0001F\u0001F\u0001F\u0001F\u0005F\u02b2\bF\n"+
+ "F\fF\u02b5\tF\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G\u0001G"+
+ "\u0003G\u02bf\bG\u0001G\u0001G\u0001G\u0005G\u02c4\bG\nG\fG\u02c7\tG\u0001"+
+ "H\u0001H\u0001H\u0001H\u0001H\u0001H\u0005H\u02cf\bH\nH\fH\u02d2\tH\u0001"+
+ "H\u0001H\u0003H\u02d6\bH\u0003H\u02d8\bH\u0001H\u0001H\u0001I\u0001I\u0001"+
+ "J\u0001J\u0001J\u0001J\u0005J\u02e2\bJ\nJ\fJ\u02e5\tJ\u0001J\u0001J\u0001"+
+ "K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+
+ "L\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0005L\u02fa\bL\nL\fL\u02fd"+
+ "\tL\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0005L\u0305\bL\nL\fL\u0308"+
+ "\tL\u0001L\u0001L\u0001L\u0001L\u0001L\u0001L\u0005L\u0310\bL\nL\fL\u0313"+
+ "\tL\u0001L\u0001L\u0003L\u0317\bL\u0001M\u0001M\u0001N\u0001N\u0003N\u031d"+
+ "\bN\u0001O\u0003O\u0320\bO\u0001O\u0001O\u0001P\u0003P\u0325\bP\u0001"+
+ "P\u0001P\u0001Q\u0001Q\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001"+
+ "S\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0005U\u0338\bU\nU\fU\u033b"+
+ "\tU\u0001V\u0001V\u0001V\u0000\u0005\u0002n\u0084\u008c\u008eW\u0000\u0002"+
+ "\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e"+
+ " \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086"+
+ "\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e"+
+ "\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u0000\n\u0002\u000055kk\u0001"+
+ "\u0000ef\u0002\u000099??\u0002\u0000BBEE\u0002\u0000&&55\u0001\u0000W"+
+ "X\u0001\u0000Y[\u0002\u0000AANN\u0002\u0000PPRV\u0002\u0000\u0017\u0017"+
+ "\u0019\u001a\u035c\u0000\u00ae\u0001\u0000\u0000\u0000\u0002\u00b1\u0001"+
+ "\u0000\u0000\u0000\u0004\u00c3\u0001\u0000\u0000\u0000\u0006\u00e0\u0001"+
+ "\u0000\u0000\u0000\b\u00e2\u0001\u0000\u0000\u0000\n\u00e5\u0001\u0000"+
+ "\u0000\u0000\f\u00e7\u0001\u0000\u0000\u0000\u000e\u00ea\u0001\u0000\u0000"+
+ "\u0000\u0010\u00f5\u0001\u0000\u0000\u0000\u0012\u00f9\u0001\u0000\u0000"+
+ "\u0000\u0014\u0101\u0001\u0000\u0000\u0000\u0016\u0106\u0001\u0000\u0000"+
+ "\u0000\u0018\u0109\u0001\u0000\u0000\u0000\u001a\u010c\u0001\u0000\u0000"+
+ "\u0000\u001c\u0120\u0001\u0000\u0000\u0000\u001e\u0122\u0001\u0000\u0000"+
+ "\u0000 \u0124\u0001\u0000\u0000\u0000\"\u0126\u0001\u0000\u0000\u0000"+
+ "$\u0128\u0001\u0000\u0000\u0000&\u012a\u0001\u0000\u0000\u0000(\u0133"+
+ "\u0001\u0000\u0000\u0000*\u0136\u0001\u0000\u0000\u0000,\u013e\u0001\u0000"+
+ "\u0000\u0000.\u0146\u0001\u0000\u0000\u00000\u014b\u0001\u0000\u0000\u0000"+
+ "2\u0153\u0001\u0000\u0000\u00004\u015b\u0001\u0000\u0000\u00006\u0163"+
+ "\u0001\u0000\u0000\u00008\u0168\u0001\u0000\u0000\u0000:\u016c\u0001\u0000"+
+ "\u0000\u0000<\u0170\u0001\u0000\u0000\u0000>\u0175\u0001\u0000\u0000\u0000"+
+ "@\u0177\u0001\u0000\u0000\u0000B\u017a\u0001\u0000\u0000\u0000D\u0183"+
+ "\u0001\u0000\u0000\u0000F\u018b\u0001\u0000\u0000\u0000H\u018e\u0001\u0000"+
+ "\u0000\u0000J\u0191\u0001\u0000\u0000\u0000L\u01a2\u0001\u0000\u0000\u0000"+
+ "N\u01a4\u0001\u0000\u0000\u0000P\u01aa\u0001\u0000\u0000\u0000R\u01ae"+
+ "\u0001\u0000\u0000\u0000T\u01b1\u0001\u0000\u0000\u0000V\u01b9\u0001\u0000"+
+ "\u0000\u0000X\u01bd\u0001\u0000\u0000\u0000Z\u01c0\u0001\u0000\u0000\u0000"+
+ "\\\u01c4\u0001\u0000\u0000\u0000^\u01c7\u0001\u0000\u0000\u0000`\u01d8"+
+ "\u0001\u0000\u0000\u0000b\u01dd\u0001\u0000\u0000\u0000d\u01e1\u0001\u0000"+
+ "\u0000\u0000f\u01e4\u0001\u0000\u0000\u0000h\u01f1\u0001\u0000\u0000\u0000"+
+ "j\u01f5\u0001\u0000\u0000\u0000l\u01f9\u0001\u0000\u0000\u0000n\u01fd"+
+ "\u0001\u0000\u0000\u0000p\u0208\u0001\u0000\u0000\u0000r\u020a\u0001\u0000"+
+ "\u0000\u0000t\u0214\u0001\u0000\u0000\u0000v\u0219\u0001\u0000\u0000\u0000"+
+ "x\u021f\u0001\u0000\u0000\u0000z\u0222\u0001\u0000\u0000\u0000|\u0224"+
+ "\u0001\u0000\u0000\u0000~\u022c\u0001\u0000\u0000\u0000\u0080\u0232\u0001"+
+ "\u0000\u0000\u0000\u0082\u0234\u0001\u0000\u0000\u0000\u0084\u0259\u0001"+
+ "\u0000\u0000\u0000\u0086\u0294\u0001\u0000\u0000\u0000\u0088\u0296\u0001"+
+ "\u0000\u0000\u0000\u008a\u02a3\u0001\u0000\u0000\u0000\u008c\u02a9\u0001"+
+ "\u0000\u0000\u0000\u008e\u02be\u0001\u0000\u0000\u0000\u0090\u02c8\u0001"+
+ "\u0000\u0000\u0000\u0092\u02db\u0001\u0000\u0000\u0000\u0094\u02dd\u0001"+
+ "\u0000\u0000\u0000\u0096\u02e8\u0001\u0000\u0000\u0000\u0098\u0316\u0001"+
+ "\u0000\u0000\u0000\u009a\u0318\u0001\u0000\u0000\u0000\u009c\u031c\u0001"+
+ "\u0000\u0000\u0000\u009e\u031f\u0001\u0000\u0000\u0000\u00a0\u0324\u0001"+
+ "\u0000\u0000\u0000\u00a2\u0328\u0001\u0000\u0000\u0000\u00a4\u032a\u0001"+
+ "\u0000\u0000\u0000\u00a6\u032c\u0001\u0000\u0000\u0000\u00a8\u0331\u0001"+
+ "\u0000\u0000\u0000\u00aa\u0333\u0001\u0000\u0000\u0000\u00ac\u033c\u0001"+
+ "\u0000\u0000\u0000\u00ae\u00af\u0003\u0002\u0001\u0000\u00af\u00b0\u0005"+
+ "\u0000\u0000\u0001\u00b0\u0001\u0001\u0000\u0000\u0000\u00b1\u00b2\u0006"+
+ "\u0001\uffff\uffff\u0000\u00b2\u00b3\u0003\u0004\u0002\u0000\u00b3\u00b9"+
+ "\u0001\u0000\u0000\u0000\u00b4\u00b5\n\u0001\u0000\u0000\u00b5\u00b6\u0005"+
+ "4\u0000\u0000\u00b6\u00b8\u0003\u0006\u0003\u0000\u00b7\u00b4\u0001\u0000"+
+ "\u0000\u0000\u00b8\u00bb\u0001\u0000\u0000\u0000\u00b9\u00b7\u0001\u0000"+
+ "\u0000\u0000\u00b9\u00ba\u0001\u0000\u0000\u0000\u00ba\u0003\u0001\u0000"+
+ "\u0000\u0000\u00bb\u00b9\u0001\u0000\u0000\u0000\u00bc\u00c4\u0003\u0016"+
+ "\u000b\u0000\u00bd\u00c4\u0003\f\u0006\u0000\u00be\u00c4\u0003\\.\u0000"+
+ "\u00bf\u00c0\u0004\u0002\u0001\u0000\u00c0\u00c4\u0003\u0018\f\u0000\u00c1"+
+ "\u00c2\u0004\u0002\u0002\u0000\u00c2\u00c4\u0003X,\u0000\u00c3\u00bc\u0001"+
+ "\u0000\u0000\u0000\u00c3\u00bd\u0001\u0000\u0000\u0000\u00c3\u00be\u0001"+
+ "\u0000\u0000\u0000\u00c3\u00bf\u0001\u0000\u0000\u0000\u00c3\u00c1\u0001"+
+ "\u0000\u0000\u0000\u00c4\u0005\u0001\u0000\u0000\u0000\u00c5\u00e1\u0003"+
+ "(\u0014\u0000\u00c6\u00e1\u0003\b\u0004\u0000\u00c7\u00e1\u0003F#\u0000"+
+ "\u00c8\u00e1\u0003@ \u0000\u00c9\u00e1\u0003*\u0015\u0000\u00ca\u00e1"+
+ "\u0003B!\u0000\u00cb\u00e1\u0003H$\u0000\u00cc\u00e1\u0003J%\u0000\u00cd"+
+ "\u00e1\u0003N\'\u0000\u00ce\u00e1\u0003P(\u0000\u00cf\u00e1\u0003^/\u0000"+
+ "\u00d0\u00e1\u0003R)\u0000\u00d1\u00e1\u0003\u00a6S\u0000\u00d2\u00e1"+
+ "\u0003f3\u0000\u00d3\u00e1\u0003r9\u0000\u00d4\u00e1\u0003d2\u0000\u00d5"+
+ "\u00e1\u0003h4\u0000\u00d6\u00d7\u0004\u0003\u0003\u0000\u00d7\u00e1\u0003"+
+ "v;\u0000\u00d8\u00d9\u0004\u0003\u0004\u0000\u00d9\u00e1\u0003t:\u0000"+
+ "\u00da\u00db\u0004\u0003\u0005\u0000\u00db\u00e1\u0003x<\u0000\u00dc\u00dd"+
+ "\u0004\u0003\u0006\u0000\u00dd\u00e1\u0003\u0082A\u0000\u00de\u00df\u0004"+
+ "\u0003\u0007\u0000\u00df\u00e1\u0003z=\u0000\u00e0\u00c5\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00c6\u0001\u0000\u0000\u0000\u00e0\u00c7\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00c8\u0001\u0000\u0000\u0000\u00e0\u00c9\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00ca\u0001\u0000\u0000\u0000\u00e0\u00cb\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00cc\u0001\u0000\u0000\u0000\u00e0\u00cd\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00ce\u0001\u0000\u0000\u0000\u00e0\u00cf\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00d0\u0001\u0000\u0000\u0000\u00e0\u00d1\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00d2\u0001\u0000\u0000\u0000\u00e0\u00d3\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00d4\u0001\u0000\u0000\u0000\u00e0\u00d5\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00d6\u0001\u0000\u0000\u0000\u00e0\u00d8\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00da\u0001\u0000\u0000\u0000\u00e0\u00dc\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00de\u0001\u0000\u0000\u0000\u00e1\u0007\u0001\u0000\u0000"+
+ "\u0000\u00e2\u00e3\u0005\u0010\u0000\u0000\u00e3\u00e4\u0003\u0084B\u0000"+
+ "\u00e4\t\u0001\u0000\u0000\u0000\u00e5\u00e6\u00036\u001b\u0000\u00e6"+
+ "\u000b\u0001\u0000\u0000\u0000\u00e7\u00e8\u0005\f\u0000\u0000\u00e8\u00e9"+
+ "\u0003\u000e\u0007\u0000\u00e9\r\u0001\u0000\u0000\u0000\u00ea\u00ef\u0003"+
+ "\u0010\b\u0000\u00eb\u00ec\u0005>\u0000\u0000\u00ec\u00ee\u0003\u0010"+
+ "\b\u0000\u00ed\u00eb\u0001\u0000\u0000\u0000\u00ee\u00f1\u0001\u0000\u0000"+
+ "\u0000\u00ef\u00ed\u0001\u0000\u0000\u0000\u00ef\u00f0\u0001\u0000\u0000"+
+ "\u0000\u00f0\u000f\u0001\u0000\u0000\u0000\u00f1\u00ef\u0001\u0000\u0000"+
+ "\u0000\u00f2\u00f3\u00030\u0018\u0000\u00f3\u00f4\u0005:\u0000\u0000\u00f4"+
+ "\u00f6\u0001\u0000\u0000\u0000\u00f5\u00f2\u0001\u0000\u0000\u0000\u00f5"+
+ "\u00f6\u0001\u0000\u0000\u0000\u00f6\u00f7\u0001\u0000\u0000\u0000\u00f7"+
+ "\u00f8\u0003\u0084B\u0000\u00f8\u0011\u0001\u0000\u0000\u0000\u00f9\u00fe"+
+ "\u0003\u0014\n\u0000\u00fa\u00fb\u0005>\u0000\u0000\u00fb\u00fd\u0003"+
+ "\u0014\n\u0000\u00fc\u00fa\u0001\u0000\u0000\u0000\u00fd\u0100\u0001\u0000"+
+ "\u0000\u0000\u00fe\u00fc\u0001\u0000\u0000\u0000\u00fe\u00ff\u0001\u0000"+
+ "\u0000\u0000\u00ff\u0013\u0001\u0000\u0000\u0000\u0100\u00fe\u0001\u0000"+
+ "\u0000\u0000\u0101\u0104\u00030\u0018\u0000\u0102\u0103\u0005:\u0000\u0000"+
+ "\u0103\u0105\u0003\u0084B\u0000\u0104\u0102\u0001\u0000\u0000\u0000\u0104"+
+ "\u0105\u0001\u0000\u0000\u0000\u0105\u0015\u0001\u0000\u0000\u0000\u0106"+
+ "\u0107\u0005\u0013\u0000\u0000\u0107\u0108\u0003\u001a\r\u0000\u0108\u0017"+
+ "\u0001\u0000\u0000\u0000\u0109\u010a\u0005\u0014\u0000\u0000\u010a\u010b"+
+ "\u0003\u001a\r\u0000\u010b\u0019\u0001\u0000\u0000\u0000\u010c\u0111\u0003"+
+ "\u001c\u000e\u0000\u010d\u010e\u0005>\u0000\u0000\u010e\u0110\u0003\u001c"+
+ "\u000e\u0000\u010f\u010d\u0001\u0000\u0000\u0000\u0110\u0113\u0001\u0000"+
+ "\u0000\u0000\u0111\u010f\u0001\u0000\u0000\u0000\u0111\u0112\u0001\u0000"+
+ "\u0000\u0000\u0112\u0115\u0001\u0000\u0000\u0000\u0113\u0111\u0001\u0000"+
+ "\u0000\u0000\u0114\u0116\u0003&\u0013\u0000\u0115\u0114\u0001\u0000\u0000"+
+ "\u0000\u0115\u0116\u0001\u0000\u0000\u0000\u0116\u001b\u0001\u0000\u0000"+
+ "\u0000\u0117\u0118\u0003\u001e\u000f\u0000\u0118\u0119\u0005=\u0000\u0000"+
+ "\u0119\u011a\u0003\"\u0011\u0000\u011a\u0121\u0001\u0000\u0000\u0000\u011b"+
+ "\u011c\u0003\"\u0011\u0000\u011c\u011d\u0005<\u0000\u0000\u011d\u011e"+
+ "\u0003 \u0010\u0000\u011e\u0121\u0001\u0000\u0000\u0000\u011f\u0121\u0003"+
+ "$\u0012\u0000\u0120\u0117\u0001\u0000\u0000\u0000\u0120\u011b\u0001\u0000"+
+ "\u0000\u0000\u0120\u011f\u0001\u0000\u0000\u0000\u0121\u001d\u0001\u0000"+
+ "\u0000\u0000\u0122\u0123\u0005k\u0000\u0000\u0123\u001f\u0001\u0000\u0000"+
+ "\u0000\u0124\u0125\u0005k\u0000\u0000\u0125!\u0001\u0000\u0000\u0000\u0126"+
+ "\u0127\u0005k\u0000\u0000\u0127#\u0001\u0000\u0000\u0000\u0128\u0129\u0007"+
+ "\u0000\u0000\u0000\u0129%\u0001\u0000\u0000\u0000\u012a\u012b\u0005j\u0000"+
+ "\u0000\u012b\u0130\u0005k\u0000\u0000\u012c\u012d\u0005>\u0000\u0000\u012d"+
+ "\u012f\u0005k\u0000\u0000\u012e\u012c\u0001\u0000\u0000\u0000\u012f\u0132"+
+ "\u0001\u0000\u0000\u0000\u0130\u012e\u0001\u0000\u0000\u0000\u0130\u0131"+
+ "\u0001\u0000\u0000\u0000\u0131\'\u0001\u0000\u0000\u0000\u0132\u0130\u0001"+
+ "\u0000\u0000\u0000\u0133\u0134\u0005\t\u0000\u0000\u0134\u0135\u0003\u000e"+
+ "\u0007\u0000\u0135)\u0001\u0000\u0000\u0000\u0136\u0138\u0005\u000f\u0000"+
+ "\u0000\u0137\u0139\u0003,\u0016\u0000\u0138\u0137\u0001\u0000\u0000\u0000"+
+ "\u0138\u0139\u0001\u0000\u0000\u0000\u0139\u013c\u0001\u0000\u0000\u0000"+
+ "\u013a\u013b\u0005;\u0000\u0000\u013b\u013d\u0003\u000e\u0007\u0000\u013c"+
+ "\u013a\u0001\u0000\u0000\u0000\u013c\u013d\u0001\u0000\u0000\u0000\u013d"+
+ "+\u0001\u0000\u0000\u0000\u013e\u0143\u0003.\u0017\u0000\u013f\u0140\u0005"+
+ ">\u0000\u0000\u0140\u0142\u0003.\u0017\u0000\u0141\u013f\u0001\u0000\u0000"+
+ "\u0000\u0142\u0145\u0001\u0000\u0000\u0000\u0143\u0141\u0001\u0000\u0000"+
+ "\u0000\u0143\u0144\u0001\u0000\u0000\u0000\u0144-\u0001\u0000\u0000\u0000"+
+ "\u0145\u0143\u0001\u0000\u0000\u0000\u0146\u0149\u0003\u0010\b\u0000\u0147"+
+ "\u0148\u0005\u0010\u0000\u0000\u0148\u014a\u0003\u0084B\u0000\u0149\u0147"+
+ "\u0001\u0000\u0000\u0000\u0149\u014a\u0001\u0000\u0000\u0000\u014a/\u0001"+
+ "\u0000\u0000\u0000\u014b\u0150\u0003>\u001f\u0000\u014c\u014d\u0005@\u0000"+
+ "\u0000\u014d\u014f\u0003>\u001f\u0000\u014e\u014c\u0001\u0000\u0000\u0000"+
+ "\u014f\u0152\u0001\u0000\u0000\u0000\u0150\u014e\u0001\u0000\u0000\u0000"+
+ "\u0150\u0151\u0001\u0000\u0000\u0000\u01511\u0001\u0000\u0000\u0000\u0152"+
+ "\u0150\u0001\u0000\u0000\u0000\u0153\u0158\u00038\u001c\u0000\u0154\u0155"+
+ "\u0005@\u0000\u0000\u0155\u0157\u00038\u001c\u0000\u0156\u0154\u0001\u0000"+
+ "\u0000\u0000\u0157\u015a\u0001\u0000\u0000\u0000\u0158\u0156\u0001\u0000"+
+ "\u0000\u0000\u0158\u0159\u0001\u0000\u0000\u0000\u01593\u0001\u0000\u0000"+
+ "\u0000\u015a\u0158\u0001\u0000\u0000\u0000\u015b\u0160\u00032\u0019\u0000"+
+ "\u015c\u015d\u0005>\u0000\u0000\u015d\u015f\u00032\u0019\u0000\u015e\u015c"+
+ "\u0001\u0000\u0000\u0000\u015f\u0162\u0001\u0000\u0000\u0000\u0160\u015e"+
+ "\u0001\u0000\u0000\u0000\u0160\u0161\u0001\u0000\u0000\u0000\u01615\u0001"+
+ "\u0000\u0000\u0000\u0162\u0160\u0001\u0000\u0000\u0000\u0163\u0164\u0007"+
+ "\u0001\u0000\u0000\u01647\u0001\u0000\u0000\u0000\u0165\u0169\u0005\u0080"+
+ "\u0000\u0000\u0166\u0169\u0003:\u001d\u0000\u0167\u0169\u0003<\u001e\u0000"+
+ "\u0168\u0165\u0001\u0000\u0000\u0000\u0168\u0166\u0001\u0000\u0000\u0000"+
+ "\u0168\u0167\u0001\u0000\u0000\u0000\u01699\u0001\u0000\u0000\u0000\u016a"+
+ "\u016d\u0005L\u0000\u0000\u016b\u016d\u0005_\u0000\u0000\u016c\u016a\u0001"+
+ "\u0000\u0000\u0000\u016c\u016b\u0001\u0000\u0000\u0000\u016d;\u0001\u0000"+
+ "\u0000\u0000\u016e\u0171\u0005^\u0000\u0000\u016f\u0171\u0005`\u0000\u0000"+
+ "\u0170\u016e\u0001\u0000\u0000\u0000\u0170\u016f\u0001\u0000\u0000\u0000"+
+ "\u0171=\u0001\u0000\u0000\u0000\u0172\u0176\u00036\u001b\u0000\u0173\u0176"+
+ "\u0003:\u001d\u0000\u0174\u0176\u0003<\u001e\u0000\u0175\u0172\u0001\u0000"+
+ "\u0000\u0000\u0175\u0173\u0001\u0000\u0000\u0000\u0175\u0174\u0001\u0000"+
+ "\u0000\u0000\u0176?\u0001\u0000\u0000\u0000\u0177\u0178\u0005\u000b\u0000"+
+ "\u0000\u0178\u0179\u0003\u0098L\u0000\u0179A\u0001\u0000\u0000\u0000\u017a"+
+ "\u017b\u0005\u000e\u0000\u0000\u017b\u0180\u0003D\"\u0000\u017c\u017d"+
+ "\u0005>\u0000\u0000\u017d\u017f\u0003D\"\u0000\u017e\u017c\u0001\u0000"+
+ "\u0000\u0000\u017f\u0182\u0001\u0000\u0000\u0000\u0180\u017e\u0001\u0000"+
+ "\u0000\u0000\u0180\u0181\u0001\u0000\u0000\u0000\u0181C\u0001\u0000\u0000"+
+ "\u0000\u0182\u0180\u0001\u0000\u0000\u0000\u0183\u0185\u0003\u0084B\u0000"+
+ "\u0184\u0186\u0007\u0002\u0000\u0000\u0185\u0184\u0001\u0000\u0000\u0000"+
+ "\u0185\u0186\u0001\u0000\u0000\u0000\u0186\u0189\u0001\u0000\u0000\u0000"+
+ "\u0187\u0188\u0005I\u0000\u0000\u0188\u018a\u0007\u0003\u0000\u0000\u0189"+
+ "\u0187\u0001\u0000\u0000\u0000\u0189\u018a\u0001\u0000\u0000\u0000\u018a"+
+ "E\u0001\u0000\u0000\u0000\u018b\u018c\u0005\u001e\u0000\u0000\u018c\u018d"+
+ "\u00034\u001a\u0000\u018dG\u0001\u0000\u0000\u0000\u018e\u018f\u0005\u001d"+
+ "\u0000\u0000\u018f\u0190\u00034\u001a\u0000\u0190I\u0001\u0000\u0000\u0000"+
+ "\u0191\u0192\u0005 \u0000\u0000\u0192\u0197\u0003L&\u0000\u0193\u0194"+
+ "\u0005>\u0000\u0000\u0194\u0196\u0003L&\u0000\u0195\u0193\u0001\u0000"+
+ "\u0000\u0000\u0196\u0199\u0001\u0000\u0000\u0000\u0197\u0195\u0001\u0000"+
+ "\u0000\u0000\u0197\u0198\u0001\u0000\u0000\u0000\u0198K\u0001\u0000\u0000"+
+ "\u0000\u0199\u0197\u0001\u0000\u0000\u0000\u019a\u019b\u00032\u0019\u0000"+
+ "\u019b\u019c\u0005\u0084\u0000\u0000\u019c\u019d\u00032\u0019\u0000\u019d"+
+ "\u01a3\u0001\u0000\u0000\u0000\u019e\u019f\u00032\u0019\u0000\u019f\u01a0"+
+ "\u0005:\u0000\u0000\u01a0\u01a1\u00032\u0019\u0000\u01a1\u01a3\u0001\u0000"+
+ "\u0000\u0000\u01a2\u019a\u0001\u0000\u0000\u0000\u01a2\u019e\u0001\u0000"+
+ "\u0000\u0000\u01a3M\u0001\u0000\u0000\u0000\u01a4\u01a5\u0005\b\u0000"+
+ "\u0000\u01a5\u01a6\u0003\u008eG\u0000\u01a6\u01a8\u0003\u00a2Q\u0000\u01a7"+
+ "\u01a9\u0003T*\u0000\u01a8\u01a7\u0001\u0000\u0000\u0000\u01a8\u01a9\u0001"+
+ "\u0000\u0000\u0000\u01a9O\u0001\u0000\u0000\u0000\u01aa\u01ab\u0005\n"+
+ "\u0000\u0000\u01ab\u01ac\u0003\u008eG\u0000\u01ac\u01ad\u0003\u00a2Q\u0000"+
+ "\u01adQ\u0001\u0000\u0000\u0000\u01ae\u01af\u0005\u001c\u0000\u0000\u01af"+
+ "\u01b0\u00030\u0018\u0000\u01b0S\u0001\u0000\u0000\u0000\u01b1\u01b6\u0003"+
+ "V+\u0000\u01b2\u01b3\u0005>\u0000\u0000\u01b3\u01b5\u0003V+\u0000\u01b4"+
+ "\u01b2\u0001\u0000\u0000\u0000\u01b5\u01b8\u0001\u0000\u0000\u0000\u01b6"+
+ "\u01b4\u0001\u0000\u0000\u0000\u01b6\u01b7\u0001\u0000\u0000\u0000\u01b7"+
+ "U\u0001\u0000\u0000\u0000\u01b8\u01b6\u0001\u0000\u0000\u0000\u01b9\u01ba"+
+ "\u00036\u001b\u0000\u01ba\u01bb\u0005:\u0000\u0000\u01bb\u01bc\u0003\u0098"+
+ "L\u0000\u01bcW\u0001\u0000\u0000\u0000\u01bd\u01be\u0005\u0006\u0000\u0000"+
+ "\u01be\u01bf\u0003Z-\u0000\u01bfY\u0001\u0000\u0000\u0000\u01c0\u01c1"+
+ "\u0005c\u0000\u0000\u01c1\u01c2\u0003\u0002\u0001\u0000\u01c2\u01c3\u0005"+
+ "d\u0000\u0000\u01c3[\u0001\u0000\u0000\u0000\u01c4\u01c5\u0005!\u0000"+
+ "\u0000\u01c5\u01c6\u0005\u0088\u0000\u0000\u01c6]\u0001\u0000\u0000\u0000"+
+ "\u01c7\u01c8\u0005\u0005\u0000\u0000\u01c8\u01cb\u0003`0\u0000\u01c9\u01ca"+
+ "\u0005J\u0000\u0000\u01ca\u01cc\u00032\u0019\u0000\u01cb\u01c9\u0001\u0000"+
+ "\u0000\u0000\u01cb\u01cc\u0001\u0000\u0000\u0000\u01cc\u01d6\u0001\u0000"+
+ "\u0000\u0000\u01cd\u01ce\u0005O\u0000\u0000\u01ce\u01d3\u0003b1\u0000"+
+ "\u01cf\u01d0\u0005>\u0000\u0000\u01d0\u01d2\u0003b1\u0000\u01d1\u01cf"+
+ "\u0001\u0000\u0000\u0000\u01d2\u01d5\u0001\u0000\u0000\u0000\u01d3\u01d1"+
+ "\u0001\u0000\u0000\u0000\u01d3\u01d4\u0001\u0000\u0000\u0000\u01d4\u01d7"+
+ "\u0001\u0000\u0000\u0000\u01d5\u01d3\u0001\u0000\u0000\u0000\u01d6\u01cd"+
+ "\u0001\u0000\u0000\u0000\u01d6\u01d7\u0001\u0000\u0000\u0000\u01d7_\u0001"+
+ "\u0000\u0000\u0000\u01d8\u01d9\u0007\u0004\u0000\u0000\u01d9a\u0001\u0000"+
+ "\u0000\u0000\u01da\u01db\u00032\u0019\u0000\u01db\u01dc\u0005:\u0000\u0000"+
+ "\u01dc\u01de\u0001\u0000\u0000\u0000\u01dd\u01da\u0001\u0000\u0000\u0000"+
+ "\u01dd\u01de\u0001\u0000\u0000\u0000\u01de\u01df\u0001\u0000\u0000\u0000"+
+ "\u01df\u01e0\u00032\u0019\u0000\u01e0c\u0001\u0000\u0000\u0000\u01e1\u01e2"+
+ "\u0005\r\u0000\u0000\u01e2\u01e3\u0003\u0098L\u0000\u01e3e\u0001\u0000"+
+ "\u0000\u0000\u01e4\u01e5\u0005\u0004\u0000\u0000\u01e5\u01e8\u00030\u0018"+
+ "\u0000\u01e6\u01e7\u0005J\u0000\u0000\u01e7\u01e9\u00030\u0018\u0000\u01e8"+
+ "\u01e6\u0001\u0000\u0000\u0000\u01e8\u01e9\u0001\u0000\u0000\u0000\u01e9"+
+ "\u01ef\u0001\u0000\u0000\u0000\u01ea\u01eb\u0005\u0084\u0000\u0000\u01eb"+
+ "\u01ec\u00030\u0018\u0000\u01ec\u01ed\u0005>\u0000\u0000\u01ed\u01ee\u0003"+
+ "0\u0018\u0000\u01ee\u01f0\u0001\u0000\u0000\u0000\u01ef\u01ea\u0001\u0000"+
+ "\u0000\u0000\u01ef\u01f0\u0001\u0000\u0000\u0000\u01f0g\u0001\u0000\u0000"+
+ "\u0000\u01f1\u01f2\u0005\u0015\u0000\u0000\u01f2\u01f3\u0003j5\u0000\u01f3"+
+ "i\u0001\u0000\u0000\u0000\u01f4\u01f6\u0003l6\u0000\u01f5\u01f4\u0001"+
+ "\u0000\u0000\u0000\u01f6\u01f7\u0001\u0000\u0000\u0000\u01f7\u01f5\u0001"+
+ "\u0000\u0000\u0000\u01f7\u01f8\u0001\u0000\u0000\u0000\u01f8k\u0001\u0000"+
+ "\u0000\u0000\u01f9\u01fa\u0005c\u0000\u0000\u01fa\u01fb\u0003n7\u0000"+
+ "\u01fb\u01fc\u0005d\u0000\u0000\u01fcm\u0001\u0000\u0000\u0000\u01fd\u01fe"+
+ "\u00067\uffff\uffff\u0000\u01fe\u01ff\u0003p8\u0000\u01ff\u0205\u0001"+
+ "\u0000\u0000\u0000\u0200\u0201\n\u0001\u0000\u0000\u0201\u0202\u00054"+
+ "\u0000\u0000\u0202\u0204\u0003p8\u0000\u0203\u0200\u0001\u0000\u0000\u0000"+
+ "\u0204\u0207\u0001\u0000\u0000\u0000\u0205\u0203\u0001\u0000\u0000\u0000"+
+ "\u0205\u0206\u0001\u0000\u0000\u0000\u0206o\u0001\u0000\u0000\u0000\u0207"+
+ "\u0205\u0001\u0000\u0000\u0000\u0208\u0209\u0003\u0006\u0003\u0000\u0209"+
+ "q\u0001\u0000\u0000\u0000\u020a\u020e\u0005\u0007\u0000\u0000\u020b\u020c"+
+ "\u00030\u0018\u0000\u020c\u020d\u0005:\u0000\u0000\u020d\u020f\u0001\u0000"+
+ "\u0000\u0000\u020e\u020b\u0001\u0000\u0000\u0000\u020e\u020f\u0001\u0000"+
+ "\u0000\u0000\u020f\u0210\u0001\u0000\u0000\u0000\u0210\u0211\u0003\u008e"+
+ "G\u0000\u0211\u0212\u0005O\u0000\u0000\u0212\u0213\u0003>\u001f\u0000"+
+ "\u0213s\u0001\u0000\u0000\u0000\u0214\u0215\u0005\u001b\u0000\u0000\u0215"+
+ "\u0216\u0003\u001c\u000e\u0000\u0216\u0217\u0005J\u0000\u0000\u0217\u0218"+
+ "\u00034\u001a\u0000\u0218u\u0001\u0000\u0000\u0000\u0219\u021a\u0005\u0011"+
+ "\u0000\u0000\u021a\u021d\u0003,\u0016\u0000\u021b\u021c\u0005;\u0000\u0000"+
+ "\u021c\u021e\u0003\u000e\u0007\u0000\u021d\u021b\u0001\u0000\u0000\u0000"+
+ "\u021d\u021e\u0001\u0000\u0000\u0000\u021ew\u0001\u0000\u0000\u0000\u021f"+
+ "\u0220\u0005\u001f\u0000\u0000\u0220\u0221\u00034\u001a\u0000\u0221y\u0001"+
+ "\u0000\u0000\u0000\u0222\u0223\u0005\u0016\u0000\u0000\u0223{\u0001\u0000"+
+ "\u0000\u0000\u0224\u0229\u0003~?\u0000\u0225\u0226\u0005>\u0000\u0000"+
+ "\u0226\u0228\u0003~?\u0000\u0227\u0225\u0001\u0000\u0000\u0000\u0228\u022b"+
+ "\u0001\u0000\u0000\u0000\u0229\u0227\u0001\u0000\u0000\u0000\u0229\u022a"+
+ "\u0001\u0000\u0000\u0000\u022a}\u0001\u0000\u0000\u0000\u022b\u0229\u0001"+
+ "\u0000\u0000\u0000\u022c\u022d\u00036\u001b\u0000\u022d\u022e\u0005:\u0000"+
+ "\u0000\u022e\u022f\u0003\u0080@\u0000\u022f\u007f\u0001\u0000\u0000\u0000"+
+ "\u0230\u0233\u0003\u0098L\u0000\u0231\u0233\u00036\u001b\u0000\u0232\u0230"+
+ "\u0001\u0000\u0000\u0000\u0232\u0231\u0001\u0000\u0000\u0000\u0233\u0081"+
+ "\u0001\u0000\u0000\u0000\u0234\u0235\u0005\u0012\u0000\u0000\u0235\u0236"+
+ "\u0003\u0098L\u0000\u0236\u0237\u0005J\u0000\u0000\u0237\u023a\u0003\u0012"+
+ "\t\u0000\u0238\u0239\u0005O\u0000\u0000\u0239\u023b\u0003|>\u0000\u023a"+
+ "\u0238\u0001\u0000\u0000\u0000\u023a\u023b\u0001\u0000\u0000\u0000\u023b"+
+ "\u0083\u0001\u0000\u0000\u0000\u023c\u023d\u0006B\uffff\uffff\u0000\u023d"+
+ "\u023e\u0005G\u0000\u0000\u023e\u025a\u0003\u0084B\b\u023f\u025a\u0003"+
+ "\u008aE\u0000\u0240\u025a\u0003\u0086C\u0000\u0241\u0243\u0003\u008aE"+
+ "\u0000\u0242\u0244\u0005G\u0000\u0000\u0243\u0242\u0001\u0000\u0000\u0000"+
+ "\u0243\u0244\u0001\u0000\u0000\u0000\u0244\u0245\u0001\u0000\u0000\u0000"+
+ "\u0245\u0246\u0005C\u0000\u0000\u0246\u0247\u0005c\u0000\u0000\u0247\u024c"+
+ "\u0003\u008aE\u0000\u0248\u0249\u0005>\u0000\u0000\u0249\u024b\u0003\u008a"+
+ "E\u0000\u024a\u0248\u0001\u0000\u0000\u0000\u024b\u024e\u0001\u0000\u0000"+
+ "\u0000\u024c\u024a\u0001\u0000\u0000\u0000\u024c\u024d\u0001\u0000\u0000"+
+ "\u0000\u024d\u024f\u0001\u0000\u0000\u0000\u024e\u024c\u0001\u0000\u0000"+
+ "\u0000\u024f\u0250\u0005d\u0000\u0000\u0250\u025a\u0001\u0000\u0000\u0000"+
+ "\u0251\u0252\u0003\u008aE\u0000\u0252\u0254\u0005D\u0000\u0000\u0253\u0255"+
+ "\u0005G\u0000\u0000\u0254\u0253\u0001\u0000\u0000\u0000\u0254\u0255\u0001"+
+ "\u0000\u0000\u0000\u0255\u0256\u0001\u0000\u0000\u0000\u0256\u0257\u0005"+
+ "H\u0000\u0000\u0257\u025a\u0001\u0000\u0000\u0000\u0258\u025a\u0003\u0088"+
+ "D\u0000\u0259\u023c\u0001\u0000\u0000\u0000\u0259\u023f\u0001\u0000\u0000"+
+ "\u0000\u0259\u0240\u0001\u0000\u0000\u0000\u0259\u0241\u0001\u0000\u0000"+
+ "\u0000\u0259\u0251\u0001\u0000\u0000\u0000\u0259\u0258\u0001\u0000\u0000"+
+ "\u0000\u025a\u0263\u0001\u0000\u0000\u0000\u025b\u025c\n\u0005\u0000\u0000"+
+ "\u025c\u025d\u00058\u0000\u0000\u025d\u0262\u0003\u0084B\u0006\u025e\u025f"+
+ "\n\u0004\u0000\u0000\u025f\u0260\u0005K\u0000\u0000\u0260\u0262\u0003"+
+ "\u0084B\u0005\u0261\u025b\u0001\u0000\u0000\u0000\u0261\u025e\u0001\u0000"+
+ "\u0000\u0000\u0262\u0265\u0001\u0000\u0000\u0000\u0263\u0261\u0001\u0000"+
+ "\u0000\u0000\u0263\u0264\u0001\u0000\u0000\u0000\u0264\u0085\u0001\u0000"+
+ "\u0000\u0000\u0265\u0263\u0001\u0000\u0000\u0000\u0266\u0268\u0003\u008a"+
+ "E\u0000\u0267\u0269\u0005G\u0000\u0000\u0268\u0267\u0001\u0000\u0000\u0000"+
+ "\u0268\u0269\u0001\u0000\u0000\u0000\u0269\u026a\u0001\u0000\u0000\u0000"+
+ "\u026a\u026b\u0005F\u0000\u0000\u026b\u026c\u0003\u00a2Q\u0000\u026c\u0295"+
+ "\u0001\u0000\u0000\u0000\u026d\u026f\u0003\u008aE\u0000\u026e\u0270\u0005"+
+ "G\u0000\u0000\u026f\u026e\u0001\u0000\u0000\u0000\u026f\u0270\u0001\u0000"+
+ "\u0000\u0000\u0270\u0271\u0001\u0000\u0000\u0000\u0271\u0272\u0005M\u0000"+
+ "\u0000\u0272\u0273\u0003\u00a2Q\u0000\u0273\u0295\u0001\u0000\u0000\u0000"+
+ "\u0274\u0276\u0003\u008aE\u0000\u0275\u0277\u0005G\u0000\u0000\u0276\u0275"+
+ "\u0001\u0000\u0000\u0000\u0276\u0277\u0001\u0000\u0000\u0000\u0277\u0278"+
+ "\u0001\u0000\u0000\u0000\u0278\u0279\u0005F\u0000\u0000\u0279\u027a\u0005"+
+ "c\u0000\u0000\u027a\u027f\u0003\u00a2Q\u0000\u027b\u027c\u0005>\u0000"+
+ "\u0000\u027c\u027e\u0003\u00a2Q\u0000\u027d\u027b\u0001\u0000\u0000\u0000"+
+ "\u027e\u0281\u0001\u0000\u0000\u0000\u027f\u027d\u0001\u0000\u0000\u0000"+
+ "\u027f\u0280\u0001\u0000\u0000\u0000\u0280\u0282\u0001\u0000\u0000\u0000"+
+ "\u0281\u027f\u0001\u0000\u0000\u0000\u0282\u0283\u0005d\u0000\u0000\u0283"+
+ "\u0295\u0001\u0000\u0000\u0000\u0284\u0286\u0003\u008aE\u0000\u0285\u0287"+
+ "\u0005G\u0000\u0000\u0286\u0285\u0001\u0000\u0000\u0000\u0286\u0287\u0001"+
+ "\u0000\u0000\u0000\u0287\u0288\u0001\u0000\u0000\u0000\u0288\u0289\u0005"+
+ "M\u0000\u0000\u0289\u028a\u0005c\u0000\u0000\u028a\u028f\u0003\u00a2Q"+
+ "\u0000\u028b\u028c\u0005>\u0000\u0000\u028c\u028e\u0003\u00a2Q\u0000\u028d"+
+ "\u028b\u0001\u0000\u0000\u0000\u028e\u0291\u0001\u0000\u0000\u0000\u028f"+
+ "\u028d\u0001\u0000\u0000\u0000\u028f\u0290\u0001\u0000\u0000\u0000\u0290"+
+ "\u0292\u0001\u0000\u0000\u0000\u0291\u028f\u0001\u0000\u0000\u0000\u0292"+
+ "\u0293\u0005d\u0000\u0000\u0293\u0295\u0001\u0000\u0000\u0000\u0294\u0266"+
+ "\u0001\u0000\u0000\u0000\u0294\u026d\u0001\u0000\u0000\u0000\u0294\u0274"+
+ "\u0001\u0000\u0000\u0000\u0294\u0284\u0001\u0000\u0000\u0000\u0295\u0087"+
+ "\u0001\u0000\u0000\u0000\u0296\u0299\u00030\u0018\u0000\u0297\u0298\u0005"+
+ "<\u0000\u0000\u0298\u029a\u0003\n\u0005\u0000\u0299\u0297\u0001\u0000"+
+ "\u0000\u0000\u0299\u029a\u0001\u0000\u0000\u0000\u029a\u029b\u0001\u0000"+
+ "\u0000\u0000\u029b\u029c\u0005=\u0000\u0000\u029c\u029d\u0003\u0098L\u0000"+
+ "\u029d\u0089\u0001\u0000\u0000\u0000\u029e\u02a4\u0003\u008cF\u0000\u029f"+
+ "\u02a0\u0003\u008cF\u0000\u02a0\u02a1\u0003\u00a4R\u0000\u02a1\u02a2\u0003"+
+ "\u008cF\u0000\u02a2\u02a4\u0001\u0000\u0000\u0000\u02a3\u029e\u0001\u0000"+
+ "\u0000\u0000\u02a3\u029f\u0001\u0000\u0000\u0000\u02a4\u008b\u0001\u0000"+
+ "\u0000\u0000\u02a5\u02a6\u0006F\uffff\uffff\u0000\u02a6\u02aa\u0003\u008e"+
+ "G\u0000\u02a7\u02a8\u0007\u0005\u0000\u0000\u02a8\u02aa\u0003\u008cF\u0003"+
+ "\u02a9\u02a5\u0001\u0000\u0000\u0000\u02a9\u02a7\u0001\u0000\u0000\u0000"+
+ "\u02aa\u02b3\u0001\u0000\u0000\u0000\u02ab\u02ac\n\u0002\u0000\u0000\u02ac"+
+ "\u02ad\u0007\u0006\u0000\u0000\u02ad\u02b2\u0003\u008cF\u0003\u02ae\u02af"+
+ "\n\u0001\u0000\u0000\u02af\u02b0\u0007\u0005\u0000\u0000\u02b0\u02b2\u0003"+
+ "\u008cF\u0002\u02b1\u02ab\u0001\u0000\u0000\u0000\u02b1\u02ae\u0001\u0000"+
+ "\u0000\u0000\u02b2\u02b5\u0001\u0000\u0000\u0000\u02b3\u02b1\u0001\u0000"+
+ "\u0000\u0000\u02b3\u02b4\u0001\u0000\u0000\u0000\u02b4\u008d\u0001\u0000"+
+ "\u0000\u0000\u02b5\u02b3\u0001\u0000\u0000\u0000\u02b6\u02b7\u0006G\uffff"+
+ "\uffff\u0000\u02b7\u02bf\u0003\u0098L\u0000\u02b8\u02bf\u00030\u0018\u0000"+
+ "\u02b9\u02bf\u0003\u0090H\u0000\u02ba\u02bb\u0005c\u0000\u0000\u02bb\u02bc"+
+ "\u0003\u0084B\u0000\u02bc\u02bd\u0005d\u0000\u0000\u02bd\u02bf\u0001\u0000"+
+ "\u0000\u0000\u02be\u02b6\u0001\u0000\u0000\u0000\u02be\u02b8\u0001\u0000"+
+ "\u0000\u0000\u02be\u02b9\u0001\u0000\u0000\u0000\u02be\u02ba\u0001\u0000"+
+ "\u0000\u0000\u02bf\u02c5\u0001\u0000\u0000\u0000\u02c0\u02c1\n\u0001\u0000"+
+ "\u0000\u02c1\u02c2\u0005<\u0000\u0000\u02c2\u02c4\u0003\n\u0005\u0000"+
+ "\u02c3\u02c0\u0001\u0000\u0000\u0000\u02c4\u02c7\u0001\u0000\u0000\u0000"+
+ "\u02c5\u02c3\u0001\u0000\u0000\u0000\u02c5\u02c6\u0001\u0000\u0000\u0000"+
+ "\u02c6\u008f\u0001\u0000\u0000\u0000\u02c7\u02c5\u0001\u0000\u0000\u0000"+
+ "\u02c8\u02c9\u0003\u0092I\u0000\u02c9\u02d7\u0005c\u0000\u0000\u02ca\u02d8"+
+ "\u0005Y\u0000\u0000\u02cb\u02d0\u0003\u0084B\u0000\u02cc\u02cd\u0005>"+
+ "\u0000\u0000\u02cd\u02cf\u0003\u0084B\u0000\u02ce\u02cc\u0001\u0000\u0000"+
+ "\u0000\u02cf\u02d2\u0001\u0000\u0000\u0000\u02d0\u02ce\u0001\u0000\u0000"+
+ "\u0000\u02d0\u02d1\u0001\u0000\u0000\u0000\u02d1\u02d5\u0001\u0000\u0000"+
+ "\u0000\u02d2\u02d0\u0001\u0000\u0000\u0000\u02d3\u02d4\u0005>\u0000\u0000"+
+ "\u02d4\u02d6\u0003\u0094J\u0000\u02d5\u02d3\u0001\u0000\u0000\u0000\u02d5"+
+ "\u02d6\u0001\u0000\u0000\u0000\u02d6\u02d8\u0001\u0000\u0000\u0000\u02d7"+
+ "\u02ca\u0001\u0000\u0000\u0000\u02d7\u02cb\u0001\u0000\u0000\u0000\u02d7"+
+ "\u02d8\u0001\u0000\u0000\u0000\u02d8\u02d9\u0001\u0000\u0000\u0000\u02d9"+
+ "\u02da\u0005d\u0000\u0000\u02da\u0091\u0001\u0000\u0000\u0000\u02db\u02dc"+
+ "\u0003>\u001f\u0000\u02dc\u0093\u0001\u0000\u0000\u0000\u02dd\u02de\u0005"+
+ "\\\u0000\u0000\u02de\u02e3\u0003\u0096K\u0000\u02df\u02e0\u0005>\u0000"+
+ "\u0000\u02e0\u02e2\u0003\u0096K\u0000\u02e1\u02df\u0001\u0000\u0000\u0000"+
+ "\u02e2\u02e5\u0001\u0000\u0000\u0000\u02e3\u02e1\u0001\u0000\u0000\u0000"+
+ "\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u02e6\u0001\u0000\u0000\u0000"+
+ "\u02e5\u02e3\u0001\u0000\u0000\u0000\u02e6\u02e7\u0005]\u0000\u0000\u02e7"+
+ "\u0095\u0001\u0000\u0000\u0000\u02e8\u02e9\u0003\u00a2Q\u0000\u02e9\u02ea"+
+ "\u0005=\u0000\u0000\u02ea\u02eb\u0003\u0098L\u0000\u02eb\u0097\u0001\u0000"+
+ "\u0000\u0000\u02ec\u0317\u0005H\u0000\u0000\u02ed\u02ee\u0003\u00a0P\u0000"+
+ "\u02ee\u02ef\u0005e\u0000\u0000\u02ef\u0317\u0001\u0000\u0000\u0000\u02f0"+
+ "\u0317\u0003\u009eO\u0000\u02f1\u0317\u0003\u00a0P\u0000\u02f2\u0317\u0003"+
+ "\u009aM\u0000\u02f3\u0317\u0003:\u001d\u0000\u02f4\u0317\u0003\u00a2Q"+
+ "\u0000\u02f5\u02f6\u0005a\u0000\u0000\u02f6\u02fb\u0003\u009cN\u0000\u02f7"+
+ "\u02f8\u0005>\u0000\u0000\u02f8\u02fa\u0003\u009cN\u0000\u02f9\u02f7\u0001"+
+ "\u0000\u0000\u0000\u02fa\u02fd\u0001\u0000\u0000\u0000\u02fb\u02f9\u0001"+
+ "\u0000\u0000\u0000\u02fb\u02fc\u0001\u0000\u0000\u0000\u02fc\u02fe\u0001"+
+ "\u0000\u0000\u0000\u02fd\u02fb\u0001\u0000\u0000\u0000\u02fe\u02ff\u0005"+
+ "b\u0000\u0000\u02ff\u0317\u0001\u0000\u0000\u0000\u0300\u0301\u0005a\u0000"+
+ "\u0000\u0301\u0306\u0003\u009aM\u0000\u0302\u0303\u0005>\u0000\u0000\u0303"+
+ "\u0305\u0003\u009aM\u0000\u0304\u0302\u0001\u0000\u0000\u0000\u0305\u0308"+
+ "\u0001\u0000\u0000\u0000\u0306\u0304\u0001\u0000\u0000\u0000\u0306\u0307"+
+ "\u0001\u0000\u0000\u0000\u0307\u0309\u0001\u0000\u0000\u0000\u0308\u0306"+
+ "\u0001\u0000\u0000\u0000\u0309\u030a\u0005b\u0000\u0000\u030a\u0317\u0001"+
+ "\u0000\u0000\u0000\u030b\u030c\u0005a\u0000\u0000\u030c\u0311\u0003\u00a2"+
+ "Q\u0000\u030d\u030e\u0005>\u0000\u0000\u030e\u0310\u0003\u00a2Q\u0000"+
+ "\u030f\u030d\u0001\u0000\u0000\u0000\u0310\u0313\u0001\u0000\u0000\u0000"+
+ "\u0311\u030f\u0001\u0000\u0000\u0000\u0311\u0312\u0001\u0000\u0000\u0000"+
+ "\u0312\u0314\u0001\u0000\u0000\u0000\u0313\u0311\u0001\u0000\u0000\u0000"+
+ "\u0314\u0315\u0005b\u0000\u0000\u0315\u0317\u0001\u0000\u0000\u0000\u0316"+
+ "\u02ec\u0001\u0000\u0000\u0000\u0316\u02ed\u0001\u0000\u0000\u0000\u0316"+
+ "\u02f0\u0001\u0000\u0000\u0000\u0316\u02f1\u0001\u0000\u0000\u0000\u0316"+
+ "\u02f2\u0001\u0000\u0000\u0000\u0316\u02f3\u0001\u0000\u0000\u0000\u0316"+
+ "\u02f4\u0001\u0000\u0000\u0000\u0316\u02f5\u0001\u0000\u0000\u0000\u0316"+
+ "\u0300\u0001\u0000\u0000\u0000\u0316\u030b\u0001\u0000\u0000\u0000\u0317"+
+ "\u0099\u0001\u0000\u0000\u0000\u0318\u0319\u0007\u0007\u0000\u0000\u0319"+
+ "\u009b\u0001\u0000\u0000\u0000\u031a\u031d\u0003\u009eO\u0000\u031b\u031d"+
+ "\u0003\u00a0P\u0000\u031c\u031a\u0001\u0000\u0000\u0000\u031c\u031b\u0001"+
+ "\u0000\u0000\u0000\u031d\u009d\u0001\u0000\u0000\u0000\u031e\u0320\u0007"+
+ "\u0005\u0000\u0000\u031f\u031e\u0001\u0000\u0000\u0000\u031f\u0320\u0001"+
+ "\u0000\u0000\u0000\u0320\u0321\u0001\u0000\u0000\u0000\u0321\u0322\u0005"+
+ "7\u0000\u0000\u0322\u009f\u0001\u0000\u0000\u0000\u0323\u0325\u0007\u0005"+
+ "\u0000\u0000\u0324\u0323\u0001\u0000\u0000\u0000\u0324\u0325\u0001\u0000"+
+ "\u0000\u0000\u0325\u0326\u0001\u0000\u0000\u0000\u0326\u0327\u00056\u0000"+
+ "\u0000\u0327\u00a1\u0001\u0000\u0000\u0000\u0328\u0329\u00055\u0000\u0000"+
+ "\u0329\u00a3\u0001\u0000\u0000\u0000\u032a\u032b\u0007\b\u0000\u0000\u032b"+
+ "\u00a5\u0001\u0000\u0000\u0000\u032c\u032d\u0007\t\u0000\u0000\u032d\u032e"+
+ "\u0005r\u0000\u0000\u032e\u032f\u0003\u00a8T\u0000\u032f\u0330\u0003\u00aa"+
+ "U\u0000\u0330\u00a7\u0001\u0000\u0000\u0000\u0331\u0332\u0003\u001c\u000e"+
+ "\u0000\u0332\u00a9\u0001\u0000\u0000\u0000\u0333\u0334\u0005J\u0000\u0000"+
+ "\u0334\u0339\u0003\u00acV\u0000\u0335\u0336\u0005>\u0000\u0000\u0336\u0338"+
+ "\u0003\u00acV\u0000\u0337\u0335\u0001\u0000\u0000\u0000\u0338\u033b\u0001"+
+ "\u0000\u0000\u0000\u0339\u0337\u0001\u0000\u0000\u0000\u0339\u033a\u0001"+
+ "\u0000\u0000\u0000\u033a\u00ab\u0001\u0000\u0000\u0000\u033b\u0339\u0001"+
+ "\u0000\u0000\u0000\u033c\u033d\u0003\u008aE\u0000\u033d\u00ad\u0001\u0000"+
+ "\u0000\u0000J\u00b9\u00c3\u00e0\u00ef\u00f5\u00fe\u0104\u0111\u0115\u0120"+
+ "\u0130\u0138\u013c\u0143\u0149\u0150\u0158\u0160\u0168\u016c\u0170\u0175"+
+ "\u0180\u0185\u0189\u0197\u01a2\u01a8\u01b6\u01cb\u01d3\u01d6\u01dd\u01e8"+
+ "\u01ef\u01f7\u0205\u020e\u021d\u0229\u0232\u023a\u0243\u024c\u0254\u0259"+
+ "\u0261\u0263\u0268\u026f\u0276\u027f\u0286\u028f\u0294\u0299\u02a3\u02a9"+
+ "\u02b1\u02b3\u02be\u02c5\u02d0\u02d5\u02d7\u02e3\u02fb\u0306\u0311\u0316"+
+ "\u031c\u031f\u0324\u0339";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
index 3fe4accec1c6b..4cb4d9dca79bc 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseListener.java
@@ -212,6 +212,18 @@ public class EsqlBaseParserBaseListener implements EsqlBaseParserListener {
* The default implementation does nothing.
*/
@Override public void exitLikeListExpression(EsqlBaseParser.LikeListExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
index 52aa6358da8fc..5a0b0fb6dc988 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserBaseVisitor.java
@@ -132,6 +132,13 @@ public class EsqlBaseParserBaseVisitor extends AbstractParseTreeVisitor im
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitLikeListExpression(EsqlBaseParser.LikeListExpressionContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
index 3adc147bdfb60..52780d6881abb 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserListener.java
@@ -199,6 +199,18 @@ public interface EsqlBaseParserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitLikeListExpression(EsqlBaseParser.LikeListExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by the {@code rlikeListExpression}
+ * labeled alternative in {@link EsqlBaseParser#regexBooleanExpression}.
+ * @param ctx the parse tree
+ */
+ void enterRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by the {@code rlikeListExpression}
+ * labeled alternative in {@link EsqlBaseParser#regexBooleanExpression}.
+ * @param ctx the parse tree
+ */
+ void exitRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx);
/**
* Enter a parse tree produced by {@link EsqlBaseParser#matchBooleanExpression}.
* @param ctx the parse tree
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
index 92f17c51ca30d..9cc686e7d88c2 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/EsqlBaseParserVisitor.java
@@ -126,6 +126,13 @@ public interface EsqlBaseParserVisitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitLikeListExpression(EsqlBaseParser.LikeListExpressionContext ctx);
+ /**
+ * Visit a parse tree produced by the {@code rlikeListExpression}
+ * labeled alternative in {@link EsqlBaseParser#regexBooleanExpression}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx);
/**
* Visit a parse tree produced by {@link EsqlBaseParser#matchBooleanExpression}.
* @param ctx the parse tree
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java
index 591c0d0ec794b..f8d263230f421 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/ExpressionBuilder.java
@@ -30,6 +30,7 @@
import org.elasticsearch.xpack.esql.core.expression.UnresolvedStar;
import org.elasticsearch.xpack.esql.core.expression.function.Function;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePattern;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePatternList;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.WildcardPattern;
import org.elasticsearch.xpack.esql.core.expression.predicate.regex.WildcardPatternList;
import org.elasticsearch.xpack.esql.core.tree.Source;
@@ -44,6 +45,7 @@
import org.elasticsearch.xpack.esql.expression.function.aggregate.FilteredExpression;
import org.elasticsearch.xpack.esql.expression.function.fulltext.MatchOperator;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLike;
+import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLikeList;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.WildcardLike;
import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.WildcardLikeList;
import org.elasticsearch.xpack.esql.expression.predicate.logical.And;
@@ -748,7 +750,7 @@ public Expression visitRlikeExpression(EsqlBaseParser.RlikeExpressionContext ctx
RLike rLike = new RLike(source, left, new RLikePattern(BytesRefs.toString(patternLiteral.fold(FoldContext.small()))));
return ctx.NOT() == null ? rLike : new Not(source, rLike);
} catch (InvalidArgumentException e) {
- throw new ParsingException(source, "Invalid pattern for LIKE [{}]: [{}]", patternLiteral, e.getMessage());
+ throw new ParsingException(source, "Invalid pattern for RLIKE [{}]: [{}]", patternLiteral, e.getMessage());
}
}
@@ -781,6 +783,21 @@ public Expression visitLikeListExpression(EsqlBaseParser.LikeListExpressionConte
return ctx.NOT() == null ? e : new Not(source, e);
}
+ @Override
+ public Expression visitRlikeListExpression(EsqlBaseParser.RlikeListExpressionContext ctx) {
+ Source source = source(ctx);
+ Expression left = expression(ctx.valueExpression());
+ List rLikePatterns = ctx.string()
+ .stream()
+ .map(x -> new RLikePattern(BytesRefs.toString(visitString(x).fold(FoldContext.small()))))
+ .toList();
+ // for now we will use the old WildcardLike function for one argument case to allow compatibility in mixed version deployments
+ Expression e = rLikePatterns.size() == 1
+ ? new RLike(source, left, rLikePatterns.getFirst())
+ : new RLikeList(source, left, new RLikePatternList(rLikePatterns));
+ return ctx.NOT() == null ? e : new Not(source, e);
+ }
+
@Override
public Order visitOrderExpression(EsqlBaseParser.OrderExpressionContext ctx) {
return new Order(
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListErrorTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListErrorTests.java
new file mode 100644
index 0000000000000..0e2fa024bda58
--- /dev/null
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListErrorTests.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.xpack.esql.expression.function.scalar.string;
+
+import org.elasticsearch.xpack.esql.core.expression.Expression;
+import org.elasticsearch.xpack.esql.core.tree.Source;
+import org.elasticsearch.xpack.esql.core.type.DataType;
+import org.elasticsearch.xpack.esql.expression.function.ErrorsForCasesWithoutExamplesTestCase;
+import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier;
+import org.hamcrest.Matcher;
+
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import static org.hamcrest.Matchers.equalTo;
+
+public class RLikeListErrorTests extends ErrorsForCasesWithoutExamplesTestCase {
+ @Override
+ protected List cases() {
+ return paramsToSuppliers(RLikeListTests.parameters());
+ }
+
+ @Override
+ protected Stream> testCandidates(List cases, Set> valid) {
+ /*
+ * We can't support certain signatures, and it's safe not to test them because
+ * you can't even build them.... The building comes directly from the parser
+ * and can only make certain types.
+ */
+ return super.testCandidates(cases, valid).filter(sig -> sig.get(1) == DataType.KEYWORD)
+ .filter(sig -> sig.size() > 2 && sig.get(2) == DataType.BOOLEAN);
+ }
+
+ @Override
+ protected Expression build(Source source, List args) {
+ return RLikeTests.buildRLike(logger, source, args);
+ }
+
+ @Override
+ protected Matcher expectedTypeErrorMatcher(List> validPerPosition, List signature) {
+ return equalTo(typeErrorMessage(false, validPerPosition, signature, (v, p) -> "string"));
+ }
+}
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListSerializationTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListSerializationTests.java
new file mode 100644
index 0000000000000..ff2dd31e2c832
--- /dev/null
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListSerializationTests.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.xpack.esql.expression.function.scalar.string;
+
+import org.elasticsearch.xpack.esql.core.expression.Expression;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePattern;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePatternList;
+import org.elasticsearch.xpack.esql.core.tree.Source;
+import org.elasticsearch.xpack.esql.expression.AbstractExpressionSerializationTests;
+import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLikeList;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class RLikeListSerializationTests extends AbstractExpressionSerializationTests {
+ @Override
+ protected RLikeList createTestInstance() {
+ Source source = randomSource();
+ Expression child = randomChild();
+ return new RLikeList(source, child, generateRandomPatternList());
+ }
+
+ @Override
+ protected RLikeList mutateInstance(RLikeList instance) throws IOException {
+ Source source = instance.source();
+ Expression child = instance.field();
+ List patterns = new ArrayList<>(instance.pattern().patternList());
+ int childToModify = randomIntBetween(0, patterns.size() - 1);
+ RLikePattern pattern = patterns.get(childToModify);
+ if (randomBoolean()) {
+ child = randomValueOtherThan(child, AbstractExpressionSerializationTests::randomChild);
+ } else {
+ pattern = randomValueOtherThan(pattern, () -> new RLikePattern(randomAlphaOfLength(4)));
+ }
+ patterns.set(childToModify, pattern);
+ return new RLikeList(source, child, new RLikePatternList(patterns));
+ }
+
+ private RLikePatternList generateRandomPatternList() {
+ int numChildren = randomIntBetween(1, 10); // Ensure at least one child
+ List patterns = new ArrayList<>(numChildren);
+ for (int i = 0; i < numChildren; i++) {
+ RLikePattern pattern = new RLikePattern(randomAlphaOfLength(4));
+ patterns.add(pattern);
+ }
+ return new RLikePatternList(patterns);
+ }
+}
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListTests.java
new file mode 100644
index 0000000000000..d18c81502117d
--- /dev/null
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/string/RLikeListTests.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0; you may not use this file except in compliance with the Elastic License
+ * 2.0.
+ */
+
+package org.elasticsearch.xpack.esql.expression.function.scalar.string;
+
+import com.carrotsearch.randomizedtesting.annotations.Name;
+import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.lucene.util.BytesRef;
+import org.elasticsearch.xpack.esql.core.expression.Expression;
+import org.elasticsearch.xpack.esql.core.expression.FoldContext;
+import org.elasticsearch.xpack.esql.core.expression.Literal;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePattern;
+import org.elasticsearch.xpack.esql.core.expression.predicate.regex.RLikePatternList;
+import org.elasticsearch.xpack.esql.core.tree.Source;
+import org.elasticsearch.xpack.esql.core.type.DataType;
+import org.elasticsearch.xpack.esql.expression.function.AbstractScalarFunctionTestCase;
+import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier;
+import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLike;
+import org.elasticsearch.xpack.esql.expression.function.scalar.string.regex.RLikeList;
+import org.junit.AfterClass;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+
+import static org.elasticsearch.xpack.esql.core.util.TestUtils.randomCasing;
+import static org.elasticsearch.xpack.esql.expression.function.DocsV3Support.renderNegatedOperator;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.nullValue;
+import static org.hamcrest.Matchers.startsWith;
+
+public class RLikeListTests extends AbstractScalarFunctionTestCase {
+ public RLikeListTests(@Name("TestCase") Supplier testCaseSupplier) {
+ this.testCase = testCaseSupplier.get();
+ }
+
+ @ParametersFactory
+ public static Iterable